Pengoptimalan kode DEX

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