Mengoptimalkan dan meng-obfuscate kode menggunakan R8 atau alat alternatif (seperti pengoptimal yang kompatibel dengan ProGuard atau pasca-pemroses DEX sekunder) akan mengurangi ukuran DEX aplikasi, meningkatkan performa runtime, dan meminimalkan jejak memori.
File DEX, atau Dalvik Executable, berisi kode yang dikompilasi yang digunakan
untuk menjalankan aplikasi Anda. Biasanya mencakup kode Java dan Kotlin, bukan
kode C++ yang dikompilasi atau file .so.
Mengukur pengoptimalan kode R8 secara lokal
Untuk mengukur ukuran DEX yang tidak dikompresi paket aplikasi Anda secara lokal menggunakan command line, jalankan:
unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'
Jika aplikasi Anda dioptimalkan dengan R8, Anda dapat mengukur pengoptimalan, obfuscation, dan penyusutan paket aplikasi menggunakan R8 Configuration Analyzer. Untuk definisi mendetail tentang penyingkatan, pengoptimalan, dan obfuscation, lihat Menggunakan R8 Configuration Analyzer. Laporan R8 Configuration Analyzer juga disertakan dalam R8 Analyzer Skill.
Untuk memeriksa metadata pasca-pengoptimalan yang disematkan dalam app bundle Anda (untuk AGP versi 8.10 atau yang lebih tinggi), ekstrak file r8.json:
unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json
Memperbaiki masalah
Untuk mengatasi skor pengoptimalan kode DEX yang rendah, tinjau rekomendasi berdasarkan sistem build dan pengoptimal Anda:
Plugin Android Gradle dan R8
Untuk meningkatkan skor pengoptimalan kode DEX R8, lihat panduan di Meningkatkan pengoptimalan R8. Anda juga dapat menggunakan R8 Analyzer skill untuk mendapatkan panduan tambahan tentang cara mengoptimalkan aturan keep aplikasi Anda.
Sistem build non-R8 dan pasca-pemroses DEX
Jika pipeline build Anda menggunakan alat build kustom atau pemroses pasca-DEX sekunder, lakukan langkah-langkah berikut untuk meningkatkan pengoptimalan aplikasi Anda:
- Buka paket aplikasi Anda di Android Studio dan lihat di APK Analyzer.
- Pilih semua file
.dex. - Perhatikan baik-baik file dengan ukuran terbesar saat Anda mengalihkan tombol
"Deobfuscate names" (catatan: Anda harus
mengupload file
mapping.txt). Jika Anda menemukan beberapa file tersebut tetap berukuran besar saat di-obfuscate, kemungkinan file tersebut terpengaruh oleh aturan mempertahankan seluruh paket. - Lihat di file
proguard-rules.pro,configuration.txt, atau yang setara untuk pengoptimal Anda jika Anda tidak menggunakan R8, dan cari aturan keep yang cocok dengan paket yang tidak di-obfuscate. Misalnya, jikacom.foo.adalah paket besar di dex Anda, cari aturan keep dengan format-keep com.foo.**atau-keep com.foo.bar.**. - Perlu diingat bahwa aturan penyimpanan konsumen library mungkin tidak mudah diidentifikasi. Jika Anda menduga aturan konsumen library memengaruhi pengoptimalan, Anda dapat memvalidasinya secara lokal dengan menambahkannya ke aplikasi contoh mandiri menggunakan AGP versi terbaru, dan memeriksanya dengan R8 Configuration Analyzer.