多个dex文件定义了“landroid/support/annotation/AnimRes”

59

当我将 Android 支持注解添加到我的依赖项中:

compile 'com.android.support:support-annotations:20.0.0'

我遇到了这个错误:

错误代码: 2 输出: UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: 多个 dex 文件定义了 Landroid/support/annotation/AnimRes; at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594) at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552) at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170) at com.android.dx.merge.DexMerger.merge(DexMerger.java:188) at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287) at com.android.dx.command.dexer.Main.run(Main.java:230) at com.android.dx.command.dexer.Main.main(Main.java:199) at com.android.dx.command.Main.main(Main.java:103)

build.gradle

android {
    compileSdkVersion 19
    buildToolsVersion '20.0.0'

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 19
    }
}

dependencies {
    compile 'com.android.support:support-v4:19.0.0'
    compile 'com.crashlytics.android:crashlytics:1.+'
    compile 'com.android.support:support-annotations:20.0.0'
}

有其他人遇到过这个问题吗?我尝试了这里的解决方法。

18个回答

71
问题在于android-support-annotations.jar曾经是一个单独的库,包含了Android注释,但是由于某些原因,这些注释已经包含在最新版本的android-support-v4.jar文件中。
删除注释jar文件解决了这个问题。

5
当您将两个不同版本的android-support-v4.jar jar文件包含到您的项目中时,可能会出现问题。 - ahmed hamdy
1
@mister-smith,我该如何删除其中一个?我被这个问题困扰了:( - bobsouza
7
这对我解决了问题。如果您正在开发 Cordova 应用,请从 /platforms/android/libs/ 目录中删除提到的文件。 - Mirthquakes
已删除注释jar包,但仍然出现错误。 - Sanved
我有一组库作为模块,但在任何 gradle 文件中都找不到 annotation.jar。现在该怎么办? - Karthika PB
显示剩余2条评论

34

进行 构建->清除 项目 操作,它正常工作了。


1
我不确定如何做到的(之前尝试过几次但没有结果),但在看到这个评论后再次尝试... 奇迹发生了!! :D - smiron
1
一旦我记住了每次遇到Gradle问题都要先尝试这个,我的生活将变得更加轻松。 - hair raisin
当我运行“clean”任务并删除/app/build文件夹时,它可以正常工作。 - Venugopal

23

我删除了android-support-v4.jar文件,然后它就可以工作了。


我从Java Build Path > Libraries中取消了它的勾选(Y)。现在运行得非常好。 - khunshan

10
如果这是 Cordova / Ionic 项目,这对我有用。
在 platforms/android 的 build.gradle 文件中的第 22 行(即 apply plugin: 'android' 后面),加入以下代码。
configurations {
   all*.exclude group: 'com.android.support', module: 'support-v4'
}

这是唯一一个对我有效的解决方案,使用了“cordova-plugin-googleplus”和“phonegap-facebook-plugin”插件。你救了我的一天,谢谢! - S. F.
我正在尝试安装cordova-plugin-document-viewer,这个解决方案对我很有用。谢谢! - dzylich

7

我曾在使用Facebook插件的Cordova项目中解决了这个问题。我成功地进行了构建,方法是在platforms\android\project.properties文件中注释掉以下这行:

# cordova.system.library.1=com.android.support:support-v4:+

通过注释掉这一行,从 platforms\android\build.gradle 文件中,如下所示:

// compile "com.android.support:support-v4:+"

然后进行构建。问题出现在我安装了(katzer/cordova-plugin-local-notifications)插件并添加了这些行之后,但这导致了冲突,因为它所添加到构建中的库已经是 Facebook 插件构建的一部分。


1
也适用于我,我也在使用 cordova-plugin-local-notifications。谢谢! - Morgan Touverey Quilling

3

正如其他用户所说,解决问题的第一步是检查依赖项。不过,有时候你可能会花费几个小时却找不到任何问题,这时你可以将注意力转移到构建过程上。

改变.dex文件生成方式有时可以解决问题。你可以按照以下步骤进行:

  • Open your Build.gradle (app) file
  • Search for the task dexOptions
  • Change it to:

    dexOptions {
      incremental false 
    }
    
如果您在文件中找不到任务,则可以添加它。

2
对我来说,原因是新的数据绑定库。
com.android.databinding:dataBinder:1.0-rc2

某种程度上,它使用了冲突的注解库版本,我无法通过

强制执行。
configurations.all {
    resolutionStrategy {
        force group: 'com.android.support', name: 'support-v4', version: '23.1.0'
        force group: 'com.android.support', name: 'appcompat-v7', version: '23.1.0'
        force group: 'com.android.support', name: 'support-annotations', version: '23.1.0'
    }
}

但是新的rc3rc4版本似乎已经解决了这个问题,所以只需使用这些版本。


2
我曾经遇到相同的问题,但我删除了build文件夹中的构建文件。项目名称/app/build。这将删除所有相关错误,“无法清理项目”以及“$ anim”的dex错误。

1
我成功解决了这个问题。原因是我将Android支持库19.0.0作为依赖项,但需要的是19.1.0版本。请点击此处获取更多信息
因此,应该使用以下内容:
dependencies {
    compile 'com.android.support:support-v4:19.1.0'
    compile 'com.crashlytics.android:crashlytics:1.+'
    compile 'com.android.support:support-annotations:20.0.0'
}

1

清理项目可以作为一种临时解决方法,但在下次编译错误时问题将会重新出现。

为了更可靠地修复问题,我不得不将依赖项更新为android support-v4com.android.support:support-v4:22.2.0


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接