友盟
这个时间点,友盟的异常统计模块叫做U-APM
接入之后,发现很不好用。
-
从友盟后台看到的crash文件数量远远少于实际的崩溃次数
-
crash文件的UUID和dSYM符号表文件的不一致
-
dSYM工具不是很准确,总感觉不对
后来发现是.dSYM文件失效导致的问题
腾讯Bugly
友盟不起作用,解决不了问题,有文章说腾讯Bugly更简洁更好用,那么就再增加一个试试。
1. 用QQ登录
用手机QQ扫描一下就能登录。没QQ的就只能先注册一个。
为此,找回了多年没有登录过的QQ号。
2. 在管理后台新建产品,这个和友盟很像。
![](https://img.haomeiwen.com/i1186939/776fe6e8262da677.png)
3. 集成
用CocoaPods的方式,只要一句话就可以
pod 'Bugly'
然后,就pod install一下就好,常规操作
4. 接入代码
也是一句话的事;AppId可以从管理后台拿到。
[Bugly startWithAppId:@"此处替换为你的AppId"];
做一个崩溃实验
在代码中,让字典设置nil,就会崩溃。运行了两次崩溃,Bugly能抓到,而且很快;但是友盟只能抓到1次。
![](https://img.haomeiwen.com/i1186939/d6c41802ab7e9f8d.png)
![](https://img.haomeiwen.com/i1186939/65d70b297a3e38a2.png)
DSYM工具
-
为了把地址转化为有意义的代码,有大神写了一个工具。
dSYMTools
直接以zip的方式下载下来,是一个dmg的安装文件,直接安装就可以用。 -
需要用.dSYM文件,不能用.xcarchive文件。因为.xcarchive文件中有很多.dSYM文件,包括很多第三方库。虽然作者说用.xcarchive文件也可以,但是我试下来是不行的。
![](https://img.haomeiwen.com/i1186939/009539086ae461d9.png)
-
至于怎么导出.dSYM文件,可以参考Bugly的说明文档
通过Xcode找回 -
关于UUID:符号表文件(.dSYM文件)与crash文件中都有UUID。并且现在都是动态库。我们的APP,第三方库,还有系统库,都有相应的UUID,这个要区分开来。
![](https://img.haomeiwen.com/i1186939/71630c1db9949c64.png)
![](https://img.haomeiwen.com/i1186939/6bccb64f3cea62d7.png)
- 两个地址:基地址 + 偏移量 = 目标地址;(其中偏移量是10进制数表示的)
很奇怪,友盟和Bugly给出的“基地址”和“目标地址”不一样;但是通过工具找到的崩溃点代码是一模一样的。当然两者的偏移量是一样的。
![](https://img.haomeiwen.com/i1186939/c18f87c32197e574.png)
![](https://img.haomeiwen.com/i1186939/ba3a73bc3b1c2ad2.png)
![](https://img.haomeiwen.com/i1186939/5731a194b510bdcb.png)
.dSYM文件上传
把符号表文件(.dSYM文件)上传,可以帮助我们把崩溃点的地址转化为能看懂的代码。(其实就是起到上面讲的dSYM工具的作用)
- Bugly提供了一个工具,并且提供了工具的下载链接,里面有使用说明,照着做就好了。工具下载地址
![](https://img.haomeiwen.com/i1186939/f73c0e399fc2a49c.png)
- 友盟的没有找到相关的工具,所谓的API上传方式也没有找到相关说明,不知道怎么做。手动上传的地方到是找到了。
![](https://img.haomeiwen.com/i1186939/ea1d981ce0435a20.png)
- 上传了符号表文件之后,就能正确解析了。能够看到崩溃点的代码。
![](https://img.haomeiwen.com/i1186939/f7fadf197b6cde68.png)
![](https://img.haomeiwen.com/i1186939/be7fe4cc7237dafc.png)
关于BitCode
- 如果是Ad-Hoc的方式导出,那么就应该关闭BitCode,否则的话符号表文件会失效。Bugly干脆就上传不了。友盟的话能上传,但是解析不了。大神的DSYM工具也失效了。
![](https://img.haomeiwen.com/i1186939/831c6d718f181984.png)
- 如果是发布到苹果市场,保持默认的全打钩不要动就好了。也就是打开Bitcode,同时上传符号表文件。苹果后台会结合Bitcode重新生成符号表文件,要下载才能上传到bugly或者友盟的后台。
![](https://img.haomeiwen.com/i1186939/cc6f4da10d9fd134.png)
![](https://img.haomeiwen.com/i1186939/9e561bc2e38f26b9.png)
- 总之,如果开了Bitcode,那么本地的(也就是从.xcachive拿出来的)符号表文件就失效了。所以,通过Ad-Hoc方式分发的,就不要开Bitcode了。当然,不开BitCode会导致安装包变大很多,不利于APP瘦身。
网友评论