Profil Startup adalah subset dari 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 biasanya antara 15% dan 30% lebih cepat daripada dengan Dasar Profil saja.
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:
- R8 diaktifkan. Untuk build rilis, setel
isMinifyEnabled = true
. - Pengoptimalan tata letak DEX diaktifkan. Di blok
baselineProfile {}
elemen file build modul aplikasi, seteldexLayoutOptimization = true
.
Membuat Profil Startup
Android Studio membuat Profil Startup bersama dengan Profil Dasar Pengukuran saat Anda menggunakan template Generator Profil Dasar Pengukuran default.
Langkah-langkah umum untuk membuat dan menghasilkan Profil Startup sama dengan langkah-langkah untuk membuat Profil Dasar Pengukuran.
Cara default untuk membuat Profil Startup adalah dengan menggunakan Profil Dasar Pengukuran
Template modul generator dari dalam Android Studio. Hal ini mencakup startup
interaksi yang membentuk
Profil Startup dasar. Untuk meningkatkan Profil Startup ini
dengan lebih banyak Perjalanan Penting Pengguna (CUJ), tambahkan CUJ startup aplikasi Anda ke rule
blok dengan includeInStartupProfile
disetel ke true
. Untuk aplikasi sederhana, meluncurkan
MainActivity
aplikasi mungkin sudah cukup. Untuk aplikasi yang lebih kompleks, pertimbangkan
menambahkan titik entri yang paling umum ke dalam aplikasi Anda, seperti memulai aplikasi dari
layar utama atau meluncurkannya ke dalam deep link.
Cuplikan kode berikut menunjukkan generator Profil Dasar Pengukuran (secara default
BaselineProfileGenerator.kt
) yang mencakup memulai aplikasi dari
layar utama dan meluncurkan 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 Buat Profil Dasar Pengukuran untuk aplikasi 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 bukan
terisi penuh. Jika aplikasi Anda 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 mencakup jumlah metode non-startup dalam
class startup, pastikan compiler R8 telah diupdate setidaknya ke 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
setelahnya
assembleRelease
di perintah berikut saat mem-build dengan Gradle.
./gradlew assembleRelease --info
Diagnostik kemudian dicetak ke terminal.
Jika aplikasi Anda atau library apa pun mereferensikan API desugaring, implementasi kompatibilitas class ini selalu dimuat dalam file DEX. File DEX terakhir yang di-desugar ini tidak berpartisipasi dalam pengoptimalan tata letak DEX.
Pertimbangan untuk membuat profil startup
Output class dan metode profil startup dibatasi oleh ukuran file class.dex pertama. Ini berarti tidak semua perjalanan profil dasar pengukuran juga harus menjadi perjalanan profil startup.
Untuk memutuskan perjalanan pengguna yang akan dicakup saat membuat profil startup, pertimbangkan tempat sebagian besar pengguna memulai aplikasi. Biasanya itu berasal dari peluncur dan setelah mereka masuk. Ini juga merupakan profil dasar yang paling dasar perjalanan Anda.
Setelah kasus penggunaan pertama dibahas, ikuti funnel pengguna untuk aplikasi sistem dimulai. Dalam banyak kasus, funnel startup aplikasi mengikuti daftar ini:
- Aktivitas peluncur utama
- Notifikasi yang memicu startup aplikasi
- Aktivitas peluncur opsional
Kerjakan daftar ini dari atas dan hentikan sebelum class.dex penuh. Untuk menutupi lebih banyak perjalanan setelahnya, pindahkan kode dari jalur startup dan tambahkan lebih banyak perjalanan Anda. Untuk memindahkan kode dari jalur startup, periksa rekaman aktivitas Perfetto selama startup aplikasi dan mencari operasi yang berjalan lama. Anda juga dapat menggunakan macrobenchmark dengan pelacakan metode diaktifkan untuk tampilan lengkap panggilan metode yang dapat diotomatiskan selama startup aplikasi.
Direkomendasikan untuk Anda
- Catatan: teks link ditampilkan saat JavaScript nonaktif
- Membuat Profil Dasar Pengukuran {:#creating-profile-rules}
- Profil Dasar Pengukuran {:#baseline-profiles}
- Menulis Microbenchmark