Anda dapat mengoptimalkan paket tertentu menggunakan R8 dengan packageScope. Langkah ini dirancang sebagai langkah pertama opsional untuk aplikasi yang belum menggunakan R8 dan tidak direkomendasikan untuk aplikasi yang sudah menggunakan R8.
Mempertimbangkan 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 lebih baik atau, jika menggunakan
mode kompatibilitas, dengan bermigrasi ke mode penuh R8.
Untuk aplikasi yang belum menggunakan R8, tetapi sedang mengadopsi R8, gunakan packageScope untuk
mengelola transisi secara bertahap. Karena R8 menerapkan pengoptimalan canggih yang dapat mengubah perilaku aplikasi, mencakup pengoptimalan ini ke paket tertentu yang aman untuk dioptimalkan—seperti AndroidX dan Kotlin—memungkinkan Anda mendapatkan peningkatan performa dengan risiko minimal. Setelah aplikasi stabil, Anda dapat memperluas pengoptimalan ini secara bertahap ke seluruh codebase dan dependensi, serta menguji stabilitas di setiap tahap.
Prasyarat
Menggunakan R8 dengan packageScope memerlukan Android Gradle Plugin 9.0 atau yang lebih baru.
Mengonfigurasi pengoptimalan
Untuk mengaktifkan pengoptimalan dengan packageScope, selesaikan langkah-langkah berikut.
Memilih pustaka yang akan dioptimalkan
Identifikasi library yang akan dioptimalkan. Sebaiknya mulai dengan library AndroidX dan
Kotlin androidx.**, kotlin.**, dan kotlinx.** karena ini adalah
library stabil yang telah dikonfigurasi untuk kompatibilitas R8.
Mengaktifkan dukungan untuk menggunakan R8 dengan packageScope
Tambahkan kode berikut ke file gradle.properties project Anda:
android.r8.gradual.support=true
Menyiapkan blok pengoptimalan
Di 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, bungkus daftar paket Anda dalam setOf().
Kotlin
android { buildTypes { release { proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"),"proguard-rules.pro") optimization { enable = true packageScope = setOf("androidx.**","kotlin.**", "kotlinx.**") } } } }
Groovy
android { buildTypes { release { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 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.
Beralih dari mengoptimalkan paket tertentu ke mengoptimalkan seluruh aplikasi Anda
Untuk memaksimalkan manfaat pengoptimalan, Anda harus berupaya melakukan transisi secara bertahap dari
penggunaan packageScope ke penggunaan R8 di seluruh aplikasi Anda. Proses ini melibatkan
perluasan cakupan pengoptimalan secara bertahap:
- Mulai dengan library yang stabil. Mulailah dengan hanya menyertakan library yang banyak digunakan dan stabil yang kompatibel dengan pengoptimalan R8 dalam daftar
packageScope. Mulai dengan library AndroidX dan Kotlinandroidx.**,kotlin.**, dankotlinx.**. - Tambahkan paket secara inkremental. 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 andal lainnya sepertiOkHttp(misalnya,okhttp3.**danokio.**). Prioritaskan library yang tidak melibatkan refleksi, serialisasi, atau panggilan kode native (JNI) yang berat. - Prioritaskan berdasarkan ukuran paket. Gunakan APK Analyzer Android Studio untuk mengidentifikasi kontributor terbesar pada ukuran aplikasi Anda.
1. Buat AAB atau APK rilis dengan R8 dinonaktifkan.
1. Buka di Penganalisis dan periksa file
dex. 1. Urutkan paket menurut ukuran. Paket terbesar menawarkan laba atas investasi (ROI) tertinggi untuk pengoptimalan. Menargetkan yang pertama memberi Anda pengurangan ukuran 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 menyelesaikan regresi atau perilaku yang tidak terduga.
- Tambahkan paket aplikasi terakhir. Jika paket aplikasi Anda tidak banyak menggunakan refleksi, sertakan paket aplikasi dalam
packageScopedan tambahkan aturan keep secara bertahap sesuai kebutuhan. Jika paket aplikasi Anda menggunakan banyak refleksi, sertakan paket dalampackageScopedan tambahkan aturan penyimpanan di seluruh paket untuk paket yang diperlukan. Lakukan iterasi pada aturan penyimpanan untuk menyaringnya. - Beralihlah 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.