Başlangıç profilleri, temel profillerin bir alt kümesidir. Başlangıç profilleri, APK'nızın DEX dosyalarındaki kodun 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, uygulamanızın başlatılması genellikle yalnızca temel profillerle olduğundan% 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ınlanan derlemeniz için
isMinifyEnabled = trueayarı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. AGP'nin 8.1 ile 8.2 arasındaki sürümlerinde, uygulama modülünün derleme dosyasının
baselineProfile {}bloğundadexLayoutOptimization = truedeğ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. Bu, temel bir başlangıç profili oluşturan başlangıç etkileşimlerini içerir. Bu başlangıç profilini daha fazla kritik kullanıcı yolculuğu (CUJ) ile zenginleştirmek için uygulama başlangıcı CUJ'lerinizi rule bloğuna includeInStartupProfile = true olarak ayarlayarak ekleyin. Basit uygulamalarda, uygulamanın MainActivity başlatılması yeterli olabilir. Daha karmaşık uygulamalarda, uygulamanıza 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şlatmayı ve derin bağlantı üzerinden başlatmayı 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
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 giriş yaptıktan sonra gönderilir. Bu, en temel başlangıç 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:
- Ana başlatıcı etkinliği
- Uygulama başlatmayı tetikleyen bildirimler
- İsteğe bağlı başlatıcı etkinlikleri
Bu listeyi yukarıdan aşağıya doğru çalışın ve classes.dex dolmadan durun. Daha fazla yolculuğu kapsamak için kodu başlangıç yolundan çıkarın ve daha fazla yolculuk ekleyin. Kodu başlangıç yolundan çıkarmak için uygulama başlangıcı sırasında Perfetto izlerini inceleyin ve uzun süren işlemleri arayın. Uygulama başlangıcı sırasında yöntem çağrılarına ilişkin otomatikleştirilebilir ve eksiksiz bir görünüm için yöntem izleme etkin durumdayken makro karşılaştırma testi de kullanabilirsiniz.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir.
- Temel profiller oluşturma {:#creating-profile-rules}
- Temel profiller {:#baseline-profiles}
- Mikro karşılaştırma testi yazma