Android Plugin DSL——DexOptions

2025-10-29 00:12:31 | 中国队世界杯出线 | admin | 9806°c

在Android Gradle插件中,在android内可定义并配置dexOptions,DexOptions对象是用来配置dx选项的(生成dex文件的选项)。

属性

属性名说明additionalParameters执行dx生成dex文件的额外参数列表。对于属性无法设置的参数,可是通过该字段拼接传入,具体参考dx工具介绍javaMaxHeapSize执行dx生成dex是临时设定的-Xmx值,示例: “2048m”。jumboMode在dx(–force-jumbo)中启用巨型模式keepRuntimeAnnotatedClasses将所有带有运行时注释的类保留在旧版multidex中的主dex中。默认情况下,此功能已启用,并且可以解决在较旧的android版本上使用java.lang.reflect.Field.getDeclaredAnnotations时导致应用程序崩溃的问题。对于不使用反射并在其主dex中需要更多空间的应用,可以禁用此功能。maxProcessCount可用于dex的最大并发数,默认 4。preDexLibraries是否预索引库。这会改善增量编译,但是会使得清理编译变得更慢。threadCount执行dx生成dex的进程数量,默认4。dx工具

对于DexOptions中的所有属性,都是传递给dx工具生成dex的配置,dx工具可以在../sdk/build-tools/中找到(其中是指编译器的版本)。可以在命令行中运行dx --help查看更多帮助(如果没有配置环境变量,需要进入dx工具所在目录)。

对于生成dex,使用dx --dex命令,参数可以参考dx --help的输出帮助信息,这里介绍几个常用的参数配置:

--multi-dex 允许在需要的时候生成多个dex文件。这个参数与--incremental互斥,会导致--num-threads被忽略,而且输出仅支持文件夹或者存档文件(压缩文件)。PS:在build.gradle中,可以使用 multiDexEnabled true进行设置--main-dex-list= 主dex中类清单文件,清单列出的文件将会被放入主dex中,是清单文件名(支持相对路径和绝对路径),文件中类名包名分隔符使用/,后缀是.class(示例:com/test/Main.class)--minimal-main-dex 主dex最小化,如果定义了--minimal-main-dex,只有清单文件的类才会被放入主dex中,如果为定义--minimal-main-dex,编译器将自动选择,只将必须的类放到主dex中。--input-list: 输入文件清单。清单文件的每一行必须是.class、.jar、.zip、.apk或者是一个目录。--min-sdk-version= 最小SDK版本

此选项与–incremental互斥,导致–num-threads被忽略,仅支持文件夹或存档输出。

PS:更多的使用方法可以参考dx --help