在开发过程中往往会遇见有个别用户或者测试人员反馈app的闪退现象,而项目一般集成的统计闪退的第三方库是笼统的统计了所有的闪退信息,无法去定位某一个用户提出的某一个时间点的某一个闪退问题,于是乎这个时候需要我们能快速的去获取指定用户提出的指定闪退,并能够解析闪退日志,快速的定位到问题。下面将自己的做法大概的做个总结(可能还有别的方法,但是我觉得下面讲述的方法已经足够了)。
一、收集闪退日志
先和用户确定iPhone是否打开如下设置(以iOS12.0的iPhone为参考):
设置->隐私->分析->共享iPhone分析->与应用开发者共享
只有打开了上述设置闪退日志才会被收集,然后进入设置->隐私->分析->分析数据,找到以自己项目开头拼接出现闪退大致时间点文件名的ips文件。
二、解析闪退日志
1.如果还能找到用户反馈有问题的app 当时打包时相对应的项目源码,那么就很简单了
获取到的.ips文件双击打开是没有解析的日志,现在需要修改后缀名为.crash,然后双击打开出现下面的弹窗
可以选中当时打包的项目,预览并且打开,这时候你会发现打开后的项目会显示闪退的地方。
没错,就是这么简单。不过前提条件是你还有当时打包的项目源码,不然要是用当前闪退所在文件改动过的源码,定位的位置是不对的。
2.不能找到打包时的项目源码,但是可以找到当时打包的dSYM文件
具体步骤:
1.首先在桌面新建一个文件夹crashFile,用于存放解析闪退日志用到的文件。
2.找到前面获取到的.ips文件,拷贝.ips文件放到crashFile中
3.获取symbolicatecrash文件。
找到当时打包所用的xcode(可能笔记本安装了好几个Xcode),然后进入下面的路径:/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
拷贝symbolicatecrash工具拷贝到crashFile中
4.获取dSYM文件
从当时打包的xcode->Window->Organizer->Archives找到当时的xcarchive文件,选中xcarchive文件右键点击【显示包内容】,拷贝dSYMs文件下的.dSYM文件,放到crashFile中。
至此,crashFile文件中总共有3个文件:.ips文件、symbolicatecrash工具、.dSYM文件。
5. 打开终端,cd到crashFile文件夹中
6. 输入命令
./symbolicatecrash Agent----.ips Agent.app.dSYM > crash.log
这时候会发现crashFile文件夹下多了个crash.log文件
双击打开crash.log文件,你会发现崩溃信息已经成功解析
好了,大功告成!!!
下面将附上参考的地址(可以验证闪退的ips文件和dsym文件对应的app是否是同一个):
https://www.cnblogs.com/mukekeheart/p/9449189.html
https://hacpai.com/article/1533042075262
https://www.jianshu.com/p/e5ad706e4196