一、怎么记录安卓app的启动速度
1)Android Profiler,可以设置从启动开始监控,得到cpu内存等信息
2)Perfetto UI,开发者模式新增加了一个“系统跟踪”的功能,只有安卓10可以用
3)MethodTracing Debug.startMethodTracing() 和 stopMethodTracing() 方法来开始和结束 Tracing。Traceview打开
4)profilo可以做线上监控
二、启动优化方法
1、I/O 优化
启动过程不建议出现网络 I/O,相比之下,磁盘 I/O 是启动优化一定要抠的点
2、数据重排
Dex 文件用的到的类和安装包 APK 里面各种资源文件一般都比较小,但是读取非常频繁。我们可以利用系统这个机制将它们按照读取顺序重新排列,减少真实的磁盘 I/O 次数。
3、类重排
启动过程类加载顺序可以通过复写 ClassLoader 得到。然后通过 ReDex 的Interdex调整类在 Dex 中的排列顺序
4、资源文件重排
它们都是通过修改 Kernel 源码,单独编译了一个特殊的 ROM,支付宝安装包重排布优化 Android
适合出海项目,低端机型
5、类的加载
加载类的过程有一个 verify class 的步骤,可以通过 Hook 来去掉 verify 这个步骤,Dalvik比较好用,art平台比较复杂,需要兼容。这对启动速度有几十毫秒的优化。其实最大的优化场景在于首次和覆盖安装时。
6、加固会对启动速度有影响
7、支付宝GC抑制,Dalvik比较好使,Android 5.0 以下的系统占比已经不高,其次这也会带来一些兼容性问题。一是设备厂商没有加密内存中的 Dalvik 库文件,二是设备厂商没有改动 Google 的 Dalvik 源码。PLT hook,阻止gc线程唤醒。
8、无需等待 ODEX 优化的直接 DEX 加载方案,优化低端 Dalvik机型
来源:
网易:https://www.jianshu.com/p/e0d2b6347414
支付宝:https://mp.weixin.qq.com/s/79tAFx6zi3JRG-ewoapIVQ
https://mp.weixin.qq.com/s/ePjxcyF3N1vLYvD5dPIjUw
淘宝:
抖音: