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.
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çindexLayoutOptimization = 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:
- Ana başlatıcı etkinliği
- Uygulama başlatmayı tetikleyen bildirimler
- İ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.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Temel Profiller Oluşturma {:#create-profile-rules}
- Temel Profiller {:#baseline-profile}
- Mikro Karşılaştırma Yazma