Profil Startup adalah subset Profil Dasar Pengukuran. Profil Startup digunakan oleh sistem build untuk lebih mengoptimalkan class dan metode yang ada di dalamnya dengan meningkatkan tata letak kode dalam file DEX APK Anda. Dengan Profil Startup, startup aplikasi Anda akan berjalan hingga 15% lebih cepat dibandingkan dengan Profil Dasar Pengukuran saja.
![](https://developer.android.com/static/topic/performance/images/dex-layout-optimizations.png?authuser=8&hl=id)
Persyaratan
Sebaiknya gunakan Profil Startup dengan alat berikut:
- Jetpack Macrobenchmark 1.2.0 atau yang lebih baru
- Plugin Android Gradle 8.2 atau yang lebih tinggi
- Android Studio Iguana atau yang lebih baru
Selain itu, Anda memerlukan setelan berikut di aplikasi Anda:
- R8 dalam keadaan aktif. Untuk build rilis, tetapkan
isMinifyEnabled = true
. - Pengoptimalan tata letak DEX diaktifkan. Dalam blok
baselineProfile {}
file build modul aplikasi, tetapkandexLayoutOptimization = true
.
Membuat Profil Startup
Android Studio membuat Profil Startup bersama Profil Dasar Pengukuran saat Anda menggunakan template Generator Profil Dasar Pengukuran default.
Langkah-langkah umum untuk membuat dan membuat Profil Startup sama dengan langkah-langkah untuk membuat Profil Dasar Pengukuran.
Cara default untuk membuat Profil Startup adalah dengan menggunakan template modul
Generator Profil Dasar Pengukuran dari dalam Android Studio. Hal ini mencakup interaksi
startup yang membentuk Profil Startup dasar. Untuk meningkatkan Profil Startup ini
dengan lebih banyak Perjalanan Penting Pengguna (CUJ), tambahkan CUJ startup aplikasi Anda ke blok rule
dengan includeInStartupProfile
ditetapkan ke true
. Untuk aplikasi sederhana, meluncurkan
MainActivity
aplikasi mungkin cukup. Untuk aplikasi yang lebih kompleks, pertimbangkan
untuk menambahkan titik entri paling umum ke aplikasi Anda, seperti memulai aplikasi dari
layar utama atau meluncurkan ke deep link.
Cuplikan kode berikut menunjukkan generator Profil Dasar Pengukuran (secara default file
BaselineProfileGenerator.kt
) yang mencakup memulai aplikasi dari
layar utama dan meluncurkan ke deep link. Deep link langsung mengarah ke
feed berita aplikasi, bukan layar utama aplikasi.
@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")
})
}
}
}
Jalankan konfigurasi Generate Baseline Profile for app dan temukan
aturan Profil Startup di
src/<variant>/generated/baselineProfiles/startup-prof.txt
.
Konfirmasi pengoptimalan Profil Startup
Untuk mengonfirmasi pengoptimalan tata letak DEX, gunakan Android Studio untuk membuka APK dan
memverifikasi class dalam file DEX. Pastikan classes.dex
utama tidak
terisi sepenuhnya. Jika aplikasi terdiri dari satu file DEX, Anda dapat memeriksa
apakah aplikasi berisi dua file DEX setelah mengaktifkan Profil Startup.
Android Studio memperingatkan Anda jika class startup tidak muat dalam satu file DEX.
Untuk mendapatkan informasi diagnostik yang menyertakan jumlah metode non-startup di
class startup, pastikan compiler R8 diupdate ke setidaknya versi
8.3.36-dev dengan membuat perubahan berikut pada file settings.gradle
saat
Anda menerapkan Profil Startup:
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") } } }
Groovy
pluginManagement { buildscript { repositories { mavenCentral() maven { url uri('https://storage.googleapis.com/r8-releases/raw') } } dependencies { classpath 'com.android.tools:r8:8.3.6-dev" } } }
Pastikan Anda menambahkan --info
setelah
assembleRelease
di perintah berikut saat membangun aplikasi dengan Gradle.
./gradlew assembleRelease --info
Diagnostik kemudian dicetak ke terminal.
Jika aplikasi Anda atau library apa pun mereferensikan API desugaring, implementasi kompatibilitas paket class ini selalu terdapat dalam file DEX terakhir. File DEX terakhir yang di-desugaring ini tidak berpartisipasi dalam pengoptimalan tata letak DEX.
Direkomendasikan untuk Anda
- Catatan: teks link ditampilkan saat JavaScript nonaktif
- Membuat Profil Dasar Pengukuran {:#creating-profile-rules}
- Profil Dasar Pengukuran {:#baseline-profiles}
- Menulis Microbenchmark