Unity中安卓崩溃日志处理记录

1:如果发生问题的设备在手边,则可以通过ADB 命令连接手机,获取到设备发生时的日志

adb.exe 在(SDKplatform-tools),也可以添加到环境变量PATH中使用,

使用cmd命令行连接设备:

adb connect 127.0.0.1:5555(Ip地址:端口号 一般为5554或者5555)

获取设备的所有日志及当前的日志: adb logcat -v time > d:myLog.txt  ctrl+c停止获取

获取某个时间之后的日志: adb logcat -t "2023-6-30 09:10:00.001" >d:/logs/aa.txt

可以将日志输出到电脑中

2:接入firebase.Crashlytics,可以收到APP上线后的崩溃和ANR时发生的堆栈信息,

Unity打包时需要选择BuildSettings->Create symbols.zip Debugging或者Public,这样可以获得symbols文件,当Crashlytics中获取到堆栈信息的时候可以通过工具查看堆栈信息的具体函数

如:堆栈信息:

#00 pc 0x22af08 libunity.so (libunity.0x22af08) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#01 pc 0x33b5d9 libunity.so (libunity.0x33b5d9) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#02 pc 0x3f4a1f libunity.so (libunity.0x3f4a1f) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#03 pc 0x3f510d libunity.so (libunity.0x3f510d) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#04 pc 0x28d8a7 libunity.so (libunity.0x28d8a7) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#05 pc 0x28d8c9 libunity.so (libunity.0x28d8c9) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#06 pc 0x28da5b libunity.so (libunity.0x28da5b) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#07 pc 0x3a9cab libunity.so (libunity.0x3a9cab) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#08 pc 0x3b91a5 libunity.so (libunity.0x3b91a5) (BuildId: d338d5d5b8875ca34fb61f05a7db43a94d1788d2)
#09 pc 0x2a82941 base.odex (base.0x2a82941)

然后通过NDK工具可以解析为具体函数:

查看堆栈日志:

32位:

D:UnityHub2021.3.26f1c1EditorDataPlaybackEnginesAndroidPlayerNDKtoolchainsarm-linux-androideabi-4.9prebuiltwindows-x86_64bin

命令:arm-linux-androideabi-addr2line -f -C -e .symbolsarmeabi-v7alibunity.so 0x3b91a5

64位:

D:UnityHub2021.3.26f1c1EditorDataPlaybackEnginesAndroidPlayerNDKtoolchainsaarch64-linux-android-4.9prebuiltwindows-x86_64bin

命令:aarch64-linux-android-addr2line -f -C -e .symbolsarmeabi-v7alibunity.so 0xbd1e44

其实谷歌有提供上传symbol文件的功能,这样在解析的时候就可以直接获得可以看懂的日志