[DESCRIPTION]
L版本上首次开机慢的问题要如何解决呢?
[SOLUTION]
首次开机慢的原因:
一 L 版本首次开机会提取所有预置apk的odex文件,花费比较多时间。
二 L版本默认开启了加密功能,影响开机时间
解决办法:
一
1
对于开机提取odex文件花费较长时间的问题,请在BoardConfig.mk中定义:
WITH_DEXPREOPT := true
打开这个宏之后,无论是有源码还是无源码的预置apk预编译时都会提取odex文件。
对于64bit的芯片,若apk只有32bit的lib或者只能作为32bit运行,请在预置apk时在android.mk中添加下边的TAG标记此apk为32bit:
LOCAL_MULTILIB :=32
2
若需要在预编译时跳过一些apk的odex提取,可以使用下边的方法:
\build\core\dex_preopt_odex_install.mk中添加:
ifeq ($(LOCAL_MODULE),helloworld)
LOCAL_DEX_PREOPT:=
endif
build_odex:=
installed_odex:=
....
Ifeq包起来的部分为需要添加的,helloworld可替换为需要跳过提取odex的apk的LOCAL_MODULE名字
二 对于加密功能影响开机的部分,可以关闭加密功能
关闭加密功能有两种情况:
1 How to disable defaultencryption in your own image
(1) Modify fstab.{ro.hardware} in‘out’ folder
alps\out\target\product\[project]\root\ fstab.{ro.hardware}
Set the flag back to encryptable for /data
(2) Re-pack boot.img
make ramdisk-nodeps; makebootimage-nodpes
(3) Download the new boot.img byflashtool
2 How to disable defaultencryption in your codebase
a) Modify fstab.{ro.hardware} in yourcodebase
device\mediatek\ [project]\fstab.{ro.hardware}
If the project doesn’t have it ownfstab.{ro.hardware} . Please create it
Modify device.mk to use the modifiedfstab.{ro.hardware} .
Set the flag back to encryptable for/data
b) Re-build boot.img
make bootimage
c) Download the new boot.img by flashtool
实际测试情况:
使用手机:mt6752 L user版本
测试情况:
1 关闭WITH_DEXPREOPT且开启手机加密
首次开机时间:4:40
2 开启WITH_DEXPREOPT且关闭手机加密
首次开机时间:2:16
上述首次开机时间是mtk内部52手机测试时间,仅供参考。
首次开机时间和贵司具体预置的apk的数量有关。
请知悉,谢谢~
注意:
1 请不要预置太多apk,尽量减少不必要的apk,太多apk 会导致开机慢。
2 打开WITH_DEXPREOPT 的后,预置太多apk,会导致system.img 过大,而编译不过。遇到这种情况请调大system.img的大小限制。