我正在使用Android 2.2开发一个Android应用程序,我的应用程序APK大小是22.5 MB,我想为三星平板电脑创建一个新的构建。我得到了以下错误:

INSTALL_FAILED_DEXOPT

如何解决这种错误?


当前回答

我需要禁用即时运行来解决这个问题。要禁用OS X上的即时运行,请进入Android Studio >首选项>构建,执行,部署>即时运行,然后从“启用即时运行”中删除“部署时热插拔代码/资源更改”(默认启用)。

其他回答

当我尝试在2.3设备上安装时遇到了这个问题(在4.0.3上没问题)。它最终是因为我正在使用的lib项目有多个jar,这些jar用于android中已经存在的东西,例如HttpClient和XML解析器等。看着logcat让我发现这个,因为它告诉我它正在逃课,因为他们已经存在了。很好的无用的原始错误!

给任何搜索关键词“房间”的人。我在实现Room来管理数据库时遇到了这个问题。原因是我从Android文档中复制了所有依赖项。只复制你需要的文件。如果您没有使用Kotlin或番石榴,只需添加:

implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
testImplementation "androidx.room:room-testing:$room_version"

考虑使用proguard来缩小APK。如果我试图在旧的三星Galaxy Ace 2.3.6设备上安装25MB以上的APK,而没有使用proguard收缩/优化代码,我也会遇到同样的问题。

Jumbo模式和重新启动设备无效。

一个原因是classes.dex在.apk-package的根目录中找不到。 要么

该文件在apk-package或 它位于.apk文件中的子文件夹中。

这两种情况都会导致终止,因为Android只搜索apk文件的根目录。造成这种混乱的原因是.apk文件的构建运行没有错误消息。

造成这种错误的核心原因可能是:

dx工具需要在当前的主工作文件夹中找到classes.dex。但实际上,classes.dex位于其他位置。 Aapt在classes.dex的位置有错误信息。例如,在aapt.exe中添加…bin / classes.dex。这是错误的,因为classes.dex在创建的.apk文件的子文件夹/bin中。

如果你有INSTALL_FAIL_DEXOPT错误,请查看manifest android:targetSdkVersion。 设定版本< 21 示例:

android:targetSdkVersion=“19”

这对我很管用。