每當 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 可讓您為每個應用程式版本上傳偵錯符號檔案 。以利分析及修正當機和 ANR 問題。
在 Unity 2020.3 以上版本中,請按照 Unity 的指示產生 Android 符號 然後將符號化檔案上傳至 Google 在 Play 管理中心查看 Android Vitals 中使用者可理解的堆疊追蹤 儀表板中指定這項設定。
您也可以按照 判別 Android 當機情形文章: Unity 能手動解析堆疊追蹤或產生較低值的符號檔案 以及 Unity 版本