Pengoptimalan kode DEX

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, jika com.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.