Başlangıç Profili Oluşturma

Başlangıç Profilleri, Temel Profillerin bir alt kümesidir. Başlangıç Profilleri kullanılıyor sınıfları ve yöntemleri daha da optimize etmek için derleme sistemi tarafından APK'nızın DEX dosyalarındaki kod düzenini iyileştirerek. Başlatma profilleri sayesinde uygulamanızın başlatılması genellikle yalnızca temel profillere kıyasla %15 ila %30 daha hızlıdır.

Şekil 1. DEX düzeninden kod yerleşimi iyileştirmesi optimizasyon yapmasına yardımcı olur.

Gereksinimler

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

  • Jetpack Macrobenchmark 1.2.0 veya üzeri
  • Android Gradle Plugin 8.2 veya sonraki sürümler
  • Android Studio Iguana veya sonraki sürümler

Ayrıca, uygulamanızda aşağıdaki ayarlara sahip olmanız gerekir:

  • R8 etkinleştirildi. Sürüm derlemeniz için isMinifyEnabled = true
  • DEX düzen optimizasyonları etkin. Uygulama modülünün derleme dosyasının baselineProfile {} bloğunda dexLayoutOptimization = true değerini ayarlayın.

Başlangıç Profili oluşturun

Android Studio, aşağıdaki işlemleri yaptığınızda Temel Profil ile birlikte bir Başlangıç Profili oluşturur: Varsayılan Temel Profil Oluşturucu şablonunu kullanın.

Başlangıç Profili oluşturmaya ve oluşturmaya ilişkin genel adımlar aşağıdakilerle aynıdır: bir Temel Profil oluşturun.

Başlangıç Profili oluşturmanın varsayılan yolu Temel Profil kullanmaktır Android Studio içinden oluşturma aracı modülü şablonu. Buna startup dahildir etkileşimlerine değer katarlar. Bu Başlangıç Profili'ni genişletmek için Daha fazla Kritik Kullanıcı Seyahati (CUJ) içeren uygulama başlatma CUJ'lerini rule includeInStartupProfile ile blok true olarak ayarlandı. Basit uygulamalar için uygulamanın MainActivity değeri yeterli olabilir. Daha karmaşık uygulamalar için en yaygın giriş noktalarını (ör. uygulamayı ana ekranda veya derin bağlantıda oturum açarak.

Aşağıdaki kod snippet'i bir Temel Profil oluşturma aracını (varsayılan olarak BaselineProfileGenerator.kt dosyası) derin bağlantı açılır. Derin bağlantı doğrudan uygulamanın haber feed'inde yer alır.

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

    @get:Rule
    val rule = BaselineProfileRule()

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

Uygulama için Temel Profil oluştur yapılandırmasını çalıştırın ve Başlangıç Profili kuralları: src/<variant>/generated/baselineProfiles/startup-prof.txt.

Başlangıç Profilleri optimizasyonunu onaylama

DEX düzen optimizasyonunu onaylamak için Android Studio'yu kullanarak APK'yı açın ve DEX dosyalarındaki sınıfları doğrular. Birincil classes.dex şöyle olmadığından emin olun: tamamen dolduruldu. Uygulamanız tek bir DEX dosyasından oluşuyorsa Başlangıç Profili etkinleştirildikten sonra uygulamanın iki DEX dosyası içerip içermediğini kontrol edin.

Başlangıç sınıfları tek bir DEX dosyasına sığmıyorsa Android Studio sizi uyarır. başlatma sınıfını kullanıyorsanız R8 derleyicisinin en az settings.gradle dosyasında aşağıdaki değişiklikleri yaparak Başlangıç Profili'ni uygularsınız:

Kotlin

pluginManagement {
    buildscript {
        repositories {
            mavenCentral()
            maven {
                url = uri("https://storage.googleapis.com/r8-releases/raw")
            }
        }
        dependencies {
            classpath("com.android.tools:r8:8.3.6-dev")
        }
    }
}

Eski

pluginManagement {
    buildscript {
        repositories {
            mavenCentral()
            maven {
                url uri('https://storage.googleapis.com/r8-releases/raw')
            }
        }
        dependencies {
            classpath 'com.android.tools:r8:8.3.6-dev"
        }
    }
}

Şu tarihten sonra --info eklediğinizden emin olun: assembleRelease kullanabilirsiniz.

./gradlew assembleRelease --info

Teşhis daha sonra terminale yazdırılır.

Uygulamanız veya kitaplıklar, azaltılmış API'lere başvuruda bulunuyorsa paket halinde bu sınıfların uyumluluk uygulamaları her zaman DEX dosyası olarak kaydedin. Bu sadeleştirilmiş son DEX dosyası, DEX düzeninde yer almıyor optimize edebilirsiniz.

Başlangıç profili oluştururken dikkat edilmesi gereken noktalar

Bir başlangıç profilinin sınıflarının ve yöntemlerinin çıktısı, ilk sınıflar.dex dosyasını seçin. Bu, tüm temel profil yolculuklarının startup profili yolculukları da olmalıdır.

Startup profili oluştururken hangi kullanıcı yolculuklarının kapsanacağına karar vermek için aşağıdakileri göz önünde bulundurun: uygulamayı başlatan platform. Bu genellikle başlatıcıdan ve kullanıcı giriş yaptıktan sonra aktif olur. Bu, en temel taban profil yolculuğudur.

İlk kullanım alanı ele alındıktan sonra uygulama başlatma için kullanıcı dönüşüm hunisini takip edin. Uygulama başlangıç dönüşüm hunileri birçok durumda aşağıdaki listeyi izler:

  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 baştan başlatın ve sınıflar.dex dolmadan önce durun. Kapanacak daha fazla yolculuk yapmak isterseniz, kodu başlangıç yolundan teşekkür ederiz. Kodu başlangıç yolunun dışına taşımak için uygulama başlatılırken Perfetto izlerini inceleyin ve uzun süreli işlemlere odaklanın. Ayrıca, bir macrobenchmark da kullanabilirsiniz. yöntem izleme etkinken özelliğini kullanın.