我对 INSTALL_FAILED_DEXOPT 有一个奇怪的问题。 这发生在模拟器和设备中的android 5.0设备中。 奇怪的是,它在调试模式下构建变体时效果很好。
如果我更改为Release I,则仅在5.0设备上获得此异常。我已经彻底浏览了谷歌中提供的所有链接。
擦除数据
购买了我可以第一次安装的新设备,但我仍面临同样的问题。
Project支持多索引: - gradle in gradle
还尝试将SDK工具版本和构建工具版本更改为最新版本24.4.0。
在控制台
中这些是我们使用的构建类型。
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
signingConfig signingConfigs.release
}
debug {
applicationIdSuffix ".debug"
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
signingConfig signingConfigs.debug
}
}
使用的SDK工具的图片:
我可以向你保证,从来没有安装过该设备。如果已安装,我已经清除了所有内容。
这个世界上的某个人能否帮我解决这个问题。因为它让我们疯狂......
答案 0 :(得分:2)
当apk安装到android时,android执行dex2opt进行优化。 INSTALL_FAILED_DEXOPT错误消息意味着您的Android设备无法优化dex。这可以通过dex大小来实现。您可以在Android监视器中找到“LinearAlloc Limit”警告或错误消息。
如果是dex尺寸的问题。将此添加到配置。
afterEvaluate{
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if(dx.additionalParameters == null){
dx.additionalParameters = []
}
//To avoid linearAlloc limit problem on Gingerbread and below
dx.additionalParameters += "--set-max-idx-number=50000"
dx.additionalParameters += "--minimal-main-dex"
}
}
和即时运行=开启关闭
答案 1 :(得分:0)
由于Android Studio与Project之间的sdks不匹配,可能会出现此问题。该项目使用了一个旧的SDD,一旦我将它们制作成相同,我就清理并重建了项目,一切都很顺利。
答案 2 :(得分:0)
请查看您的应用是否被错误地安装在手机的来宾帐户中。
如果是,则取消安装或从那里删除。
为手机中的所有用户帐户执行此操作。
其他提示: -
构建 - >清洁项目构建 - >重建项目
答案 3 :(得分:0)
这可能是由于模块和项目构建文件中不同版本的Gradle构建工具所致。确保他们在文件中使用相同的版本,再次清理和构建,它应该没问题。
答案 4 :(得分:0)
听起来像multidex可能是你的问题。 Android在Lollipop设备上本地处理这个问题(这可能会导致某些设备行为正常,但其他设备有问题),但在旧设备上使用multidex库可以解释为什么旧设备表现一致(请参阅http://developer.android.com/tools/building/multidex.html)。 p>
你是否足够接近65k限制,你可以使用ProGuard或临时删除你的一个依赖项,这样你就不需要multidex?尽管有一个库可以支持它,但通常最好减少方法计数,这样你就不需要了。我知道有些应用可能真的需要它,但首先要检查它。
此外,请使用详细的Google Play服务模块进行调查。如果您要使用所有GMS,切换到粒度包含可以显着减少您的方法计数:http://android-developers.blogspot.com/2014/12/google-play-services-and-dex-method.html
答案 5 :(得分:0)
尝试卸载此应用以及在您的设备上拥有签名的所有其他人。清理项目并重新启动安装。此外,您应该考虑通过ADB的其他方式安装您的应用程序,例如使用dropbox。
答案 6 :(得分:-1)
从Android SDK和AVD Manager重新启动模拟器并选择擦除用户数据选项已经解决了这个问题。
答案 7 :(得分:-1)
我在手机中测试代码时遇到了同样的问题。我按照以下步骤进行了操作
它解决了我的问题,请检查你的情况。
答案 8 :(得分:-2)
当您安装调试/发布apk时,这个问题可能会发生,而你的设备/ emulator中已经安装了relese / debug。如果你正在安装调试apk,而apk版本存在,或者如果你正在安装release apk apk is exist.so uninatall apk并再次安装
答案 9 :(得分:-2)
afterEvaluate{
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if(dx.additionalParameters == null){
dx.additionalParameters = []
}
//To avoid linearAlloc limit problem on Gingerbread and below
dx.additionalParameters += "--set-max-idx-number=65535"
dx.additionalParameters += "--minimal-main-dex"
}
}