Crashlytcis - 闪退分析平台

未来已来2018-09-06 09:39
作者:刘家强

“Ken,有用户反馈说闪退啊,你帮忙看看”,
或者收到以下的appstore评价


这些应该是大部分移动开发的同事遇到的一些烦恼。 
这篇文章总结了一下我们团队怎样使用Crashlytics这个平台来做闪退分析的经验,希望对大家有帮助。 
我相信很多同事会遇到类似的问题,就是产品团队会从四面八方收集不同的用户信息,然后直接跟开发的同事说出问题,但是我们开发团队很难根据这些简单的反馈定位和解决问题。这个情况在我们开发第一个云课堂iPad版本的时候出现了,而这个问题困扰了产品和开发团队很久,最后找到Crashlytics这个平台。另外,因为产品方会以产品的功能优先级来判断版本的开发和发布,我们开发团队也会很好地配合产品方提出的版本需求和功能开发。但是,对于突如其来的闪退问题,我们应该怎样判断它们的优先级呢?所以我们开发团队除了把问题找出来和解决之外,还有好几个点需要考虑,然后把考虑的点传达到产品方,让他们可以有更多的信息来做优先级的判断:
  1. 个别闪退的重要级是什么?
  2. 个别闪退的影响范围?
  3. 这个闪退什么时候开始的呢?
  4. 闪退的环境?iOS或者安卓系统,系统版本等等
  5. 每个版本整体的闪退情况怎样呢?需要发布新版本来解决线上的闪退问题吗?
  6. 。。。。。
  7. 最后才是最重要的:闪退报告的分析
那到底Crashlytics怎样可以帮我们去解答这些问题呢?以下就是Crashlytics提供的答案:

1,个别闪退的重要级是什么?
Crashlytics这个平台会收集产品的闪退信息,然后根据每个闪退的问题进行等级(Level)判断(如图(1)),我们开发和产品团队就可以很好地根据这个等级来进行优先级的安排,把最影响用户的闪退问题拿出来修复。
图(1)


2,个别闪退的影响范围?
因为Crashlytics上面的Level是以绝对值来统计的,所以,有时候Level5相对上不是那么紧急。除了Level之外,我们还有另外一个数值可以参考,根据上面图(1),我们可以看到每个闪退对应的受害用户量,我们可以根据这个用户量的统计跟我们自己产品的日活跃进行对比,可以得到一个更好的值来评估优先级。

3,这个闪退什么时候开始的呢?
因为一些闪退不是app应用新版本导致,有可能是其他原因导致的(而这些原因是有时间性的,譬如,某个服务器版本上线后导致),所以,如果知道闪退的开始时间就可以很好地判断是不是中间某些特定事件导致的。
图(2)

4,闪退的环境?iOS或者安卓系统,系统版本等等
遇到闪退的时候,我们也可以通过Crashlytics来获取该闪退的环境,包括第几代iPhone,那个OS版本,内存情况,机器存储空间的情况,用户是否越狱过,另外比较有趣和有用的就是可以看到该闪退是不是用户正在使用app的时候闪的(App In Focus),这个参数也是我们用来判断优先级的其中一个维度,如果闪退主要是发生在app退到后台的时候,优先级会相对降低,因为,对于用户影响的程度会比较低。
图(3)

5,每个版本整体的闪退情况怎样呢?需要发布新版本来解决线上的闪退问题吗?
Crashlytics也会收集app的基础信息,譬如,日活,日新增等的数据,也会根据这个数据统计整体闪退的情况,譬如闪退率(crash free user:没有闪退的用户占比 或者是 crash free session:没有闪退的session比例)。这个占比可以帮助开发和产品组评估是否有必要发布一个hot fix版本去修复部分严重的闪退。这个数据有效地帮助我们监控新版本的稳定性,根据这个数据进行紧急修复,可以在用户投诉前修复相关问题,保持用户对于产品的满意度。


最后,当我们决定要修复闪退的时候,我们需要更详细的callstack来分析闪退的点在哪里,那个文件,哪一行,这些信息Crashlytics已经非常详细地记录下来,我们只要打开闪退的详情页面,整个callstack就在里面。接着就可以根据callstack进行修复。


网易云大礼包:https://www.163yun.com/gift

本文来自网易实践者社区,经作者刘家强授权发布