d8&dx命令使用
d8 命令:
d8 是dx的升级版,是一种命令行工具,Android Studio 和 Android Gradle 插件使用该工具来将项目的 Java 字节码编译为在 Android
设备上运行的 DEX 字节码,该工具支持您在应用的代码中使用 Java 8 语言功能。工具位于SDK安装目录下的build-tools下。
输入字节码可以是 *.class 文件或容器(例如 JAR、APK 或 ZIP 文件)的任意组合。您还可以添加 DEX 文件作为 d8 的输入,
以将这些文件合并到 DEX 输出中,这在要包含增量构建的输出时很有用。
编译 DEX 字节码时在其中包含调试信息,例如调试符号表。此选项默认处于启用状态(基本不需要)
–debug
正式编译,编译 DEX 字节码时不包含调试信息(一般加上)
–release
指定生成的dex路径
–output
指定指向 Android SDK 的 android.jar 的路径。
–lib
指定 d8 在编译项目的 DEX 文件时可能需要使用的类路径资源。特别是在编译使用 Java 8 语言功能的字节码时,d8 会要求您指定特定的资源。
(一些额外的类资源,比如自定义或者第三方库)
–classpath
指定您希望 DEX 输出文件支持的最低 API 级别。
–min-api number
停用 Java 8 语言功能。仅当您不想编译使用 Java 8 语言功能的 Java 字节码时,才可使用此标记。(不支持java8时使用)
–no-desugaring
指定列出 d8 应包含在主 DEX 文件中的类的文本文件,该文件的名称通常为 classes.dex。也就是说,如果您不使用此标记指定类列表,
d8 将无法保证主 DEX 文件中会包含哪些类。(看情况使用,一般全合并时不需要,分dex时需要)
–main-dex-list
查看d8版本。
–version
实例:
d8 --release ./aapt/my.jar --output ./dex/ --lib C:\Users\LaiYing\AppData\Local\Android\Sdk\platforms\android-30\android.jar
问题:
1、Output must be a .zip or .jar archive or an existing directory
输出必须是.zip或.jar存档文件或现有目录(新建一个输出目录,默认生成的文件名为classes.dex)
dx 命令:
生成dex
–dex
跳过方法优化。生成的dex文件未优化,但会快速生成。
–no-optimize
忽略错误。
–no-strict
第三方库
–core-library
输出路径
–output
输出日志
–verbose
实例:
dx --dex --verbose --no-strict --output=./dex/ ./aapt/my.jar