【问题标题】:multiple dex files define landroid/support/annotation/AnimRes多个dex文件定义landroid/support/annotation/AnimRes
【发布时间】:2014-10-13 14:30:38
【问题描述】:

我将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 的解决方案。

【问题讨论】:

    标签: java android


    【解决方案1】:

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

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

    【讨论】:

    • 在项目中包含两个不同版本的android-support-v4.jar jar 文件时可能会出现问题
    • @ahmedhamdy 包括具有不同 SHA 密钥的 v4.jar 会引发不同的错误并且不会导致 dex 问题
    • @mister-smith 我怎样才能删除其中一个?我被这个问题困住了:(
    • 这为我解决了这个问题。如果您正在开发 Cordova 应用程序,请从 /platforms/android/libs/ 中删除上述文件
    • 已删除注释 jar。但仍然收到错误。
    【解决方案2】:

    构建->清理项目,它工作了

    【讨论】:

    • 我不知道怎么做(我之前尝试过几次都没有结果),但是在我再次尝试之后(在看到这个评论之后)......奇迹! :D
    • 一旦我开始记住在遇到 gradle 问题时首先尝试这个,我的生活就会变得轻松很多
    • 当我运行删除 /app/build 文件夹的“清理”任务时它起作用了。
    【解决方案3】:

    我删除了 android-support-v4.jar 并且它起作用了。

    【讨论】:

    • 我从 Java Build Path > Libraries 中取消选中它。 (Y)。像魅力一样工作
    【解决方案4】:

    如果这是科尔多瓦/离子项目,这对我有用

    在第 22 行之后,即在 apply plugin: 'android'

    之后,将这些行添加到platforms/android 下的 build.gradle
    configurations {
       all*.exclude group: 'com.android.support', module: 'support-v4'
    }
    

    【讨论】:

    • 这是使用“cordova-plugin-googleplus”和“phonegap-facebook-plugin”插件对我有用的唯一解决方案。谢谢你救了我!
    • 我试图安装cordova-plugin-document-viewer,这个解决方案对我有用。谢谢!
    【解决方案5】:

    在使用 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 插件构建的一部分。

    【讨论】:

    • 也为我工作,我也在使用 cordova-plugin-local-notifications。谢谢!
    【解决方案6】:

    正如其他用户所说,首先要解决的问题是依赖关系。不过,有时您可能会挣扎几个小时,但没有发现任何问题,因此您可以专注于构建过程

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

    • 打开您的 Build.gradle (app) 文件
    • 搜索任务dexOptions
    • 改成:

      dexOptions {
        incremental false 
      }
      

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

    【讨论】:

      【解决方案7】:

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

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

      【讨论】:

        【解决方案8】:

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

        项目名称/应用程序/构建

        它删除了所有相关的错误。 “无法清理项目”和“dex errow with $anim”

        【讨论】:

          【解决方案9】:

          我设法解决了这个问题。原因是我将 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】:

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

            【讨论】:

            • 我在 android studio 上遇到了同样的问题,但是我的 build.gradle 中没有支持注释。清理项目并没有解决它。我发现尽管我的 app build.gradle 中没有 android-support-annotations.jar,但它仍然在我的 app.iml 中。一旦我从我的 app.iml 中删除了 android-support-annotations.jar (并再次清理了项目以进行良好的测量)。这完全解决了我的问题
            【解决方案11】:

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

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

            【讨论】:

              【解决方案12】:

              干净的项目可以作为临时修复,但该问题将在下次编译错误时再次出现。

              为了更可靠地修复,我不得不将 android support-v4 的依赖更新为 com.android.support:support-v4:22.2.0

              【讨论】:

                【解决方案13】:

                根据您的 compileSdkVersion 将支持注释的依赖项放入您的 build.gradle 中。比如:一个compileSdkVersion 25的项目可以放如下依赖:

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

                这将解决您的问题。

                【讨论】:

                  【解决方案14】:

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

                  【讨论】:

                    【解决方案15】:

                    我删除了 android-support-v4.jar 并且它起作用了。

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

                    【讨论】:

                      【解决方案16】:

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

                      【讨论】:

                        【解决方案17】:

                        构建和启动时在 Android Studio 中出现此类消息的另一个原因可能是库中的应用程序标签。

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

                        【讨论】:

                          【解决方案18】:

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

                          【讨论】:

                            猜你喜欢
                            • 2015-12-06
                            • 2015-08-26
                            • 2016-04-23
                            • 1970-01-01
                            • 2015-06-30
                            • 1970-01-01
                            • 1970-01-01
                            • 2015-12-07
                            • 2014-06-10
                            相关资源
                            最近更新 更多