Men-deobfuscate atau melakukan simbolisasi pelacakan tumpukan error

Error dan ANR di Android menyebabkan pelacakan tumpukan, yang merupakan ringkasan dari urutan fungsi bertingkat yang dipanggil dalam program Anda hingga error terjadi. Snapshot 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 file APK, Anda dapat mengupload file pemetaan ProGuard untuk setiap versi aplikasi Anda pada Konsol Play. Jika aplikasi atau game Anda dikembangkan menggunakan kode native, seperti C++, Anda dapat mengupload file simbol debug untuk setiap versi aplikasi 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 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 ProGuard

Untuk men-deobfuscate pelacakan tumpukan Java, Anda harus membuat file pemetaan ProGuard terlebih dahulu. Untuk mempelajari caranya, buka situs Google Developers.

Native: Membuat file simbol debug

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: Ada batas sebesar 300 MB untuk file simbol debug. 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 APK atau Android App Bundle, 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.

  1. Gunakan konten direktori ini:
    • $ cd app/build/intermediates/cmake/universal/release/obj
    • $ zip -r symbols.zip .
  2. Upload file simbols.zip ke Konsol Play secara manual seperti yang dijelaskan di bawah pada Langkah 2: Upload file deobfuscation atau simbolisasi.

Ada batas sebesar 300 MB untuk file simbol debug. Jika file terlalu besar, kemungkinan karena file .so Anda berisi tabel simbol (nama fungsi), juga info 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 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 App Bundle dan Android Gradle 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 app bundle lebih lanjut di situs Developer Android.

Mengupload file menggunakan Konsol Play

Untuk mengupload file simbolisasi atau deobfuscation:

  1. Buka Konsol Play.
  2. Pilih aplikasi.
  3. Di menu sebelah kiri, pilih Rilis > Perangkat dan versi> Penjelajah app bundle.
  4. Dengan alat pilih di pojok kanan atas, pilih artefak yang relevan.
  5. Pilih tab Download, dan scroll ke bawah ke bagian “Aset”.
  6. Klik panah upload untuk file pemetaan atau simbol debug sebagaimana yang berlaku guna mengupload file deobfuscation atau simbolisasi untuk versi aplikasi Anda.
Mengupload file menggunakan Google Play Developer API

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.

  1. Buka Konsol Play.
  2. Pilih aplikasi.
  3. Di menu sebelah kiri, pilih Kualitas Android vitals. Error & ANR.
  4. Pilih error.
  5. 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. Apakah saya dapat melakukannya secara offline?

Konsol Play menggunakan ndk-stack untuk menyimbolkan pelacakan tumpukan untuk aplikasi native, dan ReTrace untuk error Java. Jika memilih untuk tidak membagikan file deobfuscation, Anda dapat menyalin tumpukan error yang di-deobfuscate dari Konsol Play dan menggunakan fitur 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.

Saya telah mengupload file deobfuscation/simbolisasi, mengapa error dan ANR saya masih di-obfuscate?

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.

Setelah mengupload file deobfuscation/simbolisasi, mengapa error dan ANR saya hanya di-deobfuscate sebagian?

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.

Setelah mengupload file deobfuscation/simbolisasi, mengapa saya mendapatkan error dan ANR yang lebih sedikit tetapi lebih parah?

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.

Apa yang terjadi jika saya lupa mengupload file?

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.

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.

Apa yang terjadi jika saya mengupload file yang salah?

Jika Anda mengupload file yang salah untuk versi aplikasi, error dan ANR akan kembali di-obfuscate. Untuk mengupload versi yang dikoreksi:

  1. Buka Konsol Play.
  2. Pilih aplikasi.
  3. Di menu sebelah kiri, pilih Rilis > Perangkat dan versi > Penjelajah app bundle
  4. Dengan alat pilih di pojok kanan atas, pilih artefak yang relevan.
  5. Pilih tab Download, dan scroll ke bawah ke bagian “Aset”.
  6. Klik ikon hapus di samping file deobfuscation atau simbolisasi yang salah.
  7. Setelah versi yang salah dihapus, klik ikon upload lalu upload file yang benar untuk versi aplikasi Anda.

Setelah mengupload file pemetaan ProGuard atau simbol debug yang benar untuk versi aplikasi, 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.

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.

Saat ini saya menggunakan APK. Bagaimana cara beralih menggunakan app bundle?

Kunjungi situs Developer Android untuk memulai.

Aplikasi saya berisi kode Java dan native. Dapatkah saya mengupload file simbolisasi native dan file deobfuscation Java?

Ya.

Apakah ini membantu?
Bagaimana cara meningkatkannya?

Perlu bantuan lain?

Login untuk opsi dukungan tambahan guna memecahkan masalah dengan cepat