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

INSTALL_FAILED_DEXOPT

如何解决这种错误?


当前回答

我添加了下面的行到gradle。属性文件,问题得到解决:

android.enableD8=false 
android.enableD8.desugaring= false

我在真正的设备上运行这个应用程序。

其他回答

没有通用的解决方案,你必须找到你的Logcat上报告的错误,才能解决它。有时它是一个不能被“解码器”的类,因为它使用了一个在指定的目标API上不可用的类。或者它可能是一个你在代码中引用的类,但是它所在的库没有被打包。

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

在我的案例中,问题发生在一些运行API 21和22的设备上。在应用程序标签下的manifest中设置android:vmSafeMode="true"解决了这个问题。但是,不建议发布版本使用它,所以我在values文件夹中创建了两个xml文件。旧API的默认值:

<resources>
    <bool name="vm_safe_mode">true</bool>
</resources>

API的>= 23值为假,也是如此。在这种情况下,操作系统更新的设备不会受到影响,旧的设备至少可以工作。

重新启动设备。

以我为例,这个应用程序在大多数设备上都能运行,只有一个例外:我的手机太旧了,最近一直在故障,即使没有安装一次应用程序,应用程序也会抛出这个错误。

对我来说唯一有效的解决方案是将虚拟机的RAM增加到4GB。