Pengoptimalan kode DEX adalah temuan Android vitals yang membantu Anda memantau dan meningkatkan kualitas, ukuran, dan performa kompilasi aplikasi. Mengoptimalkan dan meng-obfuscate kode Anda menggunakan R8 atau alat alternatif (seperti pengoptimal yang kompatibel dengan ProGuard atau pascapemroses DEX sekunder) akan mengurangi ukuran DEX aplikasi Anda, meningkatkan performa runtime, dan meminimalkan jejak memorinya.
File DEX, atau Dalvik Executable, berisi kode yang dikompilasi yang digunakan
untuk menjalankan aplikasi Anda. Kode ini biasanya mencakup kode Java dan Kotlin, bukan
kode C++ yang dikompilasi atau file .so.
Android vitals melaporkan metrik pengoptimalan kode DEX untuk semua aplikasi dan game, tetapi hanya menerapkan nilai minimum untuk aplikasi dan game yang memenuhi persyaratan ukuran tertentu.
Mendeteksi masalah
Android vitals dapat memberi tahu Anda di Konsol Play jika tingkat pengoptimalan, penyingkatan, atau obfuscation kode DEX aplikasi Anda tidak memenuhi persentase minimum yang ditentukan.
Cara penghitungan skor pengoptimalan
Untuk aplikasi yang di-build dengan versi patch terbaru AGP 8.10 atau yang lebih tinggi (misalnya,
8.10.1, bukan 8.10.0), persentase ini diambil dari file
r8.json yang disertakan. Pastikan Anda menggunakan versi patch terbaru AGP dan R8 untuk
versi minor Anda agar metadata yang akurat dapat dibuat.
Untuk aplikasi yang di-build dengan AGP versi lama, atau aplikasi yang dioptimalkan dengan
pengoptimal kode alternatif yang tidak menyertakan r8.json, Android vitals
memperkirakan persentase obfuscation sebagai proxy menggunakan file mapping.txt (jika
disertakan) atau heuristik DEX.
Total ukuran DEX minimum
Meskipun Android vitals menghitung metrik pengoptimalan kode untuk semua aplikasi, Anda hanya akan menerima pemberitahuan jika app bundle Anda memenuhi persyaratan total ukuran DEX berikut:
- Aplikasi: Paket berisi setidaknya 10 MB kode DEX yang diukur sebagai ukuran yang tidak dikompresi
- Game: Paket berisi setidaknya 50 MB kode DEX yang diukur sebagai ukuran yang tidak dikompresi
Mengukur pengoptimalan kode secara lokal
Untuk mengukur ukuran DEX app bundle yang tidak dikompresi dan mendapatkan persentase pengoptimalan,
penyingkatan, dan obfuscation yang sesuai dengan temuan di Android
Vitals, jalankan android analyze:
android analyze <yourapp>.aab
Memperbaiki masalah
Untuk mengatasi skor pengoptimalan kode DEX yang rendah, tinjau rekomendasi berdasarkan sistem build dan pengoptimal Anda:
R8
Untuk meningkatkan skor pengoptimalan kode DEX R8, lihat panduan di Meningkatkan pengoptimalan R8, dan gunakan R8 Configuration Analyzer untuk memahami pengaruh aturan keep terhadap skor pengoptimalan, penyingkatan, dan obfuscation (untuk mengetahui definisi mendetail tentang metrik ini, lihat Memahami laporan).
Jika menggunakan Plugin Android Gradle (AGP), Anda juga dapat menggunakan
kemampuan R8 Analyzer untuk mendapatkan panduan tambahan dalam mengoptimalkan aturan keep
aplikasi Anda. Jika menggunakan Bazel, Anda juga memiliki akses ke R8 Configuration Analyzer;
lihat dokumentasi pengoptimalan R8 rules_android.
Pengoptimal non-R8 dan pascapemroses DEX
Jika pipeline build Anda menggunakan alat build kustom atau pascapemroses DEX sekunder, lakukan langkah-langkah berikut untuk meningkatkan pengoptimalan aplikasi:
- Buka app bundle 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
memuat file
mapping.txt). Jika Anda menemukan beberapa file tersebut tetap besar saat di-obfuscate, kemungkinan file tersebut terpengaruh oleh aturan mempertahankan seluruh paket. - Cari di file
proguard-rules.pro,configuration.txt, atau yang setara untuk pengoptimal jika Anda tidak menggunakan R8, dan telusuri aturan keep yang cocok dengan paket yang tidak di-obfuscate. Misalnya, jikacom.foo.adalah paket besar dalam file DEX Anda, cari aturan keep dengan format-keep com.foo.**atau-keep com.foo.bar.**. - Perlu diingat bahwa aturan keep konsumen library mungkin tidak mudah
diidentifikasi. Jika Anda menduga aturan konsumen library memengaruhi pengoptimalan,
Anda dapat memeriksa library secara langsung menggunakan
android analyze <library>.aar, atau memvalidasinya dengan menambahkan library ke aplikasi contoh mandiri menggunakan versi AGP terbaru dan memeriksanya dengan R8 Configuration Analyzer.