Anda dapat mengoptimalkan paket tertentu menggunakan R8 dengan
packageScope. Fitur ini dirancang sebagai langkah pertama opsional untuk aplikasi yang belum menggunakan R8 dan tidak direkomendasikan untuk aplikasi yang sudah menggunakan R8.
Pertimbangkan apakah akan menggunakan packageScope
Jika aplikasi Anda sudah menggunakan R8, jangan gunakan packageScope, karena konfigurasi ini kurang optimal dalam hal performa dan ukuran aplikasi. Sebagai gantinya, tingkatkan
konfigurasi R8 aplikasi Anda dengan aturan keep yang ditingkatkan atau, jika menggunakan
mode kompatibilitas, dengan bermigrasi ke mode penuh R8.
Aplikasi yang belum menggunakan R8, tetapi mengadopsi R8, dapat menggunakan packageScope untuk mengelola transisi secara bertahap. Karena R8 menerapkan pengoptimalan yang efektif dan dapat mengubah perilaku aplikasi, cakupan pengoptimalan ini ke paket tertentu yang aman untuk dioptimalkan—seperti AndroidX dan Kotlin—memungkinkan Anda mendapatkan peningkatan performa dengan risiko minimal. Setelah aplikasi Anda stabil, Anda dapat secara bertahap memperluas pengoptimalan ini ke bagian kode dan dependensi lainnya, dengan menguji stabilitas di setiap tahap.
Prasyarat
Menggunakan R8 dengan packageScope memerlukan:
- Plugin Android Gradle 9.0 atau yang lebih baru.
- R8 dalam mode penuh, dan bukan mode kompatibilitas.
Mengonfigurasi pengoptimalan
Untuk mengaktifkan pengoptimalan dengan packageScope, selesaikan langkah-langkah berikut.
Memilih library yang akan dioptimalkan
Identifikasi library yang akan dioptimalkan. Sebaiknya mulai dengan library AndroidX dan Kotlin androidx.**, kotlin.**, dan kotlinx.** karena library ini stabil dan telah dikonfigurasi untuk kompatibilitas R8.
Mengaktifkan dukungan untuk menggunakan R8 dengan packageScope
Tambahkan hal berikut ke file gradle.properties project Anda:
android.r8.gradual.support=true
Menyiapkan blok pengoptimalan
Dalam file build.gradle.kts (atau build.gradle) tingkat modul, tambahkan blok
optimization ke konfigurasi build rilis Anda. Di dalam blok ini, gunakan packageScope untuk mencantumkan paket tertentu yang ingin Anda optimalkan. Dalam file build.gradle.kts, gabungkan daftar paket Anda dalam setOf().
Kotlin
android {
buildTypes {
release {
optimization {
enable = true
packageScope = setOf("androidx.**","kotlin.**", "kotlinx.**")
}
}
}
}
Groovy
android {
buildTypes {
release {
optimization {
enable = true
packageScope = ["androidx.**", "kotlin.**", "kotlinx.**"]
}
}
}
}
Menguji pengoptimalan
Setelah menerapkan atau memperbarui deklarasi packageScope, uji aplikasi
Anda secara menyeluruh untuk memverifikasi bahwa tidak ada error atau perubahan perilaku yang tidak terduga yang
terjadi.
Beralih dari mengoptimalkan paket tertentu ke mengoptimalkan seluruh aplikasi Anda
Untuk memaksimalkan manfaat pengoptimalan, Anda harus secara bertahap beralih dari menggunakan packageScope ke menggunakan R8 di seluruh aplikasi Anda. Proses ini melibatkan perluasan cakupan pengoptimalan secara bertahap:
- Mulai dengan library yang stabil. Mulai dengan hanya menyertakan library stabil yang banyak digunakan dan kompatibel dengan pengoptimalan R8 dalam daftar
packageScope. Mulai dengan library AndroidX dan Kotlinandroidx.**,kotlin.**, dankotlinx.**. - Tambahkan paket secara bertahap. Tambahkan awalan paket baru secara bertahap ke
packageScope:- Menilai dependensi. Tinjau library aplikasi Anda. Kandidat yang baik untuk ditambahkan ke daftar
packageScopemencakup library Google resmi (misalnya,com.google.**) dan library tangguh lainnya sepertiOkHttp(misalnya,okhttp3.**danokio.**). Prioritaskan library yang tidak melibatkan panggilan kode native, serialisasi, atau refleksi yang berat (JNI). - Prioritaskan berdasarkan ukuran paket. Gunakan APK Analyzer Android Studio untuk mengidentifikasi kontributor terbesar terhadap ukuran aplikasi Anda.
- Build AAB atau APK rilis dengan R8 dinonaktifkan.
- Buka di Analyzer dan periksa file
dex. - Urutkan paket berdasarkan ukuran. Paket terbesar menawarkan laba atas investasi (ROI) tertinggi untuk pengoptimalan. Menargetkan paket ini terlebih dahulu akan memberi Anda pengurangan ukuran yang paling signifikan di awal proses, selama library ini tidak memiliki aturan keep yang terlalu luas. Lihat Memilih library dengan bijak untuk mengetahui informasi selengkapnya.
- Menilai dependensi. Tinjau library aplikasi Anda. Kandidat yang baik untuk ditambahkan ke daftar
- Verifikasi perubahan perilaku. Setelah menambahkan setiap awalan paket baru, lakukan pengujian komprehensif untuk mendeteksi dan mengatasi regresi atau perilaku yang tidak terduga.
- Tambahkan paket aplikasi terakhir. Jika paket aplikasi Anda tidak menggunakan banyak refleksi, sertakan paket aplikasi di
packageScopedan tambahkan aturan keep secara bertahap sesuai kebutuhan. Jika paket aplikasi Anda menggunakan banyak refleksi, sertakan paket dipackageScopedan tambahkan aturan keep di seluruh paket untuk paket yang diperlukan. Ulangi aturan keep untuk menyempurnakannya. - Beralih ke penggunaan R8 di seluruh aplikasi Anda. Setelah sebagian besar dependensi aplikasi Anda disertakan dalam deklarasi
packageScopedan aplikasi Anda stabil, hapuspackageScopeuntuk mengoptimalkan seluruh aplikasi Anda dalam mode penuh.