阅读 128

大厂Android启动优化- 5 防劣化规范流程

前面几章我们介绍了指标的定义,相关实践优化,取得了较好的成果,优化也趋近于瓶颈。在优化过程中我们也遇到了大量的问题,比如每个版本几百次的代码合入,导致优化的效果劣化,如何规范化流程,保障优化效果等是我们面临比较严峻的问题。
在大的团队,各种开发组错综复杂,推动问题成本高,防劣化我们更希望更前置的发现问题,避免代码合入后或者带入线上后才发现问题,再推动业务组去修复。

1 CodeReview

前面几章我们也讲到了启动框架,通过启动框架改造后,所有的启动任务管理都放置在一个module中,将module拆分出出来,作为一个单独的aar方式放置到主工程中,所有的开发修改启动库的代码都通过提交PR的方式,经过代码codeview的方式合入。
通过代码codeview的方式的话能发现明显的问题,但是对于一些比较隐蔽的问题我们就比较难发现,下面介绍几种出现问题比较大概率的一些情况监测。

2 自动化

在代码合入之前通过自动化测试,前置检测是否有问题。

1 线程和IO监测

由于我们是模块化开发,启动任务内调用的是一个接口,而实现是再对应的业务module里面,所以对于实现类的修改我们没办法敏感的发现,实现类内创建线程或者操作大IO等问题对启动的影响较为明显,基于这点,我们采用数据监控方式,通过数据对比设定卡口。 腾讯开源的工具也提供了多个监控方案 github.com/Tencent/mat… ,监测可以通过插装、hook等多种方式去处理。
我这里简单出来采用hook的方式去监控。github.com/tiann/epic , 比如线程的创建,我们可以通过线程hook Thread.start方法,IO的读取量我们监控FileStream相关的api去操作。
通过工具,我们记录启动过程中的线程创建和IO操作,设置基准的数据,在后续的问题分析中快速对比发现问题。

2 启动多阶段埋点

第一章中我们有介绍启动的几个阶段1 数据和架构设计,对启动的几个阶段进行数据埋点,在每次主工程代码合入的时候,自动化构建使用云真机跑启动用例,对比数据。

3 视频分帧

之前我们有介绍,通过自动化,启动录制视频,然后将视频分帧,通过算法筛选出点击帧和渲染完成帧。image.png

遇到的问题

在自动化过程中我们遇到最大的问题是数据波动,数据波动无法保证结果的可靠性,导致信服力降低,数据消费意愿下降。
针对这类问题我们采用几个方案。

  • 对于实验室机型只做启动测试用例。

  • 每次保证测试环境是一致的。

  • 每次检测跑多次数据。

总结

至此,启动优化的系列文章已经介绍完成,主要包含几部分:架构设计、指标设计、实战优化,防劣化,掌握这几部分我觉得基本上已经OK了,脚踏实地的解决业务场景问题,对于非常黑科技的东西经常会华而不实。
对于优化我自己的心得就四个字:胆大心细,对于历史问题我们有胆魄去重构解决,在解决的过程我们要心思细腻,不要出现线上大故障,通过AB的手段逐渐发布。

最后如果有给你带来帮助,帮忙点个follow,后面应该还会继续带来其他系列实战过的优化文章。


作者:Caij
链接:https://juejin.cn/post/7022564712231469064


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐