【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 文件中 ;
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/han1202012/article/details/124699567