安卓知识总结---性能篇(启动优化)

一、怎么记录安卓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

淘宝:

https://mp.weixin.qq.com/s?__biz=MzAxNDEwNjk5OQ==&mid=2650403370&idx=1&sn=b4297b138eb7f73c95a6279c3458f025&chksm=83953a32b4e2b3247fc18cbee08a2682d8b09720a1c5fef0c36257ae92b1e201cb1ad3125455&mpshare=1&scene=1&srcid=#rd

抖音:

https://juejin.im/post/5e5b9466518825494b3cd5aa

https://mp.weixin.qq.com/s?__biz=MzI1MzYzMjE0MQ==&mid=2247485101&idx=1&sn=abbbb6da1aba37a04047fc210363bcc9&chksm=e9d0cd4fdea7445989cf26623a16fc8ce2876bf3bda95a5532bb0e5e5b1420765653df0b94d1&mpshare=1&scene=1&srcid=&sharer_sharetime=1565403851018&sharer_shareid=60bd7acea7881a97fbf9a6126d3e88d3#rd

你可能感兴趣的:(安卓知识总结---性能篇(启动优化))