|
/

技术实践第五期|如何通过友盟+应用性能监控定位APP闪退问题

官方小二
发布于 2 年前
19243
应用性能监控 U-APM
其他

*更新于2022-3-4*

亲爱的开发者们,


大家好,本期将由一位友盟+的用户小哥哥来为开发者们详细解析他在使用友盟+应用性能监控时是如何定位app闪退问题的


下面我们来看一看小哥哥具体遇到了什么问题,又是如何解决的呢?开发者们会不会也遇到了同样的问题呢?



*作者:llkevin13579*


遇到的问题

我公司开发了一款App,一小部分用户反映在开启APP授权通知权限之后会出现闪退的情况,但是我们通过几台测试机的测试,都无法复现这个问题,因此感到这个问题比较棘手。



发现工具


无意间看到友盟+U-APM产品,可以几行代码就集成进去,很方便。平时APP一旦发生crash,这个产品可以马上收集到错误信息,并上报到控制台,并发出邮件提醒。控制台也提供了很多强大的功能,可以看到设备的信息、归纳一样内容的错误信息,对于我遇到的这个问题提供了一个很好的解决方案。


解决方案


我们先排除掉机器内存和磁盘空间不足导致的问题,我们通过上传用户手机的内存总大小、剩余内存的大小、磁盘总空间和磁盘剩余空间,排除掉了这个因素。


之后我们就考虑是不是因为代码逻辑上的一些问题导致的,于是我们尝试使用友盟+的U-APM ——崩溃分析功能,可以看到crash的一些信息,包括错误的类型、具体哪一行导致了报错、出现的频率和机器相关的参数,这对我们的debug有很大的帮助,于是我们尝试安装友盟+的SDK,设置了邮件和钉钉的错误提醒,并发布了新版本APP。


两天后,这部分用户再次打开App之后,也出现了授权权限之后闪退的情况。同时,我们也收到了来自友盟的错误提醒邮件和钉钉提醒。


U-APM定位了错误的地方,在MainActivity.java中的一行代码中出现了ArrayIndexOutOfBoundsException,也就是数组下标超过了数组长度-1,具体的crash时间和机器参数也同时总结了出来,帮我们总结了很有用的信息。


我们发现这个现象只有在荣耀系列的手机里才会出现,于是我们加强了荣耀系列手机的测试,在一次手动在系统中关闭权限之后打开app的用例中重现了这个问题,也找到了根本的原因,因为当用户手动关闭某些权限的时候,回调返回的是一个空数组,而我们去取下标为1的值的时候就会导致报错了。


修复之后我们继续使用友盟+U-APM去观察这个问题是否解决,自从修复了这个问题并发布了新版本之后,再也没有这个报错了。



以上是来自友盟+用户的原声。希望更多的开发者们能够受益于友盟+,无论在工作中,还是生活中,友盟+的产品服务及友盟+社区都期望能够最大限度地解决开发者们遇到的技术问题。为开发者提供便捷好用的产品服务是我们的使命。

1个回答
 
2 年前

点赞,👏👏👏👏👏👏👏👏👏👏

Loading ...
登录社区,分享你的经验