问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

得物App Android Crash治理演进

创作时间:
作者:
@小白创作中心

得物App Android Crash治理演进

引用
1
来源
1.
https://developer.volcengine.com/articles/7322138858596859930

应用程序闪退(Crash)是衡量APP质量的重要指标之一,有效的Crash治理不仅能提升用户体验,还能降低用户流失率。本文详细介绍了得物App在Android客户端Crash治理方面的演进历程,从最初的简单监控到建立完整的Crash处理平台,展现了得物App在Crash治理方面的技术积累和实践经验。

第一阶段:石器时代

在Crash治理的初期阶段,得物App主要依靠第三方平台Bugly来采集Crash信息,并建立了基本的Crash指标体系。每天定时检查Crash情况,并在版本发布后观察Bugly上的Crash问题,通过堆栈信息定位到代码作者。Crash表格需要手动整理并发送到相关群组和邮件,处理流程较为繁琐。

第二阶段:青铜时代

灰度熔断机制(Crash告警)

为了保证灰度版本的质量,得物App引入了灰度熔断机制。通过升级SDK,基于Crash SDK监控的Hook上报数据到SLS,当Crash达到阀值时自动停止灰度。

日志文件SDK&规范(Crash排查)

为了获取更详细的Crash信息,得物App新增了日志SDK,并制定了日志打印规范:

  • VERBOSE,DEBUG日志仅打印到控制台(方便调试打点)。
  • INFO,WARN,ERROR日志打印同时会被记录到文本日志(关键操作,线上问题定位)。
  • BUG日记记录同时会提交到Bugly及阿里云(重要错误及时上报,测试环境抛出异常暴露问题)。

自动解析统计(Crash统计)

建立了基于Bugly的Crash处理机制:

  • 新同学加入时加入BuglyId映射表。
  • 每个灰度版本发布完成后,需要对Bugly的Crash问题进行追踪,找到Top的问题记录相关数据并分发给相关责任人进行处理。
  • 相关同学处理完问题后对问题的处理进行一个简单的描述及标记。
  • 分发这部分无法自动化,需要这边查看原因确认代码是谁提交的,才能将Crash状态变更到处理中并将其指派给相关同学,或者小伙伴主动上Bugly认领一下Crash问题。
  • 分发完Bug后 会去跑一个脚本,生成Crash信息统计表格填在文档上。

第三阶段:铁器时代

应用评论Crash通知(Crash告警)

发现了一种Crash场景,发生Crash时Crash SDK还没初始化,Crash平台上没展示,但是应用市场有了Crash评论。所以去做了实时监控四大应用市场Crash评论用于及时发现Crash问题。

配置中心(Crash兜底)

为了减少线上问题,上线一个新功能时需要一个配置用于新功能的逐渐放量或者功能回退。

埋点上报SDK(Crash排查)

本地日志上报有实时性不高,捞取成功率不高,无法支持多维度问题数据统计的功能。埋点上报模块与其进行了互补,及时发现线上问题和统计问题指标。

异常数据补充上报(Crash排查)

  • BPM SDK:在埋点SDK基础上封装了业务异常打点SDK增加了业务模块,流量控制的流程。
  • 堆栈缺少主要日志:通过使用AspectJ,ASM等字节码修改框架Hook到具体报错的URL或Activity跳转信息。
  • ART OOM信息补充上报:采集当前进程内存状态、线程问题、FD问题、图片问题等信息。
  • 灰度内存超过阀值的部分Wi-Fi设备HPROF文件的上送问题分析

三方库问题处理(Crash保护)

提供了du_aspect模块把一些第三方库的Crash通过字节码插桩方案try catch降级为异常上报。

升级64位so(Crash治理)

通过OOM信息补充上报发现VmSize触顶的场景占比特别大。升级64位后占比大幅下降。

第四阶段:蒸汽时代

异常埋点平台(Crash排查)

建立了异常埋点平台,规范了异常埋点流程,实现了埋点管理。

文件回捞(Crash排查)

开发了文件回捞SDK,支持App内任意文件路径下发回捞,主要用于异常文件Tombstone的补充回捞和业务线独立日志的回捞需求。

Crash安全中心(Crash数据支持,Crash降级兜底)

  • Crash降级兜底:通过配置中心实现功能的逐渐放量或回退。
  • 分析工具(Crash排查)
  • 堆栈反混淆工具:可以查看每一行堆栈对应组件版本号、组件负责人、代码修改认等信息,提高问题定位速度。
  • 多维度日志分析:通过设备ID、用户ID快速查看异常日志,支持开发和测试人员快速排查问题。
  • 关联OSS文件:支持Crash后本地日志文件和ART OOM场景HPROF文件的查看。

自建Crash平台(Crash告警,Crash分发,Crash统计,Crash 处理流程优化)

建立了完整的自建Crash平台,优化了异常Crash处理流程,实现了自动化监控、告警和分发。

通过以上四个阶段的演进,得物App的Android客户端Crash率从千分之八降低到了万分之三,展现了系统化、精细化的Crash治理能力。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号