有大约五种方式做 iOS dSYM 符号恢复
其中有两种方式都算是比较原始的方案, 区别是 iOS 版本问题
0x00 文件选择
crash 文件在 xcode 中导出, ips 文件在手机 设置->隐私->分析与改进->分析数据
crash 文件直接用 0x01
ips 文件选择性使用
0x01 iOS 15 以前, ips 可以改后缀 crash
工具在 /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources
这里
可以通过 find /Applications/Xcode.app -name symbolicatecrash -type f
找到
导出该文件来使用, 注意 ⚠️ 我的 dSYM 文件, crash 文件以及输出的结果文件都在同意目录下使用的, 实际可以自由发挥
cd ~/Downloads/dsym/crash
export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"
./symbolicatecrash Test.crash Test.app.dSYM > Result.crash
0x02 CrashSymbolicator.py iOS 15 以后
工具在 /Applications/Xcode.app/Contents/SharedFrameworks/CoreSymbolicationDT.framework/Versions/A/Resources
这里
可以通过 find /Applications/Xcode.app -name CrashSymbolicator.py -type f
找到
该文件不能导出, 导出后会环境不全无法使用脚本, 直接是用全路径, 注意 ⚠️ 我的 dSYM 文件, crash 文件以及输出的结果文件都在同意目录下使用的, 实际可以自由发挥
cd ~/Downloads/dsym/crash
export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"
python3 /Applications/Xcode.app/Contents/SharedFrameworks/CoreSymbolicationDT.framework/Versions/A/Resources/CrashSymbolicator.py -d Test.app.dSYM -o Result.crash -p Test.ips
0x03 使用开源 dSYMTools 工具
这个工具适合针对某一条 crash 信息进行恢复符号
https://github.com/answer-huang/dSYMTools/releases 下载后按照 readme 使用
0x04 是用开源 CrashDecoder 工具
https://github.com/HolmesZhao/CrashDecoder 我根据 xtrong/CrashDecoder 进行简单的优化后的程序
0x05 线上 Crash Xcode
Archives 的地方就有相关的信息
参考资料