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

标签 android apk dex

那里

我目前正在研究 Ajadx 项目,发现可能有多个 classes.dex 文件。
有没有人知道为什么以及关于它的不断发展的 Android 开发历史?
谢谢!

最佳答案

最大值.dex ( Dalvik Executable )操作( 不是 dex 大小 )对于 Java 是 4G(意思是 4 GB)。

“multidex enabled”是指系统可以根据需要创建多个dex文件。

什么时候进行dex操作?
每当您创建 apk 时都会发生这种情况(意味着在 apk 构建中)。

最大单个 dex 大小为 65K(意思是 65 KiloBytes)。

注意:如果您的应用程序中有这么多并发执行,8K dex 文件可以跨越 65K dex 操作。即使您将总(最大)dex 操作大小设置为 4G,您也可能会收到类似的错误。看这张图片:

Max Dex operations error

在构建项目中很好,但是当您尝试构建 APK 时会出现此错误。

要解决这个问题,您需要启用 multidex。启用 multidex 后,在构建时,Android Studio 从第一个 65K dex 操作内存生成对应的第一个 dex 文件,从第二个 65K dex 操作内存生成第二个 dex 文件,依此类推。

现在,当您更改 build.gradle 以启用 multidex 时,您可以构建您的 APK。
现在,您的 apk 文件已准备就绪。您解压缩您的 apk 文件并进入该文件夹。您可以看到如下图所示的内容。看这张照片

expanded apk

你看,有两个 dex 文件:classes.dex 和 classes2.dex。第一个 classes.dex 文件(在我的示例中)为 8.3MB,它是前 65K 并发 dex 操作的输出。而且,第二个 classes2.dex 文件是 rest dex 操作的输出(我们不确切知道,但我们知道它小于 65K)。

这样一来,总的dex文件的整体dex操作量是4G(4GB),就是你这里问的。

希望,我给了你答案。

关于android - 什么情况下会在 Android .apk 文件中创建多个 .dex 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40946372/

相关文章:

java - app:transformClassesWithDexForDebug java.exe退出值1

安卓 webview.loadData 和 CSS

java - 将大型 JSON (InputStream) 放入 String 时出现内存不足错误

java - 具有 JRE 版本的 API 级别

android - 在 React Native Android 中使用开发模式中包含的 js 包打包 apk

android - 找到多个具有操作系统独立路径 'META-INF/INDEX.LIST' 的文件

android - Android应用程序的插件架构?

android - 同步适配器服务已导出但未 protected

android - 应用程序未安装错误

安卓分析APK