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 转换的选项。通过这个对象配置的选项是:
启用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文件定义