前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android Gradle 插件】DexOptions 配置 ⑤ ( additionalParameters 属性配置 | --minimal-main-dex 参数最小化主 dex 字节码 )

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

作者头像
韩曙亮
发布2023-03-30 15:23:10
4030
发布2023-03-30 15:23:10
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

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 配置原型 :

代码语言:javascript
复制
    --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 " 文件 , 配置如下内容 :

代码语言:javascript
复制
com/example/classloader_demo/MainActivity.class
在这里插入图片描述
在这里插入图片描述

3、配置 android#buildTypes

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

代码语言:javascript
复制
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 字节码中 ;

代码语言:javascript
复制
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 文件中 ;

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、dx --minimal-main-dex 参数
    • 1、参数简介
      • 2、配置 main dex 保留文件
        • 3、配置 android#buildTypes
          • 4、配置 android#dexOptions#additionalParameters 参数
            • 5、分包效果展示
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档