背景
iOS 15 之后苹果对符号化文件格式进行了 JSON 支持, 所以针对 iOS 15 以上产生的崩溃文件, 写入方式做了调整。新的ips文件无法再被symbolicatecrash符号化。需要用到CrashSymbolicator.py来进行符号化。
如何找到CrashSymbolicator.py
find /Applications/Xcode.app -name "CrashSymbolicator*" -type f
注:CrashSymbolicator.py文件运行环境依赖于其所在framework的包内容,故无法复制出来单独使用
如何使用
-
将
dSYM文件和和ips放到同一目录下 -
执行
CrashSymbolicator.py脚本(参数:-d '符号表路径' -o '输出路径' -p '苹果给的日志')-
python3 /Applications/Xcode.app/Contents/SharedFrameworks/CoreSymbolicationDT.framework/Versions/A/Resources/CrashSymbolicator.py -d ./ -o crash_report.txt -p djzy.ips
-
最后
为了省去以下繁琐的操作:
- 定位
CrashSymbolicator.py文件 ips文件改名- 繁琐的脚本参数
我写了以下脚本,只要将以下脚本放在与ips和dSYM相同的目录下,将脚本改成可执行文件,在命令行直接运行该脚本即可。
xcode_app=$(xcode-select -p)/../..
crashSymbolicator=$(find $xcode_app -name "CrashSymbolicator*" -type f)
ips=$(find . -name "*.ips" -type f)
python3 $crashSymbolicator -d . -o crash_report.txt -p $ips