Ranap dan ANR pada Android menghasilkan surih tindanan, yang merupakan gambar urutan fungsi bersarang yang dipanggil dalam atur cara anda sehingga atur cara itu ranap. Gambar ini dapat membantu anda mengenal pasti dan menyelesaikan sebarang masalah dalam sumber.
Jika apl atau permainan anda telah dibangunkan menggunakan Java dan anda menggunakan ProGuard untuk mengoptimumkan dan mengelirukan apl anda, anda boleh memuat naik fail pemetaan ProGuard untuk setiap versi apl anda dalam Play Console. Jika apl atau permainan anda telah dibangunkan menggunakan kod asli seperti C++, anda boleh memuat naik fail simbol nyahpepijat untuk setiap versi apl anda pada Play Console. Tindakan ini akan memudahkan proses menganalisis dan membetulkan ranap serta ANR anda.
Penting: Hanya fail pemetaan serasi ReTrace disokong untuk penyahkeliruan apl yang disusun dalam Java. Format ini adalah sama dengan format yang digunakan oleh ProGuard atau R8.
Langkah 1: Hasilkan fail penyahkeliruan atau simbolikasi
Untuk menyahkelirukan atau mensimbolikasikan ranap dan ANR apl untuk versi apl anda, mula-mula anda perlu menghasilkan fail yang diperlukan untuk versi apl yang sama. Anda mesti menghasilkan dan memuat naik fail untuk setiap versi baharu apl anda untuk memastikan penyahkeliruan atau simbolikasi berfungsi.
Java: Hasilkan fail pemetaan ProGuardUntuk menyahkelirukan surih tindanan Java, anda perlu menghasilkan fail pemetaan ProGuard dahulu. Untuk mengetahui cara berbuat demikian, pergi ke tapak Google Developers.
Pemalam Android Gradle versi 4.1 dan yang lebih baharu
Jika projek anda membina Android App Bundle, anda boleh menyertakan fail simbol nyahpepijat dalam Android App Bundle itu secara automatik. Untuk menyertakan fail ini, tambahkan yang berikut pada fail build.gradle
apl anda:
android.defaultConfig.ndk.debugSymbolLevel = 'FULL'
Nota: Had untuk fail simbol nyahpepijat ialah 800 MB. Jika fail simbol nyahpepijat anda terlalu besar, gunakan SYMBOL_TABLE
dan bukan FULL
untuk mengurangkan saiz fail.
Jika projek anda membina APK, gunakan tetapan binaan build.gradle di atas untuk menghasilkan fail simbol nyahpepijat secara berasingan. Muat naik fail simbol nyahpepijat ke Google Play Console secara manual seperti yang diterangkan di bawah dalam Langkah 2: Muat naik fail penyahkeliruan atau simbolikasi. Sebagai sebahagian daripada proses pembinaan, pemalam Android Gradle mengeluarkan fail ini di lokasi projek berikut:
app/build/outputs/native-debug-symbols/variant-name/native-debug-symbols.zip
Pemalam Android Gradle versi 4.0 dan yang lebih lama (dan sistem binaan lain)
Sebagai sebahagian daripada proses pembinaan untuk app bundle atau APK, pemalam Android Gradle menyimpan salinan pustaka tidak terlucut dalam direktori projek. Direktori ini mengikuti struktur yang serupa dengan ini:
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
Nota: Jika anda menggunakan sistem binaan yang lain, anda boleh mengubah suai sistem itu untuk menyimpan pustaka tidak terlucut dalam direktori dengan struktur diperlukan di atas.
- Zipkan kandungan direktori ini:
$ cd app/build/intermediates/cmake/universal/release/obj
$ zip -r symbols.zip .
- Muat naik fail symbols.zip secara manual pada Play Console seperti yang diterangkan di bawah dalam Langkah 2: Muat naik fail penyahkeliruan atau pensimbolikasian.
Had untuk fail simbol nyahpepijat ialah 800 MB. Jika fail anda terlalu besar, hal itu mungkin kerana fail .so anda mengandungi jadual simbol (nama fungsi) dan juga maklumat penyahpepijatan DWARF (nama fail dan baris kod). Item ini tidak diperlukan untuk mensimbolikasikan kod anda dan boleh dialih keluar dengan menjalankan perintah ini:
$OBJCOPY --strip-debug lib.so lib.so.sym
Nota: $OBJCOPY
menunjukkan versi khusus bagi ABI yang anda lucutkan, contohnya:ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-objcopy
Langkah 2: Muat naik fail penyahkeliruan atau simbolikasi
Untuk menyahkelirukan atau mensimbolikasikan ranap dan ANR apl untuk versi apl anda, fail penyahkeliruan atau simbolikasi untuk setiap versi apl anda mesti dimuat naik.
Penting: Langkah ini hanya diperlukan untuk pembangun yang menggunakan APK. Jika anda menggunakan app bundle dan pemalam Android Gradle versi 4.1 atau yang lebih baharu, maka tiada apa-apa yang perlu anda lakukan. Kami akan mengambil fail penyahkeliruan daripada app bundle secara automatik dan anda boleh melangkau ke Langkah 3: Lihat surih tindanan ranap yang dinyahkelirukan. Anda boleh mengetahui lebih lanjut tentang app bundle di laman Pembangun Android.
Muat naik fail menggunakan Play ConsoleUntuk memuat naik fail penyahkeliruan atau pensimbolikasian:
- Buka Play Console.
- Pilih satu apl.
- Pada menu kiri, pilih Uji dan terbitkan keluaran > Penjelajah app bundle.
- Pilih artifak yang berkaitan menggunakan pemilih pada penjuru atas sebelah kanan.
- Pilih tab Muat turun dan tatal ke bawah kepada bahagian "Aset".
- Klik anak panah muat naik untuk fail pemetaan atau simbol nyahpepijat sebagaimana yang berkenaan untuk memuat naik fail penyahkeliruan atau pensimbolikasian bagi setiap versi apl anda.
Untuk memuat naik fail menggunakan API Pembangun Google Play, pergi ke tapak Google Developers.
Langkah 3: Lihat surih tindanan ranap yang dinyahkelirukan
Selepas anda memuat naik fail pemetaan ProGuard atau fail simbol nyahpepijat untuk versi apl anda, ranap dan ANR yang berlaku selepas itu akan dinyahkelirukan. Anda boleh menyemak surih tindanan yang dinyahkelirukan bagi ranap dan ANR individu pada halaman Ranap & ANR apl anda.
- Buka Play Console.
- Pilih satu apl.
- Pada menu kiri, pilih Pantau dan buat peningkatan > Android vitals > Ranap & ANR.
- Pilih satu ranap.
- Dalam bahagian "Surih Tindanan", anda akan melihat surih tindanan yang dinyahkelirukan dan disimbolikasikan.
Penting: Sebaik sahaja anda memuat naik fail pemetaan untuk versi apl anda, hanya ranap dan ANR yang akan datang untuk versi itu yang akan dinyahkelirukan. Ranap dan ANR untuk versi apl anda yang berlaku sebelum anda memuat naik fail pemetaan masing-masing tidak akan dinyahkelirukan.
Soalan lazim
Saya tidak mahu menggunakan penyahkeliruan/simbolikasi Play Console. Bolehkah saya berbuat demikian secara luar talian?Play Console menggunakan ndk-stackuntuk melambangkan surih tindanan bagi apl asli dan ReTrace bagi ranap Java. Jika anda memilih untuk tidak berkongsi fail penyahkeliruan, anda boleh menyalin tindanan ranap yang dikelirukan daripada Play Console dan menggunakan alat yang bersesuaian untuk mensimbolikasikan tindanan ranap itu secara luar talian. Walau bagaimanapun, proses ini mestilah dilakukan secara manual bagi setiap tindanan ranap. Hal ini menyebabkan proses ini lambat dan memakan masa. Dengan memberikan fail penyahkeliruan anda, Play Console akan mengendalikan proses ini untuk anda.
Selepas anda memuat naik fail pemetaan ProGuard atau fail simbol nyahpepijat untuk versi apl anda, hanya ranap dan ANR yang berlaku selepas itu akan dinyahkelirukan. Anda perlu menunggu seketika sementara ranap dan ANR baharu dilaporkan oleh peranti pengguna sebelum anda melihat ranap dan ANR yang dinyahkelirukan dalam Play Console.
Hal ini berlaku kerana memuat naik fail penyahkeliruan/simbolikasi yang tidak lengkap. Pastikan anda menyertakan fail simbolikasi untuk seluruh apl anda, terutamanya jika anda menggunakan proses pembinaan yang rumit atau berbilang peringkat. Salah satu sebab yang paling lazim bagi penyahkeliruan separa ialah penggunaan pustaka pihak ketiga. Dalam keadaan ini, anda mungkin boleh mendapatkan fail penyahkeliruan daripada penyedia pustaka itu.
Tanpa fail penyahkeliruan, ranap atau ANR yang sama pada peranti 32 bit dan 64 bit, atau ARM dan peranti Intel akan dipaparkan secara berasingan. Dengan memberikan fail penyahkeliruan, kami dapat mengelompokkan ranap ini bersama-sama. Perkara ini akan memberi anda perspektif yang lebih baik tentang ranap dan ANR yang paling memberikan kesan bagi apl anda.
Jika anda terlupa memuat naik fail untuk versi baharu apl anda, ranap dan ANR akan dibalikkan kepada ranap dan ANR yang dikelirukan. Ikut arahan di atas untuk memuat naik fail itu sekarang. Selepas anda memuat naik fail pemetaan ProGuard atau fail simbol nyahpepijat untuk versi apl anda, hanya ranap dan ANR yang berlaku selepas itu akan dinyahkelirukan. Anda perlu menunggu seketika sementara ranap dan ANR baharu dilaporkan oleh peranti pengguna sebelum anda melihat ranap dan ANR yang dinyahkelirukan dalam Play Console.
Untuk mengelakkan risiko terlupa untuk memuat naik fail itu, pertimbangkan untuk menukar proses pembinaan anda kepada proses yang menggunakan app bundle dengan pemalam Android Gradle versi 4.1 atau yang lebih baharu. Dalam keadaan ini, anda boleh menyertakan fail simbol nyahpepijat dalam app bundle secara automatik dengan mengikut arahan di tapak Pembangun Android.
Jika anda memuat naik fail yang salah untuk versi apl anda, ranap dan ANR akan dibalikkan kepada ranap dan ANR yang dikelirukan. Untuk memuat naik versi yang dibetulkan:
- Buka Play Console.
- Pilih satu apl.
- Pada menu kiri, pilih Uji dan terbitkan keluaran > Penjelajah app bundle
- Pilih artifak yang berkaitan menggunakan pemilih pada penjuru atas sebelah kanan.
- Pilih tab Muat turun dan tatal ke bawah kepada bahagian "Aset".
- Klik ikon padam di sebelah fail penyahkeliruan atau pensimbolikasian yang salah itu.
- Sebaik sahaja versi yang salah dipadamkan, klik ikon muat naik dan muat naik fail yang betul untuk versi apl anda.
Selepas anda memuat naik fail pemetaan ProGuard atau fail simbol nyahpepijat yang betul untuk versi apl anda, hanya ranap dan ANR yang berlaku selepas itu akan dinyahkelirukan. Anda perlu menunggu seketika sementara ranap dan ANR baharu dilaporkan oleh peranti pengguna sebelum anda melihat ranap dan ANR yang dinyahkelirukan dalam Play Console.
Petua: Untuk mengelakkan risiko memuat versi fail yang salah, pertimbangkan untuk menukar proses pembinaan anda kepada proses yang menggunakan app bundle dengan pemalam Android Gradle versi 4.1 atau yang lebih baharu. Dalam keadaan ini, anda boleh menyertakan fail simbol nyahpepijat dalam app bundle secara automatik dengan mengikut arahan di tapak Pembangun Android.
Lawati tapak Pembangun Android untuk bermula.
Ya.
Kadangkala sistem menemukan ANR tetapi tidak dapat mengumpulkan surih tindanan. Dalam keadaan ini, ANR ditunjukkan untuk memberi anda gambaran yang lebih lengkap tentang kestabilan apl anda, tetapi surih tindanan itu sendiri tidak dapat dipaparkan. ANR tanpa surih tindanan dikumpulkan mengikut jenis dan aktiviti, jadi penyemakan dan pembetulan ANR yang serupa mungkin dapat membantu dalam mengurangkan bilangan tanpa surih tindanan.