我正在使用Android 2.2开发一个Android应用程序,我的应用程序APK大小是22.5 MB,我想为三星平板电脑创建一个新的构建。我得到了以下错误:
INSTALL_FAILED_DEXOPT
如何解决这种错误?
我正在使用Android 2.2开发一个Android应用程序,我的应用程序APK大小是22.5 MB,我想为三星平板电脑创建一个新的构建。我得到了以下错误:
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
其他回答
没有通用的解决方案,你必须找到你的Logcat上报告的错误,才能解决它。有时它是一个不能被“解码器”的类,因为它使用了一个在指定的目标API上不可用的类。或者它可能是一个你在代码中引用的类,但是它所在的库没有被打包。
对我来说,这是proguard导致INSTALL_FAILED_DEXOPT在一些三星设备与Android 5.x。
也就是说,我必须添加这个来保护-不知道为什么它有帮助。
-keepattributes LocalVariableTable
试试我的答案https://stackoverflow.com/a/34918549/3737254
如果你使用android studio 2.0,禁用即时运行。
仅供参考,即时运行是android studio 2.0的新功能(我从未使用过>。<)
如何禁用:首选项->构建,执行和部署->即时运行->禁用,然后像魔法一样工作
享受吧!
考虑使用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中。