什么情况下会在Android.apk文件中创建多个.dex文件?

In what situation would multiple .dex files be created in Android .apk file?

我目前正在研究 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),你这里问的。

希望,我给了你答案。