为了解决Android首次开机速度过慢这个问题,需要首先了解Android首次开机的时间都消耗在什么地方.
我们可以借助 Bootchart工具进行分析,Using Bootchart on Android
总结起来步骤如下:
优化之后bootchart
可以看出,我们可以通过bootchart清楚的分析出什么地方消耗了首次开机时间!
注意dex2oat进程!
在使用bootchart过程中可能会出错(draw.py,parsing.py,samples.py),尤其是bootchart自带的某些Python文件,可以使用本文结尾的附件进行替换,或者对比进行修改!
frameworks/base/core/java/com/android/internal/os/ZygoteInit.java
注:以上绝大部分是可以通过一个统一的mk进行管理的(常见的/device/vendor/product/product.mk
)
首次开机消耗的绝大部分时间实在PMS中的dex2oat过程中;因此我们考虑在编译过程中就将apk转化成为odex,这样首次开机过程中PMS就不在进行dex2oat的动作,进而可以提升首次开机时间!
在mk文件中添加如下选项(可以考虑在choosecombo的时候设置标志位,使用宏控)!
WITH_DEXPREOPT := true
TH_DEXPREOPT=true
WITH_ART_SMALL_MODE=true
WITH_ART_USE_OPTIMIZING_COMPILER=true
ADDITIONAL_BUILD_PROPERTIES += ro.xxxx=1
original link:
http://blog.csdn.net/peng_cao/article/details/50038971
bootchart usage: http://blog.csdn.net/sckgenius/article/details/23265073