最近新提交一个新版本到AppStore,就收到被拒邮件,打开一看,We were unable to review your app as it crashed on launch. We have attached detailed crash logs to help troubleshoot this issue.神马情况,Crash,测试测过多少次,都没有crash的情况啊,还是app启动就crash,再看看苹果给我的三个.txt的crash日志,崩溃了,神马都看不懂,如何下手啊,我这边各种机型测试OK,都没有crash的情况,真是心碎,欲哭无泪啊,, 查了一些资料,真心幻想是苹果测试环境出了问题,哈哈。木有办法,真心按不出来哪里有crash啊,硬着头皮看苹果的log呗,真心不想看,太难看了
苹果的xxx.txtLog日志需要借助xcode 的symbolicatecrash工具进行解析符号化,才能解析成我们熟悉的堆栈信息
1. 在桌面创建 crash 文件夹,稍后将所有的 crash 工具信息都放这里面,方便管理
2.找到 symbolicatecrash 工具位置 :每个人的存储位置可能有所差异,通过命令可以找出其位置:
find /Applications/Xcode.app -name symbolicatecrash -type f
例如我的:
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
3.复制 symbolicatecrash 工具到 crash 文件夹中:
cp /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash /Users/xxxx/Desktop/Crash
4.因为app打好包的所有信息都存放在 projectName.app.dSYM 这个文件中,需要将 projectName.app.dSYM 及 projectName.app 复制到 crash 文件夹中。
Xcode --> Window --> Organize 中找到自己上传 appStore 中的包,右键 --> Show in Finder --> 显示包内容 --> 将上述两个文件 copy 到 crash 文件夹中。
5.将 appStore 的反馈回来的 Crash 日志 (三个 .txt 文件) 下载下来,放到 crash 文件夹下
注意: 红框2 中的文件在此时是没有的,是将红框1 中的三个.txt 文件解析生成 红框2 中的三个可读文件。
6.解析appStore的三个 .txt crash 日志文件
1) cd crash文件夹内
2) 三个文件分别为 xxxCD.txt xxxDC.txt xxxAD.txt , crashcd.crash 为输出文件名,输出分别对应 crashcd.crash crashad.crash crashdc.crash
./symbolicatecrash ./xxxCD.txt ./ProjectName.app.dSYM > crashxx.crash
注: 如果解析报错:Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69. 输入命令: export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer",之后继续解析剩下文件,解析完成之后就能得到上图文件夹中的 .crash 文件。
7.查找原因: 比如解析后的文件为,系统调用的可以忽略,着重看自己调用的方法