Başlangıç Profili Oluşturma

Başlangıç Profilleri, Temel Profillerin bir alt kümesidir. Yapım sistemi, APK'nızın DEX dosyalarındaki kod düzenini iyileştirerek içerdikleri sınıfları ve yöntemleri daha da optimize etmek için başlangıç profillerini kullanır. Başlangıç Profilleri ile uygulama başlatma hızınız, Baseline'a kıyasla genellikle% 15 ila% 30 daha hızlıdır Yalnızca profiller.

Şekil 1. DEX düzeni optimizasyonundan kod yerelliği iyileştirme

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 da ihtiyacınız vardır:

  • R8 etkin. Yayın derlemeniz için isMinifyEnabled = true değerini ayarlayın.
  • DEX düzen optimizasyonları etkinleştirildi. Şu öğenin baselineProfile {} bloğunda: uygulama modülünün derleme dosyası için dexLayoutOptimization = true değerini ayarlayın.

Başlangıç Profili oluşturun

Android Studio, varsayılan Temel Profil Oluşturucu şablonunu kullandığınızda Temel Profil ile birlikte bir Başlangıç Profili oluşturur.

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 onaylayın

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.

Startup 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.

Başlangıç profili oluştururken hangi kullanıcı yolculuklarının kapsanacağına karar vermek için çoğu kullanıcının uygulamayı nerede başlattığını göz önünde bulundurun. Bu genellikle başlatıcıdan ve kullanıcı giriş yaptıktan sonra aktif olur. Bu aynı zamanda en temel temel profildir teşekkür ederiz.

İlk kullanım alanına bakıldıktan sonra uygulama için kullanıcı dönüşüm hunisini takip edin başlatma. 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. Daha sonra daha fazla yolculuğu kapsayacak şekilde kodu başlangıç yolundan çıkarın ve daha fazla yolculuk ekleyin. 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. Uygulamanın başlatılması sırasındaki yöntem çağrılarının otomatik olarak görüntülenebilmesi ve eksiksiz bir şekilde görülebilmesi için yöntem izlemenin etkinleştirildiği bir makro karşılaştırma da kullanabilirsiniz.