您的位置:首页 > 移动开发 > Android开发

Android odex优化提高首次开机速度

2017-06-30 09:20 441 查看
      现在很多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秒左右。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: