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

INSTALL_FAILED_DEXOPT

如何解决这种错误?


当前回答

targetSdkVersion 22//17==========================>设置这个数字小于或等于设备上的Android操作系统版本可能会有帮助

 defaultConfig {
        applicationId "software.nhut.personalutilitiesforlife"
        minSdkVersion 16
        targetSdkVersion 22//17==========================> set this number less then or equal to the version of Android OS on devices might help
        versionCode 5
        versionName "1.26"
        // Enabling multidex support.
        multiDexEnabled true
    }

其他回答

我有这个问题时,有一些Unicode字符在我的方法名称(由于,所有的事情,复制/粘贴从powerpoint文件),Dalvik不喜欢。在尝试安装APK时,您可以通过查看Logcat输出来了解这一点。

这是在一个真实的设备上。

这个错误消息似乎有许多不同的原因。我遇到的情况是在一个真实的设备上(因此模拟器基础解决方案不适用)。

基本上,当发生这种情况时,将Logcat过滤器设置为Verbose或Warn,这将帮助您获得有关原因的更多信息。

以我为例,我正在从事的项目(一个大型现有代码库)中包含了多个或相互冲突的JUnit版本。我试图部署的Android应用程序有几个库项目作为依赖项,我错误地将其设置为包含多个JUnit jar文件。

我是根据一系列Logcat信息发现这一点的。注意WARN行给出了原因:

DEBUG/dalvikvm(4808): DexOpt: 'Ljunit/framework/TestSuite$1;' has an earlier definition; blocking out
11-06 14:30:10.973: WARN/dalvikvm(4808): Invalid file flags in class Ljunit/runner/Sorter$Swapper;: 0209
11-06 14:30:10.973: null/libc(4808): Fatal signal 11 (SIGSEGV) at 0x00000004 (code=1), thread 4808 (dexopt)

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

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

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

您正在安装的应用程序的旧版本有已更改的依赖库/ jar。我在更新我的应用程序引用的其他jar文件时遇到了这个问题。

你将需要卸载旧版本,然后你应该没有更多的问题…

设置—>应用程序—>管理应用程序—>[找到并卸载您的应用程序]

INSTALL_FAILED_DEXOPT错误不应该爆发。就像

[2011-06-14 01:23:40 - ProtectYourself] Installing ProtectYourself.apk...
[2011-06-14 01:24:26 - ProtectYourself] Installation error: INSTALL_FAILED_DEXOPT
[2011-06-14 01:24:26 - ProtectYourself] Please check logcat output for more details.
[2011-06-14 01:24:26 - ProtectYourself] Launch canceled!

呜。

此外,如果您还在使用ECLIPSE,请尝试清理您的项目:

项目>清洁…