我正在使用Android Studio开发此应用程序,今天当我尝试将其上传到我的设备进行测试时,我有一个弹出窗口说:
安装失败,因为设备可能有与当前版本不匹配的过时dexed jar(dexopt错误)。 要继续,您必须卸载现有的应用程序。
警告:卸载将删除应用程序数据!
是否要卸载现有应用程序?
它提供了两个选项,OK或Cancel。点击“确定”后,“运行”选项卡中显示以下消息:
DEVICE SHELL COMMAND: pm uninstall my.bundle.id
Unknown failure
应用程序似乎已卸载,管理应用程序下没有任何痕迹 我无法上传该应用。我试着清理项目并重建,但它没有用。
我该怎么办?
答案 0 :(得分:32)
我在Android Studio中也遇到过这个问题,从版本2.0预览版6一直到2.0 Beta 3,这里提到的解决方案都不适合我。
打开它与Instant Run无关。我所要做的就是增加AVD的内部存储空间,直到下面的通知消失为止。我还必须在更改值后执行数据擦除。
答案 1 :(得分:28)
我禁用了此项目的即时运行,问题解决了。
也许这是Android studio 2.0预览版即时运行功能中的一个错误。
Instant Run是Android Studio 2.0中引入的新功能。
ps:如果你找不到即时跑,请点击:
Android Studio --> Preferences --> Build, execution, deploy --> Instant run.
或者您可以在首选项标签中搜索它。
答案 2 :(得分:15)
转到AVD Manager,然后在设备的操作部分中选择擦除数据。 这对我有用,希望它有所帮助......
答案 3 :(得分:8)
我发现dex文件比缓冲区大,即使它包含的方法少于64k。然后我启用了ProGuard,它大大减少了dex文件的大小。
应用程序dex-method-counts有助于调试你的dex文件,不仅要检查方法的数量,还要检查它们属于哪个包
答案 4 :(得分:6)
我发现我的问题是由旧的SDK Build Tools版本引起的,导致Clean失败。我将我的SDK Build Tools升级到最新版本,然后清理工作,我不再收到陈旧的dexed jar错误。希望这能帮助其他人解决这个问题。
答案 5 :(得分:4)
这对我有用:
在Android Studio中,可以点击构建>来完成。清洁 项目即可。 SysadminTips
答案 6 :(得分:3)
在我的项目中,我通过更具体地说明我正在链接的Google Play服务的哪些部分来解决这个问题。特别是,我改变了
dependencies {
...
compile 'com.google.android.gms:play-services:8.4.0'
}
到
dependencies {
...
compile 'com.google.android.gms:play-services-maps:8.4.0'
}
在我的app模块的build.gradle中,因为我真正使用的只是地图API。
答案 7 :(得分:2)
我所做的是修改了build.gradle(Module:app)文件。
最初是
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
我把它改成了
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
然后重建并部署!
答案 8 :(得分:2)
当您的dex文件变大但缓冲区大小(即包含超过65k方法)时,会发生此错误。您可以通过两种方式避免此错误: 1.)使用ProGuard删除未使用的代码 - 为应用程序配置ProGuard设置以运行ProGuard,并确保为发布版本启用了收缩功能。启用收缩可确保您不会使用APK发送未使用的代码。
2.。)您可以配置您的应用程序以支持多索引。请参阅此链接以使用它: https://developer.android.com/tools/building/multidex.html
对于multidex支持,我在我的应用程序类中重写了这个方法:
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
并像这样修改我的build.gradle:
android {
compileSdkVersion 21
buildToolsVersion "21.1.1"
defaultConfig {
minSdkVersion 14 //lower than 14 doesn't support multidex
targetSdkVersion 21
// Enabling multidex support.
multiDexEnabled true
}
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
希望它有所帮助!
编辑:从代码中取出文本说明。
答案 9 :(得分:2)
在我的情况下是因为我的模拟器充满了应用程序。我看到模拟器有多少空间,几乎没有任何东西,所以我删除了一些应用程序,并且我的问题得到了解决
答案 10 :(得分:0)
没有一个答案没有解决我的问题
你也应该调试progaurd
。
只需将buildtypes
添加到您的主gradle文件中:
buildTypes {
debug { // change release to debug
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
答案 11 :(得分:0)
在我的情况下,它是由名为“dictionary.txt”的文件引起的。我刚删除它并解决了问题。
答案 12 :(得分:0)
我今天遇到了这个问题,找到了解决方案。看到模拟器有多少空间,几乎什么都没有,所以我删除了一些应用程序,问题解决了。谢谢
答案 13 :(得分:0)
这对我帮助了模拟器: 关闭模拟器。 工具> AVD管理器>选择仿真器设置>擦除数据>冷启动。 现在安装应用程序。
答案 14 :(得分:0)
我尝试了以下
但没有任何作用。
但是,删除实际的模拟器文件确实对我有用。
您可以在此位置找到仿真器文件。
C:\Users\<username>\.android\avd
谢谢。