iOS获取用户设备崩溃日志并分析
项目最近发布,部分用户在内侧使用,正好遇到一些问题,由于用户在其他城市,所以对于用户设备产生的崩溃日志,不好直接拿设备连接电脑。
对于已发布的项目,若要收集崩溃日志,我们可借助于第三方工具,如Bugly、友盟等,或者苹果自己提供的一个SDK函数:NSSetUncaughtExceptionHandler 用来做异常处理,然后发送到自己服务器。
那么,如果我们都没有做这两步,该如何处理呢?其实我们可以让用户自己收集给我们。
步骤如下:
1、引导用户开启iOS设备设置->隐私->分析
这几个都开启一下,目的是允许系统设备自己记录和上传APP应用的崩溃日志数据。
2、点击上图的【分析数据】,会看到一个列表,里面记录了设备上所有应用的日志,找到我们自己的应用,获取到崩溃日志。
关于如何获取崩溃日志:
我摘了两段网上的话
1、当用户抱怨闪退时,你可以要求他让设备与iTunes同步,设备与电脑上的iTunes Store同步后,会将崩溃日志保存在电脑上(路径:Mac OS X:~/Library/Logs/CrashReporter/MobileDevice/)到上述位置把崩溃日志下载下来,然后通过电子邮件发送给你;用这个方法获取崩溃日志时,你必需尽量获取用户设备生成的所有崩溃日志。因为崩溃日志越多,就越容易诊断问题所在
2、应用提交到App Store后,你也能从 iTunes Connect 获取到用户的崩溃日志,登录到 iTunes Connect 上,选择 Manage Your Applications, 点击相应的应用,点击应用图标下面的View Details按钮, 然后点击右栏Links部分的 Crash Reports;如果没有崩溃日志,试试点击Refresh按钮刷新一下。如果你的应用用户量还不多,或者刚上架不久,iTunes Connect账号上也可能还没有任何崩溃日志;如果有的话你就会看到不同iOS版本用户下的崩溃信息。
3、当我们得到这个崩溃日志文件后,我们是看不懂的,原因是没有经过符号化
下面我们可以这样做:
a、桌面新建一个文件夹,把刚才的文件放进去
b、一般我们得到的这个文件都是以.ips后缀结尾,我们先修改后缀为.crash
c、打开如下路径,获取symbolicatecrash,并放到a中的文件夹
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources
d、打开Xcode,到Organizer下面,获取你发布商店的Archives版本,show in finder 找到 .dsYM文件,同理放到a中的文件夹
e、现在我们得到如下内容:一共3个文件
f、最后一步,进行符号化解析
打开终端,cd到a的文件夹路径
【./symbolicatecrash】 【.crash文件路径】 【.dSYM文件路径】 【> log.crash】
记得每个之间有个空格,一共4部分组成。最后得到的符号化文件就是 log.crash。
比如我的路径是这样:
./symbolicatecrash /Users/MACBOOK/Desktop/符号化/k12_sl_iOS-2017-08-14-163111.crash /Users/MACBOOK/Desktop/符号化/k12_sl_iOS.app.dSYM > log.crash
结果如下:
打开log.crash ,我们就能看到具体内容了,错误崩溃定位的代码语句都是有的。
提示:这些引起崩溃代码一般都在文件前面部分。
至于文件里的内容分布,这里我就不讲解了,大家有兴趣网上搜一下都有的。
enjoy~