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

时间:2014-10-13 14:30:38

标签: java android

我将android支持注释添加到我的依赖项

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

我收到了这个错误:

  

错误代码:       2输出:       意外的顶级例外情况:       com.android.dex.DexException:多个dex文件定义Landroid / support / annotation / AnimRes;           在com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)           在com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)           在com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)           在com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)           在com.android.dx.merge.DexMerger.merge(DexMerger.java:188)           在com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)           在com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)           在com.android.dx.command.dexer.Main.run(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'
}

还有其他人遇到过这个问题吗?我尝试过here的解决方案。

17 个答案:

答案 0 :(得分:71)

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

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

答案 1 :(得分:34)

构建 - >清理项目,它运作

答案 2 :(得分:23)

我删除了android-support-v4.jar并且它有效。

答案 3 :(得分:10)

如果这是cordova /离子项目,这对我有用

在第22行之后将这些行添加到platforms / android下的build.gradle,即在应用插件之后:'android'

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

答案 4 :(得分: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插件构建的一部分,所以它产生了冲突。

答案 5 :(得分:3)

正如其他用户所说,排除故障的第一个要素是依赖关系。虽然,有时您可能会挣扎数小时而且您没有发现任何问题,因此您可以专注于构建过程

更改the way in which the .dex files are produced有时可以解决问题。您可以执行以下步骤:

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

    dexOptions {
      incremental false 
    }
    

如果您在文件中找不到该任务,则可以添加该任务。

答案 6 :(得分:2)

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

com.android.databinding:dataBinder:1.0-rc2

它以某种方式使用了注释lib的冲突版本,我无法用

强制执行
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版本似乎修复了它,所以只需使用这些版本

答案 7 :(得分:2)

我遇到了同样的问题,但我从构建文件夹中删除了构建文件

项目名称/应用/构建

并删除了所有相关错误。 “无法清理项目”以及“使用$ anim进行dex errow”

答案 8 :(得分:1)

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

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

答案 9 :(得分:1)

我成功解决了这个问题。原因是我将android支持库19.0.0作为依赖项包含在内,但需要19.1.0。 See here for more information

所以它必须是

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'
}

答案 10 :(得分:1)

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

答案 11 :(得分:1)

根据您的compileSdkVersion将 build.gradle 依赖于support-annotations。例如:一个带有 compileSdkVersion 25 的项目,你可以提出以下依赖:

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

这将解决您的问题。

答案 12 :(得分:0)

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

答案 13 :(得分:0)

我删除了android-support-v4.jar并且它有效。

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

答案 14 :(得分:0)

将android-support-v4.jar放在eclipse的libs文件夹中。清理并构建项目。它将解决问题。

答案 15 :(得分:0)

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

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

答案 16 :(得分:0)

来自/ platforms / android / libs / 删除android-support-v4.jar。 它对我有用。