1. 程式人生 > >Android odex優化提高首次開機速度

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秒左右。