Error dan ANR di Android menyebabkan stack trace, yang merupakan ringkasan dari urutan fungsi bertingkat yang dipanggil dalam program Anda hingga error terjadi. Ringkasan ini dapat membantu Anda mengidentifikasi dan memperbaiki setiap masalah dalam sumber.
Jika aplikasi atau game Anda dikembangkan menggunakan Java dan Anda menggunakan ProGuard untuk mengoptimalkan serta meng-obfuscate aplikasi, Anda dapat mengupload file pemetaan ProGuard untuk setiap versi aplikasi Anda di Konsol Play. Jika aplikasi atau game Anda dikembangkan menggunakan kode native, seperti C++, Anda dapat mengupload file simbol debug untuk setiap versi aplikasi Anda di Konsol Play. Hal ini mempermudah untuk menganalisis serta memperbaiki error dan ANR Anda.
Penting: Hanya file pemetaan yang kompatibel dengan ReTrace yang didukung untuk deobfuscation aplikasi yang dikompilasi di Java. Ini adalah format yang sama dengan yang digunakan oleh ProGuard atau R8.
Langkah 1: Buat file deobfuscation atau simbolisasi
Untuk men-deobfuscate atau melakukan simbolisasi error dan ANR aplikasi untuk versi aplikasi Anda, Anda terlebih dahulu harus membuat file yang diperlukan untuk versi aplikasi yang sama. Anda harus membuat dan mengupload file untuk setiap versi baru aplikasi agar proses deobfuscation atau simbolisasi dapat berjalan.
Java: Membuat file pemetaan ProGuardUntuk men-deobfuscate pelacakan tumpukan Java, Anda harus membuat file pemetaan ProGuard terlebih dahulu. Untuk mempelajari caranya, buka situs Google Developers.
Versi plugin Android Gradle 4.1 dan yang lebih baru
Jika project Anda mem-build Android App Bundle, Anda dapat secara otomatis menyertakan file simbol debug di dalamnya. Untuk menyertakan file ini, tambahkan kode berikut ke file build.gradle
aplikasi Anda:
android.defaultConfig.ndk.debugSymbolLevel = 'FULL'
Catatan: Batas untuk file simbol debug adalah 800 MB. Jika jejak simbol debug terlalu besar, gunakan SYMBOL_TABLE
bukan FULL
untuk mengurangi ukuran file.
Jika project Anda mem-build APK, gunakan setelan build build.gradle di atas untuk membuat file simbol debug secara terpisah. Upload file simbol debug secara manual ke Konsol Google Play seperti yang dijelaskan di bawah pada Langkah 2: Upload file deobfuscation atau simbolisasi. Sebagai bagian dari proses build, plugin Android Gradle akan menampilkan file ini pada lokasi project berikut:
app/build/outputs/native-debug-symbols/variant-name/native-debug-symbols.zip
Versi plugin Android Gradle 4.0 dan yang lebih lama (dan sistem build lainnya)
Sebagai bagian dari proses build untuk app bundle atau APK, plugin Android Gradle menyimpan salinan library simbolik dalam direktori project. Direktori ini mengikuti struktur yang mirip dengan hal berikut:
app/build/intermediates/cmake/universal/release/obj
├── armeabi-v7a/
│ ├── libgamenegine.so
│ ├── libothercode.so
│ └── libvideocodec.so
├── arm64-v8a/
│ ├── libgamenegine.so
│ ├── libothercode.so
│ └── libvideocodec.so
├── x86/
│ ├── libgamenegine.so
│ ├── libothercode.so
│ └── libvideocodec.so
└── x86_64/
├── libgameengine.so
├── libothercode.so
└── libvideocodec.so
Catatan: Jika menggunakan sistem build yang berbeda, Anda dapat memodifikasinya untuk menyimpan library simbolik dalam direktori dengan struktur yang diperlukan di atas.
- Gunakan konten direktori ini:
$ cd app/build/intermediates/cmake/universal/release/obj
$ zip -r symbols.zip .
- Upload file symbols.zip ke Konsol Play secara manual seperti yang dijelaskan di bawah pada Langkah 2: Upload file deobfuscation atau simbolisasi.
Batas ukuran file simbol debug adalah 800 MB. Jika file terlalu besar, kemungkinan karena file .so Anda berisi tabel simbol (nama fungsi), juga info proses debug DWARF (nama file dan baris kode). Ini tidak diperlukan untuk melakukan simbolisasi pada kode Anda dan dapat dihapus dengan menjalankan perintah ini:
$OBJCOPY --strip-debug lib.so lib.so.sym
Catatan: $OBJCOPY
mengarah ke versi spesifik untuk ABI yang Anda stripping, misalnya:ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-objcopy
Langkah 2: Upload file deobfuscation atau simbolisasi
Untuk membatalkan deobfuscation atau simbolisasi pada error dan ANR aplikasi untuk versi aplikasi Anda, Anda harus mengupload file deobfuscation atau simbolisasi untuk setiap versi aplikasi.
Penting: Langkah ini hanya diperlukan bagi developer yang menggunakan APK. Jika Anda menggunakan plugin Android Gradle dan app bundle versi 4.1 atau yang lebih baru, Anda tidak perlu melakukan apa pun. Kami akan secara otomatis mengambil file deobfuscation dari paket tersebut dan Anda dapat langsung ke Langkah 3: Lihat pelacakan tumpukan error yang di-deobfuscate. Anda dapat mempelajari lebih lanjut app bundle di situs Developer Android.
Mengupload file menggunakan Konsol PlayUntuk mengupload file simbolisasi atau deobfuscation:
- Buka Konsol Play.
- Pilih aplikasi.
- Di menu kiri, pilih Uji dan rilis > Penjelajah app bundle.
- Dengan alat pilih di pojok kanan atas, pilih artefak yang relevan.
- Pilih tab Download, lalu scroll ke bawah ke bagian "Aset".
- Klik panah upload untuk file pemetaan atau simbol debug sebagaimana yang berlaku guna mengupload file deobfuscation atau simbolisasi untuk versi aplikasi Anda.
Untuk mengupload file menggunakan Google Play Developer API, kunjungi situs Google Developers.
Langkah 3: Lihat pelacakan tumpukan error yang di-deobfuscate
Setelah mengupload file pemetaan ProGuard atau file simbol debug untuk versi aplikasi Anda, error dan ANR yang terjadi setelahnya akan di-deobfuscate. Anda dapat meninjau pelacakan tumpukan yang di-deobfuscate untuk setiap error dan ANR pada halaman Error & ANR aplikasi.
- Buka Konsol Play.
- Pilih aplikasi.
- Di menu kiri, pilih Pantau dan tingkatkan > Android vitals > Error & ANR.
- Pilih error.
- Di bagian "Pelacakan Tumpukan", Anda akan melihat pelacakan tumpukan yang di-deobfuscate dan disimbolisasi.
Penting: Setelah mengupload file pemetaan untuk versi aplikasi Anda, hanya error dan ANR selanjutnya untuk versi aplikasi tersebut yang akan di-deobfuscate. Error dan ANR untuk versi aplikasi Anda yang terjadi sebelum Anda mengupload file pemetaan masing-masing tidak akan di-deobfuscate.
Pertanyaan umum (FAQ)
Saya tidak ingin menggunakan deobfuscation/simbolisasi Konsol Play. Dapatkah saya melakukannya secara offline?Konsol Play menggunakan ndk-stack untuk menyimbolkan stack trace untuk aplikasi native dan ReTrace untuk error Java. Jika Anda memilih untuk tidak membagikan file deobfuscation, Anda dapat menyalin tumpukan error yang di-deobfuscate dari Konsol Play dan menggunakan alat yang sesuai secara offline untuk menyimbolkannya. Namun, proses ini harus dilakukan secara manual untuk setiap tumpukan error, sehingga proses menjadi lambat dan memakan waktu. Dengan menyediakan file deobfuscation, Konsol Play akan menangani masalah ini untuk Anda.
Setelah mengupload file pemetaan ProGuard atau file simbol debug untuk versi aplikasi Anda, hanya error dan ANR yang terjadi setelahnya yang akan di-deobfuscate. Anda harus memberikan waktu agar error dan ANR yang baru dapat dilaporkan oleh perangkat pengguna sebelum Anda melihat error dan ANR yang di-deobfuscate di Konsol Play.
Hal ini disebabkan oleh upload file deobfuscation/simbolisasi yang tidak lengkap. Pastikan Anda menyertakan file simbolisasi untuk seluruh aplikasi, terutama jika Anda menggunakan proses build yang kompleks atau multi-tahap. Salah satu alasan paling umum untuk deobfuscation sebagian adalah jika Anda menggunakan library pihak ketiga. Dalam hal ini, Anda mungkin bisa mendapatkan file deobfuscation dari penyedia library.
Tanpa file deobfuscation, error atau ANR yang sama pada perangkat 32-bit dan 64-bit atau perangkat ARM dan Intel akan ditampilkan secara terpisah. Dengan menyediakan file deobfuscation, kami dapat mengelompokkan error ini bersama-sama, sehingga memberikan Anda perspektif yang lebih baik tentang error dan ANR yang paling berpengaruh untuk aplikasi Anda.
Jika Anda lupa mengupload file untuk versi aplikasi yang baru, error dan ANR akan kembali di-obfuscate. Ikuti petunjuk di atas untuk menguploadnya sekarang. Setelah mengupload file pemetaan ProGuard atau file simbol debug untuk versi aplikasi Anda, hanya error dan ANR yang terjadi setelahnya yang akan di-deobfuscate. Anda harus memberikan waktu agar error dan ANR yang baru dapat dilaporkan oleh perangkat pengguna sebelum Anda melihat error dan ANR yang di-deobfuscate di Konsol Play.
Untuk menghindari risiko lupa mengupload file, pertimbangkan untuk mengubah proses build agar menggunakan app bundle dengan plugin Android Gradle versi 4.1 atau yang lebih baru. Dalam hal ini, Anda dapat secara otomatis menyertakan file simbol debug dalam app bundle dengan mengikuti petunjuk di situs Developer Android.
Jika Anda mengupload file yang salah untuk versi aplikasi, error dan ANR akan kembali di-obfuscate. Untuk mengupload versi yang dikoreksi:
- Buka Konsol Play.
- Pilih aplikasi.
- Di menu kiri, pilih Uji dan rilis > Penjelajah app bundle
- Dengan alat pilih di pojok kanan atas, pilih artefak yang relevan.
- Pilih tab Download, lalu scroll ke bawah ke bagian "Aset".
- Klik ikon hapus di samping file deobfuscation atau simbolisasi yang salah.
- Setelah versi yang salah dihapus, klik ikon upload lalu upload file yang benar untuk versi aplikasi Anda.
Setelah mengupload file pemetaan ProGuard atau file simbol debug yang benar untuk versi aplikasi Anda, hanya error dan ANR yang terjadi setelahnya yang akan di-deobfuscate. Anda harus memberikan waktu agar error dan ANR yang baru dapat dilaporkan oleh perangkat pengguna sebelum Anda melihat error dan ANR yang di-deobfuscate di Konsol Play.
Tips: Guna menghindari risiko mengupload versi file yang salah, pertimbangkan untuk mengubah proses build agar menggunakan app bundle dengan plugin Android Gradle versi 4.1 atau lebih baru. Dalam hal ini, Anda dapat secara otomatis menyertakan file simbol debug dalam app bundle dengan mengikuti petunjuk di situs Developer Android.
Kunjungi situs Developer Android untuk memulai.
Ya.
Terkadang, sistem menemukan ANR, tetapi tidak dapat mengumpulkan pelacakan tumpukan. Dalam hal ini, ANR ditampilkan untuk memberi Anda gambaran yang lebih lengkap tentang stabilitas aplikasi, tetapi pelacakan tumpukan itu sendiri tidak dapat ditampilkan. ANR tanpa pelacakan tumpukan dikelompokkan berdasarkan jenis dan aktivitas, sehingga meninjau dan memperbaiki ANR serupa dapat membantu mengurangi jumlah ANR tanpa pelacakan tumpukan.