Android Gradle 插件DexOptions 配置 ⑤ ( additionalParameters 属性配置 | --minimal-main-dex 参数最小化主 dex 字节码 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Gradle 插件DexOptions 配置 ⑤ ( additionalParameters 属性配置 | --minimal-main-dex 参数最小化主 dex 字节码 )相关的知识,希望对你有一定的参考价值。

文章目录

Android Plugin DSL Reference 参考文档 :





一、dx --minimal-main-dex 参数



DexOptions ( build.gradle#android#dexOptions ) 文档位置 : https://google.github.io/android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.DexOptions.html



1、参数简介


dx 工具的 --minimal-main-dex 参数指的是 最小化生成 主 dex 文件 , 也就是只有我们配置的必须放在 main dex 中的类才放入 , 其它的类放到第二个分包 classes2.dex 中 , 也就是将少数的类封装到 main dex 中 , 大部分类封装到其它的 dex 文件中 ;

只有必须在 main dex 文件 classes.dex 的类才封装进去 , 如 dalvik 虚拟机 , java.utils 包中的类 , android.os 包中的相关类 , 还有我们配置的类 等等 ;


在插件化 / dex 加密 中经常使用该配置 , 将宿主应用 / 壳应用 相关的类封装到 main dex 中 , 将其它类封装到其它的 dex 文件中 ;


–minimal-main-dex 配置原型 :

    --minimal-main-dex: only classes selected by --main-dex-list are to be put
    in the main dex.


2、配置 main dex 保留文件


在 app 目录下 , 创建 " keep_in_main.txt " 文件 , 配置如下内容 :

com/example/classloader_demo/MainActivity.class


3、配置 android#buildTypes


在 " build.gradle # android # buildTypes # debug " 下 , 配置 多 dex 以及保留文件 ;

android 
    buildTypes 
        debug 
            debug 
                multiDexEnabled true
                multiDexKeepFile file('keep_in_main.txt')
            
        
    


4、配置 android#dexOptions#additionalParameters 参数


在 " build.gradle # android # dexOptions # additionalParameters " 下 , 配置 --minimal-main-dex 参数 , 使 main dex 字节码文件最小化 , 即保留必须的类 , 其它的类全部放到 classes2.dex 字节码中 ;

android 
    buildTypes 
        debug 
            debug 
                multiDexEnabled true
                multiDexKeepFile file('keep_in_main.txt')
            
        
    

    dexOptions 
        additionalParameters '--minimal-main-dex'
    


5、分包效果展示


效果展示 : 查看编译后的 apk 文件 , 在 主 dex 字节码文件 classes.dex 中 , 只有必要的文件 , 如下图所示 ;

其中就包括了我们在 " keep_in_main.txt " 文件中配置的 com/example/classloader_demo/MainActivity.class 字节码类 ;

与应用启动无关的 , 非必要的 Java 类 , 都打包到了 classes2.dex 文件中 ;

以上是关于Android Gradle 插件DexOptions 配置 ⑤ ( additionalParameters 属性配置 | --minimal-main-dex 参数最小化主 dex 字节码 )的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 插件Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ⑥ ( 在 buildSrc 模块中依赖 Android Gradle 插件 | 完整代码示例 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ⑥ ( 在 buildSrc 模块中依赖 Android Gradle 插件 | 完整代码示例 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ② ( buildSrc 目录中实现 Gradle 插件 | 实现 Gradle 插件代码 | 模块引入插件并编译 )

Android Gradle 插件Android Module 模块 build.gradle 构建脚本 Groovy 语法分析 ① ( Gradle 二进制插件引入 | Gradle依赖配置 )

Android Gradle 插件Android Module 模块 build.gradle 构建脚本 Groovy 语法分析 ① ( Gradle 二进制插件引入 | Gradle依赖配置 )