【Android】ANR监控治理技术方案

一、 背景

  • 1、 bugly针对crash监控做的比较好,但是对anr监控,早期版本监听 /data/anr 目录的变化可以拿到数据,但是现在高版本已经没有权限监听此目录,当前数据非常少,结合历次数据来看对我们解决ANR问题没有任何帮助。
  • 2、 当前ANR数据主要来自手机厂商系统监控得到的的Anr Top数据excel,因为他们是在系统层面做了监控,数据准确性相对第三方比较高,但是依赖于手机厂商测试人员提供给我们数据,不是万全之策,因为随时有断供的风险。

二、 目标

要求ANR率在万5之下,我们目前已经到了万10,明确超标了。

三、技术选型

3.1 OPPO系统ANR监控

由于OPPO系统监控ANR数据有比较高的准确性,目前可以想到的技术方案是由OPPO监控平台APM开放ANR数据查询接口数据给阅文,由阅文后台去查询获取。做一个ANR实时数据呈现,通过这个ANR数据帮助我们去监控和解决ANR问题。

目前已知这个方案行不通。OPPO侧有数据安全要求,禁止外部实时查询此数据。

只能是一个版本查一次,或者一周查一次。可以建立一个机制,要求OPPO一周提供一次TOP100的ANR数据excel,协助我们解决ANR问题。

3.2 谷歌官方严苛模式StrictMode预防ANR

严苛模式StrictMode将报告与线程及虚拟机相关的策略违例。一旦检测到策略违例policy violation,你将获得警告,其包含了一个栈trace显示你的应用在何处发生违例。你可以强制用警告代替崩溃crash,也可以仅将警告计入日志让你的应用继续执行。StrictMode是一个十分有用的类,它可以很方便地应用于检查Android应用程序的性能和存在的问题。当开启这个模式后,开发者能很好地检查应用中存在的潜在问题。
现状:当前版本没有开启,此特性可利用起来,在debug版本开启。

3.2 第三方开源ANR监控方案
框架xCrashmatrixBlockCanaryacraANR-WatchDog
社区热度 2.9K9.9K6.3K5.9K2.4k
出品方爱奇艺微信个人开发者国外开发者国外开发者
维护情况仍在维护仍在维护已无人维护仍在维护已无人维护
技术原理linux信号捕获linux信号捕获+慢函数监控handler监控ANR消息打印看门狗监控看门狗监控
优点成熟不易裁剪成熟可裁剪可作为补充手段国外成熟兼容性好
缺点引入体积过大引入So监控原理过时无中文,难定制捕获ANR会有很多疏漏

综合分析,matrix的功能成熟可裁剪的特性,并且在微信大规模应用过,而且仍然在维护,决定引入matrix。

3.3 Matrix监控功能,选择性引入Trace Canary

Matrix-android 当前监控范围包括:应用安装包大小,帧率变化,启动耗时,卡顿,慢方法,SQLite 操作优化,文件读写,内存泄漏等等。

  • ● APK Checker: 针对 APK 安装包的分析检测工具,根据一系列设定好的规则,检测 APK 是否存在特定的问题,并输出较为详细的检测结果报告,用于分析排查问题以及版本追踪
  • ● Resource Canary: 基于 WeakReference 的特性和 https://github.com/square/haha 库开发的 Activity 泄漏和 Bitmap 重复创建检测工具
  • ● Trace Canary: 监控ANR、界面流畅性、启动耗时、页面切换耗时、慢函数及卡顿等问题
  • ● SQLite Lint: 按官方最佳实践自动化检测 SQLite 语句的使用质量
  • ● IO Canary: 检测文件 IO 问题,包括:文件 IO 监控和 Closeable Leak 监控
  • ● Battery Canary: 监控 App 活跃线程(待机状态 & 前台 Loop 监控)、ASM 调用 (WakeLock/Alarm/Gps/Wifi/Bluetooth 等传感器)、 后台流量 (Wifi/移动网络)等 Battery Historian 统计 App 耗电的数据
  • ● MemGuard 检测堆内存访问越界、使用释放后的内存、重复释放等问题

三、 落地方案

在这里插入图片描述

1、在我们服务端开发人力有限的情况下,采用matrix 采集 +严苛模式strickMode监控采集警告+ bugly上报数据+ bugly呈现数据的总体架构。

2、把anr数据,慢函数,打包成异常通过 CrashReport.postCatchedException()上报到bugly的错误, 在数据后台查看错误。

3、由于监控成本会影响到APP运行性能,所以无法在线上进行监控,控制在debug模式下测试阶段下进行,防止影响线上。

其它问题

线上监控加imei监控
安全合规问题
bugly冲突问题
包体积大小问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值