[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的大小限制。