Menguji dan memecahkan masalah pengoptimalan

Setelah mengaktifkan pengoptimalan aplikasi, pastikan aplikasi berfungsi seperti yang diharapkan dan konfigurasi R8 melakukan hal yang Anda harapkan. Langkah-langkah umumnya adalah sebagai berikut:

  1. Uji perjalanan penting pengguna (CUJ) aplikasi Anda: Misalnya, pastikan pengguna dapat login dan melakukan tugas penting lainnya.
  2. Ukur peningkatan performa menggunakan benchmark: Lakukan benchmark aplikasi Anda sebelum dan sesudah mengaktifkan pengoptimalan aplikasi.

Jika Anda menemukan masalah, R8 menyediakan alat untuk membantu Anda memecahkan masalah. Jika Anda tidak dapat menyelesaikan masalah dengan R8, laporkan bug.

Tips umum

Masalah dengan R8 sering kali unik untuk aplikasi Anda, tetapi berikut beberapa tips umum untuk memudahkan proses debug:

  • Menonaktifkan obfuscation untuk sementara: R8 melakukan obfuscation kode sebagai bagian dari proses pengoptimalannya. Obfuscation biasanya bukan penyebab error, tetapi obfuscation membuat error lebih sulit di-debug. Tambahkan flag ‑dontobfuscate dan ‑dontoptimize ke file aturan keep untuk membantu Anda menemukan kode yang bermasalah.
  • Periksa refleksi: Jika Anda mengalami pengecualian tidak ada elemen tersebut seperti

    Caused by: java.util.NoSuchElementException: Collection contains no element matching the predicate in the stack trace ,

    pengecualian biasanya berarti kolom yang dimaksud digunakan melalui refleksi dan Anda harus menambahkan aturan keep.

  • Periksa bytecode: Sebagian besar masalah R8 memerlukan pemeriksaan bytecode, yang dapat Anda lakukan dengan alat seperti APK Analyzer.

Memeriksa aturan yang diterapkan

Untuk meng-output laporan lengkap dari semua aturan yang diterapkan R8 saat membuat project Anda, sertakan baris berikut dalam file proguard‑rules.pro modul aplikasi Anda:

-printconfiguration <output-dir>/<report-name>.txt

Anda dapat menentukan jalur dan nama file. Jika Anda tidak menentukan jalur atau nama file, R8 akan menampilkan laporan aturan di <module-name>/build/outputs/mapping/<build-type>/configuration.txt.

Memahami alasan kode disimpan

Jika Anda melihat kode yang dipertahankan yang seharusnya dihapus, gunakan opsi konfigurasi ‑whyareyoukeeping untuk membantu memahami alasan kode dipertahankan. R8 menghasilkan jalur dari kode yang disimpan ke salah satu titik masuk aplikasi Anda. Untuk informasi selengkapnya, lihat dokumentasi ‑whyareyoukeeping dalam manual Proguard.

Memulihkan pelacakan tumpukan asli

Kode yang diproses oleh R8 diubah dengan berbagai cara sehingga pelacakan tumpukan tidak lagi merujuk ke kode asli. Misalnya, nomor baris dan nama class dan metode dapat berubah. Untuk memulihkan pelacakan tumpukan yang asli, R8 menyediakan alat command line retrace, yang dipaketkan dengan paket alat command line.

Untuk menggunakan retrace, berikan file pemetaan dan file pelacakan tumpukan. File pemetaan, yang disebut mapping.txt, otomatis dipaketkan dengan Android App Bundle (AAB) Anda. Untuk mengetahui detail selengkapnya, lihat dokumentasi retrace dan artikel Pusat Bantuan Konsol Play tentang cara men-deobfuscate pelacakan tumpukan error.