Gradle 中的 dex 是啥

Posted

技术标签:

【中文标题】Gradle 中的 dex 是啥【英文标题】:What is dex in GradleGradle 中的 dex 是什么 【发布时间】:2014-08-05 03:02:36 【问题描述】:

Gradle 或 android 中的 dex 是什么?

在 Gradle 中,dexoptions 是什么意思?

有时我的项目因为某些 dexerrors 而无法编译。 我需要激活 ProGuard 来编译我的 Android 应用程序。

【问题讨论】:

***.com/questions/7750448/dex-file-in-android 【参考方案1】:

在标准的 java 世界中:

当您编译标准 java 代码时:编译器生成 *.class 文件。 *class 文件包含可以在标准 JVM 上执行的标准 java 字节码。

在 Android 世界中:

这是不同的。您使用 java 语言编写代码,但编译器不生成 *.class 文件,它生成 *.dex 文件。 *.dex 文件包含可以在 Android 虚拟机 (dalvik) 上执行的字节码,这不是标准的 Java 虚拟机。

明确一点:android 中的 dex 文件相当于标准 java 中的 class。

所以dexoptions is a gradle object 定义了一些配置此java-code-to-android-bytecode 转换的选项。通过这个对象配置的选项是:

targetAPILevel force-jumbo 模式(启用后允许 dex 文件中包含更多字符串)

启用jumboMode

android 
    dexOptions 
        jumboMode = true
    

【讨论】:

好的,谢谢您的解释!那么ART vm呢?它仍然是 .dex 文件吗?编译 java 代码时,dex 的大小似乎有限。有时我会收到一个 dexError,例如“有太多类需要以 65535 位编译”。即使在调试模式下我也需要激活 proguard,但我无法调试我的应用程序(断点不会因为混淆而停止)你有什么建议给我吗? @psv 查看我对巨型模式的编辑并尝试一下。激活 proguard 可能会减少 dex 文件中的代码量

以上是关于Gradle 中的 dex 是啥的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 插件DexOptions 配置 ④ ( additionalParameters 属性配置 | 使用 BuildType 配置多 dex 机制 )

要在进程中运行 dex,Gradle 守护进程需要更大的堆。它目前大约有 910 MB

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

Unity Gradle Build失败。 DexException:多个dex文件定义

要在进程中运行 dex,Gradle 守护进程需要更大的堆。它目前大约有 1024 MB

Gradle中的新实施关键字是啥[重复]