Android 预编译优化笔记

做 Android 系统开发,碰到了首次开机会很久的问题,这里针对改善措施做下记录。

以下修改在 6.0 、8.0 上做过验证,是 OK 的。

1.打开预编译优化

修改 device/xxx/xxx/BoardConfigCommon.mk
添加

WITH_DEXPREOPT := true
DEX_PREOPT_DEFAULT := nostripping

去掉 WITH_DEXPREOPT_BOOT_IMG_ONLY := true

#WITH_DEXPREOPT_BOOT_IMG_ONLY := true

WITH_DEXPREOPT := true:开了odex之后,在编译的时候,整个 system image 就会被预先优化。由于在启动时不再需要进行app的dex文件进行优化(dex2oat操作) ,从而提升了开机速度;由于 system image 增大了,需要适当加大 system 分区。

WITH_DEXPREOPT_BOOT_IMG_ONLY := true:只是把 boot image 进行预先优化,主要生成 boot.art 和 boot.oat 。这能显著的减少s ystem image 大小。但是,所有的 app 都需要在第一次启动的时候进行优化,需要花更长的开机时间。将其关闭。

2.单个应用去掉预编译优化

某些应用会依赖一些第三方 jar 包,编译时如果打开了预编译优化,全编译时可能报错无法正常编译。
这时候,针对单个应用,去掉其预编译优化。
具体措施为在应用的编译文件 Android.mk 中添加 LOCAL_DEX_PREOPT := false
意思是此应用不用预编译优化。
这样编译生成的文件没有 oat 文件,也就意味着没有被提前优化。

你可能感兴趣的:(Android,编译,aosp,android)