Başlangıç Profilleri, Temel Profillerin bir alt kümesidir. Başlangıç Profilleri, 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 derleme sistemi tarafından kullanılır. Başlangıç Profilleri ile uygulama başlatma işlemleriniz, yalnızca Temel Profillere kıyasla% 15'e kadar daha hızlıdır.
![](https://developer.android.com/static/topic/performance/images/dex-layout-optimizations.png?authuser=5&hl=tr)
Gereksinimler
Başlangıç Profillerini aşağıdaki araçlarla kullanmanızı öneririz:
- Jetpack Makrobenchmark 1.2.0 veya daha üstü
- Android Gradle Plugin 8.2 veya üstü
- Android Studio Iguana veya üstü
Ayrıca, uygulamanızda aşağıdaki ayarların bulunması gerekir:
- R8 etkin. Sürüm derlemeniz için
isMinifyEnabled = true
değerini ayarlayın. - DEX düzen optimizasyonları etkinleştirildi. Uygulama modülünün derleme dosyasının
baselineProfile {}
bloğundadexLayoutOptimization = 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, Temel Profil oluşturma adımlarıyla aynıdır.
Başlangıç Profili oluşturmanın varsayılan yolu, Android Studio içindeki Temel Profil Oluşturucu modül şablonunu kullanmaktır. Buna temel bir Başlangıç Profili oluşturan başlangıç etkileşimleri de dahildir. Bu Başlangıç Profili'ni daha fazla Kritik Kullanıcı Yolculukları (CUJ) ile genişletmek için uygulama başlatma CUJ'lerinizi, includeInStartupProfile
değeri true
olarak ayarlanmış bir rule
blokuna ekleyin. Basit uygulamalar için uygulamanın MainActivity
sürümünü başlatmak yeterli olabilir. Daha karmaşık uygulamalar için uygulamayı ana ekrandan başlatma veya derin bağlantı açma gibi en yaygın giriş noktalarını uygulamanıza ekleyebilirsiniz.
Aşağıdaki kod snippet'inde, uygulamanızın ana ekrandan başlatılmasını ve derin bağlantı olarak başlatılmasını içeren bir Temel Profil oluşturma aracı (varsayılan olarak BaselineProfileGenerator.kt
dosyası) gösterilmektedir. Derin bağlantı, doğrudan uygulamanın ana
ekranına değil, uygulamanın haber feed'ine yönlendirir.
@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 src/<variant>/generated/baselineProfiles/startup-prof.txt
konumunda Başlangıç Profili kurallarını bulun.
Başlangıç Profili 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ğrulayın. Birincil classes.dex
alanının tamamen doldurulmadığından emin olun. Uygulamanız tek bir DEX dosyasından oluşuyorsa Başlangıç Profili'ni etkinleştirdikten sonra uygulamanın iki DEX dosyası içerip içermediğini kontrol edebilirsiniz.
Android Studio, başlangıç sınıfları tek bir DEX dosyasına sığmazsa sizi uyarır.
Başlangıç sınıflarındaki başlangıç dışı yöntemlerin miktarını içeren teşhis bilgilerini almak için Başlangıç Profili'ni uygularken settings.gradle
dosyasında aşağıdaki değişiklikleri yaparak R8 derleyicisinin en az 8.3.36-dev sürümüne güncellendiğinden emin olun:
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") } } }
Modern
pluginManagement { buildscript { repositories { mavenCentral() maven { url uri('https://storage.googleapis.com/r8-releases/raw') } } dependencies { classpath 'com.android.tools:r8:8.3.6-dev" } } }
Gradle ile derleme yaparken aşağıdaki komutta assembleRelease
öğesinden sonra --info
eklediğinizden emin olun.
./gradlew assembleRelease --info
Ardından teşhis, terminale yazdırılır.
Uygulamanız veya herhangi bir kitaplık tatlandırıcı alınmış API'lere referans veriyorsa bu sınıfların paket hâlindeki uyumluluk uygulamaları her zaman son DEX dosyasında yer alır. Bu son DEX dosyası, DEX düzeni optimizasyonlarında yer almaz.
Sizin için önerilenler
- Not: Bağlantı metni JavaScript kapalıyken görüntülenir
- Temel Profiller Oluşturma {:#creating-profile-rules}
- Temel Profiller {:#baseline-profiles}
- Mikro Karşılaştırma Yazma