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

INSTALL_FAILED_DEXOPT

如何解决这种错误?


当前回答

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

其他回答

我今天在新的虚拟设备上使用Android Studio时也遇到了同样的问题。似乎我已经下载了x86_64映像,用等效的x86映像重新创建了VD。

在这种情况下,我期望得到一个INSTALL_FAILED_NO_MATCHING_ABIS,但不知何故,我被INSTALL_FAILED_DEXOPT卡住了

INSTALL_FAIL_DEXOPT通常与放在classes.dex上的限制有关。在ics之前的任何版本上,dexopt在超过5 MB的地方都会失败。最近版本的Android使用8或16 MB的缓冲区。

检查APK中classes.dex的大小。看看方法计数是多少也很好,因为dex有65536个方法/字段限制。


引用:

安装应用程序时出现错误

https://www.facebook.com/notes/facebook-engineering/under-the-hood-dalvik-patch-for-facebook-for-android/10151345597798920

如何缩小代码- 65k方法限制在dex

对我来说,这是proguard导致INSTALL_FAILED_DEXOPT在一些三星设备与Android 5.x。

也就是说,我必须添加这个来保护-不知道为什么它有帮助。

-keepattributes LocalVariableTable

从Android SDK和AVD管理器重新启动模拟器,并选择选项擦除用户数据已经为我解决了这个问题。

你可以在下图中找到高亮显示的选项:

对我来说,这似乎与磁盘空间有关。新推出的5.1仿真器启动时出现了“磁盘空间不足”错误——查看仿真器属性,为内部存储分配的默认空间是800MB,这看起来很低。

因此,解决方案是增加内存(我增加到4GB)。奇怪的是,模拟器仍然引导相同的磁盘空间警告,但出厂重置(设置->备份和恢复在模拟器内部)完全解决了我的问题。

只是有点奇怪,它不能在默认设置下开箱即用。