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

当我添加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。运行(Main.java:230)在com.android.dx.command.dexer.Main.main(Main.java:199)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' } 

其他人遇到这个问题? 我从这里尝试了解决scheme。

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

删除注释jar解决了这个问题。

build设 – >清洁工程,它的工作

我删除了android-support-v4.jar,它工作。

如果这是cordova/离子项目这为我工作

添加这些线build.gradle下的平台/安卓行号22后,即应用插件后:'安卓'

 configurations { all*.exclude group: 'com.android.support', module: 'support-v4' } 

在使用facebook插件的Cordova项目中解决了这个问题。 我能够通过从platforms\android\project.properties注释掉这一行来成功构build,如下所示:

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

并从platforms\android\build.gradle注释掉这一行,如下所示:

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

然后做构build。 当我安装了(katzer / cordova-plugin-local-notifications)这个问题后,问题就开始了,但是它增加了这些内容,但是它创build的库已经是facebook插件的一部分。

正如其他用户所说,排除故障的首要因素是依赖性。 虽然有时你可能会奋斗几个小时,但是你没有发现任何问题,所以你可以把重点放在构build过程上

改变生成.dex文件的方式有时可以解决这个问题。 你可以通过这些步骤:

  • 打开你的Build.gradle(app)文件
  • search任务dexOptions
  • 将其更改为:

     dexOptions { incremental false } 

如果你没有在你的文件中find任务,那么你可以添加它。

我有同样的问题,但我从生成文件夹中删除生成文件

项目名称/应用程序/编译

并删除了所有相关的错误。 “不能清理项目”,也不能用“$ anim”

我设法解决这个问题。 原因是我包括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' } 

如果您将AppCompat作为库项目导入,并且在其他位置的库中还有android-support-annotations.jar ,请确保只导入AppCompat库(它已包含此注释库)。 然后删除所有android-support-annotations.jar以避免合并这个库的多个版本。

更新Android SDK Tools为我修复了它,现在它只是在android-support-v4.jar看到副本。

在使用ant时,我遇到了同样的问题,注释库被过时的sdk.dir/tools/ant/build.xml自动包含在内。

清理项目作为一个临时修复,但是这个问题会在下一个编译错误中重新出现。

为了更可靠地修复,我必须更新依赖到android support-v4com.android.support:support-v4:22.2.0

对我来说,原因是新的数据绑定库

 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版本似乎已经修复它,所以只是使用这些版本

根据你的compileSdkVersion放入你的build.gradle支持注解的依赖关系。 比如:一个用compileSdkVersion 25的项目你可以把下面的依赖:

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

这将解决您的问题。

在我的情况下,我有一个名为cache.xml文件在根项目文件夹中的/build/intermediates/dex-cache/cache.xml 。 我删除这个文件,重build项目,它为我工作。

我删除了android-support-v4.jar,它工作。

解释 – android-support-v4.jar与我的项目\ libs文件**的其他.jar文件冲突,特别是当您在AS上运行java 8时。

将android-support-v4.jar放入eclipse中的libs文件夹中。 清理并build立项目。 这将解决这个问题。

在构build和启动Android Studio时可能会出现这些消息的另一个原因可能是库中应用程序标记的原因。

如果您有多个作为模块导入的Android库项目。 进入这些项目并删除<application> ... </application>标签以及它们之间的所有内容。 这些可能会导致构build过程中的问题以及已经提到的支持库问题。

from / platforms / android / libs /删除android-support-v4.jar。 它适用于我。