自从上线完客服系统以后就可以及时得到用户的反馈信息,因为之前发版比较频繁并且都是大版本更新和强制更新(强制更新方案详见:关于iOS App 版本控制以及强制更新),所以对Crash关注度不大,随着版本稳定,线上的崩溃率就要重视起来了。今天记录一下如何查看线上App的崩溃信息以及一些第三方Crash监控工具的对比。
-
上报错误信息
App上线以后苹果就会自动捕捉崩溃信息,当App出现Crash后iOS系统就会记录崩溃日志并上传到Appple的服务器。前提是需要用户同意 “与应用开发者共享”。
步骤为 设置->隐私->诊断与用量->与应用开发者共享
-
查看崩溃次数
上线运行一段时间后就可以登录iTunes Connect查看。登录后点击App分享
选择要查看的App
选择App
点击右下角的崩溃
崩溃.png 错误率 分版本查看 分日期查看
根据不同的筛选条件确定Crash的的版本和日期。
确定完版本和日期后并不能在iTunes Connect中查看崩溃日志。具体信息还要回到Xcode中完成。
-
查看具体崩溃信息
Xcode打开App,选择Window->Organizer
选择右边的Crashes
Crashes我这里选择我的线上版本,崩溃信息就出现了(此时需要联网)
Paste_Image.pngUIKit 开头是应该是无法定位的错误,哪儿红儿哪一行就是错误信息。这个错误是因为使用UIScrollview的Category进行键盘隐藏而产生的Crash。当使用中文手写键盘输入就会出现这种情况,我会再写一篇博客介绍这个问题。
可定位的错误信息
可定位错误点击箭头选择App打开就会打开Xcode,然后把当时的线程呈现出来。
在项目中查看
在项目中查看最好恢复到发布时候的版本。代码保持一致性。有时候项目中查看定位并不准确,但是有这些当时崩溃的线程,还是有助于我们定位错误的。
但是请注意,官方提供的崩溃信息并不是实时的,只能查看两天之前的崩溃信息。需要实时的可以使用第三方工具。
- 第三方工具监控Crash
第三方工具就太多了。我只说下目前我使用的吧。
- 友盟
- TalkingData
- 极光
- Fabric (推荐)
一般都是使用页面统计功能(统计埋点我自己也做了一套,回头会补上)或者推送功能时候SDK中会带有Crash统计功能就顺手打开了。目前感觉最好用的竟然是极光。。。
因为之前的崩溃是用户反馈的第二天就要解决,但是苹果官方的还没出来,所以要依赖第三方。但是我在友盟和TalkingData上竟然都没找到这个崩溃信息,甚至几天之前的也没有。之前集成完后确实是有上报的。反而在极光上面找到了这个Crash。也不知道是不是这三家同时集成崩溃上报冲突了。
极光的错误上报 错误信息和官方的一致三方集成没什么讲的了,大家看官方文档就行了。多集成几家大家可以做个对比也防止有遗漏。
update:
重点推荐Fabric(已经被Google收购),谷歌出品,必属精品
Fabric官网
福利:
上次看网易放出的大白保护系统,使用runtime进行拦截,防止App Crash。但是源码没有放出,我也会持续关注。
Baymax:网易iOS App运行时Crash自动防护实践
以上。
网友评论