Sebagai developer aplikasi, Anda dapat otomatis membuat profil untuk setiap rilis
aplikasi menggunakan library Jetpack
Macrobenchmark dan
BaselineProfileRule
. Sebaiknya gunakan
com.android.tools.build:gradle:7.4.1
atau versi lebih tinggi yang
dilengkapi dengan peningkatan build saat menggunakan Profil Dasar Pengukuran.
Menentukan generator Profil Dasar Pengukuran
Untuk membuat Profil Dasar Pengukuran menggunakan library Macrobenchmark:
Siapkan modul Macrobenchmark dalam project Gradle Anda.
Tentukan pengujian baru bernama
BaselineProfileGenerator
yang terlihat seperti:@OptIn(ExperimentalBaselineProfilesApi::class) class BaselineProfileGenerator { @get:Rule val baselineProfileRule = BaselineProfileRule() @Test fun startup() = baselineProfileRule.collectBaselineProfile( packageName = "com.example.app", profileBlock = { startActivityAndWait() } ) }
Generator dapat berisi interaksi dengan aplikasi Anda di luar startup aplikasi. Hal ini memungkinkan Anda mengoptimalkan performa runtime aplikasi, seperti men-scroll daftar, menjalankan animasi, menavigasi dalam Aktivitas, dan lainnya. Lihat beberapa contoh lain pada pengujian yang menggunakan
@BaselineProfileRule
untuk meningkatkan perjalanan penting pengguna.(Opsional) Anda harus menonaktifkan obfuscation saat membuat Profil Dasar Pengukuran. Anda dapat melakukannya dengan membuat file Proguard lain di modul app dan menambahkan
-dontobfuscate
, hanya untuk jenis buildbenchmark
yang bertanggung jawab untuk membuat profil.Kotlin
buildTypes { val benchmark by creating { // Only use benchmark proguard rules proguardFiles("benchmark-rules.pro") // ... } }
Groovy
buildTypes { benchmark { // Only use benchmark proguard rules proguardFiles 'benchmark-rules.pro' // ... } }
Membuat Profil Dasar Pengukuran
Jalankan generator sebagai pengujian berinstrumen pada perangkat fisik yang di-root, emulator, atau perangkat yang dikelola Gradle. Untuk menyiapkan perangkat terkelola, buka file
build.gradle.kts
dan dalam blok konfigurasitestOptions
, tambahkanmanagedDevices
,devices
, lalu buat definisi emulator Anda. Pastikan untuk menggunakanaosp
sebagaisystemImageSource
karena Anda memerlukan akses root untuk generator Profil Dasar Pengukuran.Kotlin
testOptions { managedDevices { devices { create ("pixel6Api31", ManagedVirtualDevice::class) { device = "Pixel 6" apiLevel = 31 systemImageSource = "aosp" } } } }
Groovy
testOptions { managedDevices { devices { pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice) { device = "Pixel 6" apiLevel = 31 systemImageSource = "aosp" } } } }
Gradle membuat tugas yang diperlukan berdasarkan nama perangkat yang dipilih dan varian build yang tersedia di modul. Formatnya adalah
[emulator_name][flavor][build type]AndroidTest
. Tugas ini dapat dijalankan dari terminal seperti ini:./gradlew :benchmark:pixel6Api31BenchmarkAndroidTest
Menerapkan aturan yang dibuat
Generator Profil Dasar Pengukuran membuat file teks yang dapat dibaca manusia (HRF) di perangkat dan juga menyalinnya ke mesin host Anda. Ikuti langkah-langkah berikut untuk menerapkan profil yang dihasilkan ke kode Anda:
Temukan di folder build modul tempat Anda membuat profil di:
[module]/build/outputs/managed_device_android_test_additional_output/[device]
.Profil mengikuti pola penamaan
[class name]-[test method name]-baseline-prof.txt
, yang terlihat seperti ini:BaselineProfileGenerator-startup-baseline-prof.txt
.Salin profil yang dihasilkan ke
src/main/
modul aplikasi Anda, bersamaAndroidManifest.xml
, dan ganti nama file menjadibaseline-prof.txt
.Tambahkan dependensi ke library ProfileInstaller di
build.gradle
aplikasi Anda untuk mengaktifkan kompilasi Profil Dasar Pengukuran lokal tempat Profil Cloud tidak tersedia. Ini adalah satu-satunya cara untuk melakukan sideload Profil Dasar Pengukuran secara lokal.dependencies { implementation("androidx.profileinstaller:profileinstaller:1.2.2") }
Buat versi produksi aplikasi Anda, saat aturan HRF yang berlaku dikompilasi menjadi bentuk biner dan disertakan dalam APK atau AAB. Kemudian, distribusikan aplikasi seperti biasa.
Catatan tambahan
Saat membuat Profil Baseline, ada beberapa hal tambahan yang perlu diperhatikan:
Profil Dasar Pengukuran yang Dikompilasi harus lebih kecil dari 1,5 MB (ini tidak berlaku untuk format teks di file sumber Anda, yang biasanya jauh lebih besar sebelum kompilasi). Anda dapat memverifikasi ukuran profil dasar pengukuran biner dengan menemukannya di artefak output di bagian
assets/dexopt/baseline.prof
untuk APK atauBUNDLE-METADATA/com.android.tools.build.profiles/baseline.prof
untuk AAB.Aturan luas yang mengompilasi terlalu banyak aplikasi dapat memperlambat startup karena peningkatan akses disk. Jika baru saja menggunakan Profil Dasar Pengukuran, Anda tidak perlu mengkhawatirkannya. Namun, saat mulai menambahkan banyak1 perjalanan, Anda harus menguji performa aplikasi dengan mencoba profil yang berbeda dan memastikan performanya tidak regresi dengan penambahan.
Codelab
Memeriksa performa aplikasi dengan Macrobenchmark
Meningkatkan performa aplikasi dengan Profil Dasar Pengukuran
-
Bergantung pada ukuran aplikasi dan jumlah perjalanan. ↩