记录一次解决App崩溃问题的解决方案

简介: 有些时候遇到crash的情况,而且无法复现,作为开发者确实挺头疼的,使用友盟的U-APM产品,可以帮助我们更快速地定位问题,总结相应的情况,帮助我们更主动地去发现问题、解决问题,进而提高用户的体验。

一、问题背景

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

二、遇到的挑战

由于我们是创业型的公司,没有太多的预算购买很多种类的测试机,安卓机每个品牌只有一个型号的测试机,而且系统版本也没办法覆盖完全,苹果机也是一样的情况。出现闪退的情况,光靠用户的描述是比较难定位到错误的地方,用户内存占用过多?磁盘空间不足?抑或是逻辑上的问题导致的闪退?而且,我们使用的是混合开发,框架使用的是ionic,大部分页面和逻辑都是混合开发。由于App涉及到蓝牙连接相关的SDKDFU固件升级,而ionic在这一块没有封装相应的接口,所以这部分的内容我们还是通过在原生上面进行开发,再使用ionic去调用原生的内容。这更加增加了debug的难度。

三、解决问题的步骤

为了找到导致crash的地方,我们先排除掉机器内存和磁盘空间不足导致的问题,我们通过上传用户手机的内存总大小、剩余内存的大小、磁盘总空间和磁盘剩余空间,排除掉了这个因素。之后我们就考虑是不是因为代码逻辑上的一些问题导致的,于是我们尝试使用友盟的U-APM产品,它里面有一个很好的崩溃分析工具,可以看到crash的一些信息,包括错误的类型、具体哪一行导致了报错、出现的频率和机器相关的参数,这对我们的debug有很大的帮助,于是我们尝试安装友盟的SDK,设置了邮件和钉钉的错误提醒,并发布了新版本APP。两天后,这部分用户再次打开App之后,也出现了授权权限之后闪退的情况,与此同时,我们也收到了来自友盟的错误提醒邮件和钉钉提醒。点击进去之后发现U-APM帮忙定位了错误的地方,如下图,在MainActivity.java的第93行,出现了ArrayIndexOutOfBoundsException,也就是数组下标超过了数组长度-1,而且具体的crash时间和机器参数也同时总结了出来,帮我们总结了很有用的信息,我们发现这个现象只有在荣耀系列的手机里才会出现,于是我们加强了荣耀系列手机的测试,在一次手动在系统中关闭权限之后打开app的用例中重现了这个问题,也找到了根本的原因,因为当用户手动关闭某些权限的时候,回调返回的是一个空数组,而我们去取下标为1的值的时候就会导致报错了。

1.jpg

修复之后我们继续使用友盟去观察这个问题有没有解决,自从修复了这个问题并发布了新版本之后,就不会再报这个错了。

四、问题总结

有些时候遇到crash的情况,而且无法复现,作为开发者确实挺头疼的,使用友盟的U-APM产品,可以帮助我们更快速地定位问题,总结相应的情况,帮助我们更主动地去发现问题、解决问题,进而提高用户的体验。



作者:梁立坤

 

相关文章
|
Web App开发 iOS开发
无法安装此app,因为无法验证其完整性 ,解决方案
无法安装此app,因为无法验证其完整性 ,解决方案
|
XML Java Android开发
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
1627 0
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
|
2月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
749 1
|
28天前
|
人工智能 小程序 搜索推荐
uni app下开发AI运动小程序解决方案
本文介绍了在小程序中实现AI运动识别的解决方案。该方案依托于UNI平台,通过高效便捷的插件形式,实现包括相机抽帧控制、人体识别、姿态识别等在内的多项功能,无需依赖后台服务器,大幅提高识别效率和用户体验。方案内置多种运动模式,支持自定义扩展,适用于AI健身、云上赛事、AI体测等多场景,适合新开发和存量改造项目。
|
2月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
251 1
|
5月前
|
消息中间件 Android开发 开发者
🔍深度剖析Android内存泄漏,让你的App远离崩溃边缘,稳如老狗!🐶
【7月更文挑战第28天】在 Android 开发中,内存管理至关重要。内存泄漏可悄无声息地累积,最终导致应用崩溃或性能下滑。它通常由不正确地持有 Activity 或 Fragment 的引用引起。常见原因包括静态变量持有组件引用、非静态内部类误用、Handler 使用不当、资源未关闭及集合对象未清理。使用 Android Studio Profiler 和 LeakCanary 可检测泄漏,修复方法涉及使用弱引用、改用静态内部类、妥善管理 Handler 和及时释放资源。良好的内存管理是保证应用稳定性的基石。
105 4
|
7月前
|
移动开发 网络协议 安全
HTML5页面被运营商DNS问题及解决方案,app中h5页面源码的获取
HTML5页面被运营商DNS问题及解决方案,app中h5页面源码的获取
165 4
|
7月前
|
监控 数据库 数据安全/隐私保护
第三方授权的应用苹果审核被驳回解决方案和app版本更新
第三方授权的应用苹果审核被驳回解决方案和app版本更新
124 0
|
7月前
|
iOS开发
app启动时的闪屏页显示不全问题的两种解决方案
app启动时的闪屏页显示不全问题的两种解决方案
116 0
|
7月前
|
定位技术 开发工具 iOS开发
ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案
ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案
69 0

热门文章

最新文章