【发布时间】:2016-12-03 09:44:35
【问题描述】:
那里
我目前正在研究 Ajadx 项目,发现可能有多个 classes.dex 文件。 有没有人知道为什么以及关于它的不断发展的 Android 开发历史? 谢谢!
【问题讨论】:
那里
我目前正在研究 Ajadx 项目,发现可能有多个 classes.dex 文件。 有没有人知道为什么以及关于它的不断发展的 Android 开发历史? 谢谢!
【问题讨论】:
Java 的最大 .dex (Dalvik Executable) 操作(不是 dex 大小)为 4G(意思是 4 GB)。
“multidex enabled”表示系统可以根据需要创建多个 dex 文件。
什么时候进行dex操作? 每当您创建 apk 时都会发生这种情况(意味着,在 apk 构建中)。
最大单个 dex 大小为 65K(意思是 65 KiloBytes)。
注意:如果您的应用程序中有如此多的并发执行,8K dex 文件可以跨越 65K dex 操作。即使您将总(最大)dex 操作大小设置为 4G,您也可能会收到类似的错误。看这张图:
在构建项目中没问题,但是当您尝试构建 APK 时出现此错误。
要解决这个问题,您需要启用 multidex。启用 multidex 后,在构建时,Android Studio 从第一个 65K dex 操作内存生成对应的第一个 dex 文件,从第二个 65K dex 操作内存生成第二个 dex 文件,依此类推。
现在,当您更改 build.gradle 以启用 multidex 时,您可以构建您的 APK。 现在,您的 apk 文件已准备就绪。您解压缩您的 apk 文件并进入该文件夹。您可以看到如下图所示的内容。看这张图
你看,有两个 dex 文件:classes.dex 和 classes2.dex。第一个 classes.dex 文件(在我的示例中)为 8.3MB,它是前 65K 并发 dex 操作的输出。而且,第二个 classes2.dex 文件是 rest dex 操作的输出(我们不确切知道,但我们知道它小于 65K)。
这样一来,整个 dex 文件的整体 dex 操作是 4G(4GB),你在这里问的。
希望,我给了你答案。
【讨论】: