Başlangıç Profili Oluşturma

Koşulları, oluşturma sürecini ve en iyi uygulamaları öğrenin. keywords_public: Startup Profiles, Baseline Profiles, app performance, APK optimization, DEX layout, Android Studio, Jetpack Macrobenchmark

Başlangıç Profilleri, Temel Profiller'in bir alt kümesidir. Başlangıç profilleri, APK'nızın DEX dosyalarındaki kod düzenini iyileştirerek içerdiği sınıfları ve yöntemleri daha da optimize etmek için derleme sistemi tarafından kullanılır. Başlangıç profilleriyle, uygulama başlangıcınız genellikle temel profillerle yalnızca% 15 ila% 30 daha hızlıdır.

Daha fazla bilgi için Başlangıç Profillerine Genel Bakış başlıklı makaleyi inceleyin.

Şartlar

Başlangıç profillerini aşağıdaki araçlarla kullanmanızı öneririz:

  • Jetpack Macrobenchmark 1.2.0 veya sonraki sürümler
  • Android Gradle eklentisi (AGP) 8.2 veya sonraki sürümler
  • Android Studio Iguana veya sonraki sürümler

Ayrıca uygulamanızda aşağıdaki ayarların bulunması gerekir:

  • R8 etkinleştirildi. Yayın derlemeniz için isMinifyEnabled = true ayarını yapın.
  • DEX düzeni optimizasyonları etkinleştirildi. Bu özellik yalnızca AGP 8.1'den itibaren kullanılabilir ve AGP 8.3'ten beri varsayılan olarak etkindir. 8.1 ile 8.2 arasındaki AGP sürümlerinde, uygulama modülünün derleme dosyasının baselineProfile {} bloğunda dexLayoutOptimization = true değerini ayarlayın.

Başlangıç Profili oluşturma

Android Studio, varsayılan temel profil oluşturucu şablonunu kullandığınızda temel profilin yanı sıra bir başlangıç profili de oluşturur.

Başlangıç profili oluşturma ve üretme adımları, temel profil oluşturma adımlarıyla aynıdır.

Başlangıç profili oluşturmanın varsayılan yolu, Android Studio'daki Baseline Profile Generator modül şablonunu kullanmaktır. Buna temel bir Başlangıç Profili oluşturan başlangıç etkileşimleri dahildir. Bu Başlangıç Profili'ni daha fazla Kritik Kullanıcı Yolculuğu (CUJ) ile zenginleştirmek için uygulama başlangıcı CUJ'lerinizi rule olarak ayarlanmış includeInStartupProfile içeren bir true bloğuna ekleyin. Basit uygulamalar için uygulamanın MainActivity başlatılması yeterli olabilir. Daha karmaşık uygulamalar için en yaygın giriş noktalarını (ör. uygulamayı ana ekrandan başlatma veya derin bağlantı ile başlatma) eklemeyi düşünebilirsiniz.

Aşağıdaki kod snippet'inde, uygulamanızı ana ekrandan başlatma ve derin bağlantı üzerinden başlatma işlemlerini içeren bir Baseline Profile oluşturucu (varsayılan olarak BaselineProfileGenerator.kt dosyası) gösterilmektedir. Derin bağlantı, uygulamanın ana ekranına değil doğrudan uygulamanın haber feed'ine gider.

@RunWith(AndroidJUnit4::class)
@LargeTest
class BaselineProfileGenerator {

    @get:Rule
    val rule = BaselineProfileRule()

    @Test
    fun generate() {
        rule.collect(
            packageName = "com.example.app",
            includeInStartupProfile = true
        ) {
            uiAutomator {
                // Launch directly into the NEWS_FEED using startActivityIntent
                startIntent(Intent().apply {
                    setPackage(packageName)
                    setAction("com.example.app.NEWS_FEED")
                })
        }
    }
}

Generate Baseline Profile for app yapılandırmasını çalıştırın ve Başlangıç Profili kurallarını src/<variant>/generated/baselineProfiles/startup-prof.txt konumunda bulun. Bu kurallar, AGP tarafından otomatik olarak kullanılır.

Başlangıç profili oluştururken dikkat edilmesi gerekenler

Bir başlangıç profili oluştururken hangi kullanıcı yolculuklarını ele alacağınıza karar vermek için kullanıcıların çoğunun uygulamayı nereden başlattığını göz önünde bulundurun. Genellikle başlatıcıdan ve kullanıcılar oturum açtıktan sonra yapılır. Bu, en temel taban çizgisi profili yolculuğudur.

İlk kullanım alanı ele alındıktan sonra uygulama başlatma için kullanıcı dönüşüm hunisini izleyin. Çoğu durumda, uygulama başlatma dönüşüm hunileri şu listeyi takip eder:

  1. Ana başlatıcı etkinliği
  2. Uygulama başlatmayı tetikleyen bildirimler
  3. İsteğe bağlı başlatıcı etkinlikleri

Bu listeyi en üstten başlayarak çalışın ve classes.dex dolmadan durun. Daha sonra daha fazla yolculuğu kapsamak için kodu başlangıç yolunun dışına taşıyın ve daha fazla yolculuk ekleyin. Kodu başlangıç yolunun dışına taşımak için uygulama başlangıcı sırasında Perfetto izlemelerini inceleyin ve uzun süren işlemleri arayın. Uygulama başlangıcı sırasında yöntem çağrılarıyla ilgili otomatikleştirilebilir ve eksiksiz bir görünüm için yöntem izleme etkinleştirilmiş bir makro karşılaştırma testi de kullanabilirsiniz.