Android 上的崩溃和 ANR 会生成堆栈跟踪,这是您的游戏中嵌套函数调用序列直到崩溃那一刻的快照。这些快照可以帮助您识别并修复源代码中的任何问题。
然而,当您在发布模式下使用 Unity 构建游戏时,符号不会打包到 APK 中。如果您的游戏崩溃或出现 ANR,调用堆栈将只显示内存地址。
例如
05-26 18:06:51.311: A/libc(26986): Fatal signal 11 (SIGSEGV) at 0x000004e4 (code=1), thread 27024 (Worker Thread) 05-26 18:06:51.411: I/DEBUG(242): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 05-26 18:06:51.411: I/DEBUG(242): Build fingerprint: 'Xiaomi/cancro_wc_lte/cancro:4.4.4/KTU84P/V6.7.1.0.KXDCNCH:user/release-keys' 05-26 18:06:51.411: I/DEBUG(242): Revision: '0' 05-26 18:06:51.411: I/DEBUG(242): pid: 26986, tid: 27024, name: Worker Thread >>> com.u.demo <<< 05-26 18:06:51.411: I/DEBUG(242): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 000004e4 I/DEBUG(242): backtrace: I/DEBUG(242): #00 pc 006d4960 /data/app-lib/com.u.demo-1/libunity.so I/DEBUG(242): #01 pc 006d4c0c /data/app-lib/com.u.demo-1/libunity.so I/DEBUG(242): #02 pc 006d4c0c /data/app-lib/com.u.demo-1/libunity.so I/DEBUG(242): #03 pc 006d4c0c /data/app-lib/com.u.demo-1/libunity.so I/DEBUG(242): #04 pc 006d4c0c /data/app-lib/com.u.demo-1/libunity.so I/DEBUG(242): #05 pc 001c5510 /data/app-lib/com.u.demo-1/libunity.so I/DEBUG(242): #06 pc 001c595c /data/app-lib/com.u.demo-1/libunity.so I/DEBUG(242): #07 pc 001c4ec0 /data/app-lib/com.u.demo-1/libunity.so I/DEBUG(242): #08 pc 0043a05c /data/app-lib/com.u.demo-1/libunity.so I/DEBUG(242): #09 pc 0000d248 /system/lib/libc.so (__thread_entry+72) I/DEBUG(242): #10 pc 0000d3e0 /system/lib/libc.so (pthread_create+240)
Google Play 支持在 Play 管理中心为您的应用的每个版本上传调试符号文件。这使得分析和修复崩溃和 ANR 变得更加容易。
从 Unity 2020.3 及更高版本开始,您可以按照 Unity 的指南生成 Android 符号,然后将符号化文件上传到 Google Play 管理中心,以便在 Android Vitals 信息中心查看人类可读的堆栈跟踪。
否则,您可以按照 Unity 的“符号化 Android 崩溃”文章,手动解析堆栈跟踪或为较低版本的 Unity 生成符号文件。