Android odex優化提高首次開機速度
現在很多Android都需要預裝很多apk,這些apk主要在/system/app,/system/priv-app/,/system/vendor/app等目錄下。如果沒有做odex優化,在首次開機時,systemService.java 會呼叫PackageManagerService.java對這幾個目錄下的apk多dexopt的優化,生成oat檔案。apk越多,首次開機的時間也就越長。首次開機時,通常在手機上開到正在優化第*個應用,總共 * 個應用。就是在對apk做dexopt的優化。
如果我們要提高首次開機的速度,可以做如下設定:
1、在工程程式碼 /device/qcom/專案名/BoardConfig.mk 修改下面兩個設定:
修改下面兩個設定,在編譯時,對jar,apk都做odex優化,生成對應的odex檔案
DISABLE_DEXPREOPT := false
WITH_DEXPREOPT := true
如果不想在編譯時做odex優化,可以註釋掉這兩行,或者把這兩個值設定成:
註釋:
#DISABLE_DEXPREOPT := false
#WITH_DEXPREOPT := true
或:
DISABLE_DEXPREOPT := true
WITH_DEXPREOPT := false
2、如果設定了:
DISABLE_DEXPREOPT
:= false
WITH_DEXPREOPT := true
在編譯的時候,/system/framework/目錄下面的jar包,和/system/app,/system/priv-app/,/system/vendor/app下面的apk檔案,都會在編譯時,做odex優化。
如果不想jar包做odex優化,可以在/buid/core/java_library.mk檔案中設定:
LOCAL_DEX_PREOPT := false
這樣在編譯時,jar包就不會做odex優化。
3、在實際開發過程中,有些apk如果做了odex優化,可能會出問題,可以通過在apk的編譯目錄Android.mk檔案中新增:
LOCAL_DEX_PREOPT := false
這樣該apk就不會做odex優化。
如果jar包和apk都做odex優化,在我的專案中,原來的首次開機速度3分鐘左右可以提高到1分05秒左右。