当前位置: 首页 > 知识库问答 >
问题:

使用buildToolsVersion 23失败,因为多个dex文件定义了“AnimRes”

漆雕宏浚
2023-03-14

在您声称重复之前,请阅读问题。

这仅在最新版本的生成工具中发生。旧版本不会显示此问题。我已经尝试过这里提供的其他问题的解决方案,以了解AnimRes的多种定义。到目前为止,还没有人帮忙,这就是为什么我发布了一个新问题。相同的症状,不同的原因,不同的解决方案。

当使用BuildToolsVersion22.0.1时,我可以毫无问题地进行构建,但当我切换到BuildToolsVersion23时,构建会失败,并出现错误

意外的顶级异常:com.Android指数。DexException:多个dex文件定义Landroid/support/annotation/AnimRes;在com.Androiddx。合并DEX合并。com上的readSortableTypes(dexmmerge.java:596)。Androiddx。合并DEX合并。com上的getSortedTypes(dexmmerge.java:554)。Androiddx。合并DEX合并。com上的mergeClassDefs(dexmmerge.java:535)。Androiddx。合并DEX合并。com上的mergeDexes(dexmmerge.java:171)。Androiddx。合并DEX合并。com上的merge(dexmmerge.java:189)。Androiddx。命令德克瑟。主要的com上的mergeLibraryDexBuffers(Main.java:502)。Androiddx。命令德克瑟。主要的com上的runMonoDex(Main.java:334)。Androiddx。命令德克瑟。主要的在com上运行(Main.java:277)。Androiddx。命令德克瑟。主要的com上的main(main.java:245)。Androiddx。命令主要的main(main.java:106)

这是我的依赖项列表:

provided 'org.projectlombok:lombok:1.16.4'
compile 'com.android.support:support-v4:23.0.0'
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.android.support:support-v13:23.0.0'
compile 'com.android.support:cardview-v7:23.0.0'
compile 'com.android.support:palette-v7:23.0.0'
compile 'com.google.code.findbugs:jsr305:2.0.1'
compile 'com.google.guava:guava:18.0'
compile 'com.github.chrisbanes.photoview:library:1.2.3'
compile 'org.apache.commons:commons-lang3:3.4'
compile 'commons-io:commons-io:2.4'
compile 'commons-codec:commons-codec:1.10'
compile 'com.jakewharton:butterknife:7.0.1'
compile 'com.squareup:otto:1.3.8'
compile 'org.jsoup:jsoup:1.7.2'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.4.0'
compile 'com.squareup.okio:okio:1.5.0'
compile 'com.flaviofaria:kenburnsview:1.0.6'
compile 'com.edmodo:cropper:1.0.1'
compile 'com.getbase:floatingactionbutton:1.10.0'
compile 'com.nispok:snackbar:2.10.10'
compile 'com.github.ksoichiro:android-observablescrollview:1.5.2'
compile 'in.srain.cube:grid-view-with-header-footer:1.0.12'
compile 'de.hdodenhof:circleimageview:1.3.0'

为了确保每个人(包括Espresso)都使用相同版本的支持注释,我的构建文件中有以下内容:

configurations.all {
  resolutionStrategy.force 'com.android.support:support-annotations:23.0.0'
}

删除此项将导致其他故障。

这是构建工具中可能存在的错误还是我做错了什么?我尝试在dexOptions中设置增量假。它没有帮助。

使用./gradlew-q app:依赖项我得到以下内容:

+--- com.android.support:support-v4:23.0.0
|    \--- com.android.support:support-annotations:23.0.0
+--- com.android.support:appcompat-v7:23.0.0
|    \--- com.android.support:support-v4:23.0.0 (*)
+--- com.android.support:support-v13:23.0.0
|    \--- com.android.support:support-v4:23.0.0 (*)
+--- com.android.support:cardview-v7:23.0.0
+--- com.android.support:palette-v7:23.0.0
|    \--- com.android.support:support-v4:23.0.0 (*)
+--- com.google.code.findbugs:jsr305:2.0.1
+--- com.google.guava:guava:18.0
+--- com.github.chrisbanes.photoview:library:1.2.3
|    \--- com.android.support:support-v4:19.+ -> 23.0.0 (*)
+--- org.apache.commons:commons-lang3:3.4
+--- commons-io:commons-io:2.4
+--- commons-codec:commons-codec:1.10
+--- com.jakewharton:butterknife:7.0.1
+--- com.squareup:otto:1.3.8
+--- org.jsoup:jsoup:1.7.2
+--- com.squareup.picasso:picasso:2.5.2
+--- com.squareup.retrofit:retrofit:1.9.0
|    \--- com.google.code.gson:gson:2.3.1
+--- com.squareup.okhttp:okhttp:2.4.0
|    \--- com.squareup.okio:okio:1.4.0 -> 1.5.0
+--- com.squareup.okhttp:okhttp-urlconnection:2.4.0
|    \--- com.squareup.okhttp:okhttp:2.4.0 (*)
+--- com.squareup.okio:okio:1.5.0
+--- com.flaviofaria:kenburnsview:1.0.6
+--- com.edmodo:cropper:1.0.1
+--- com.getbase:floatingactionbutton:1.10.0
|    \--- com.android.support:support-annotations:22.2.0 -> 23.0.0
+--- com.nispok:snackbar:2.10.10
|    +--- com.android.support:recyclerview-v7:22.0.0
|    |    +--- com.android.support:support-v4:22.0.0 -> 23.0.0 (*)
|    |    \--- com.android.support:support-annotations:22.0.0 -> 23.0.0
|    \--- com.android.support:support-annotations:22.0.0 -> 23.0.0
+--- com.github.ksoichiro:android-observablescrollview:1.5.2
|    \--- com.android.support:recyclerview-v7:21.0.0 -> 22.0.0 (*)
+--- in.srain.cube:grid-view-with-header-footer:1.0.12
\--- de.hdodenhof:circleimageview:1.3.0

共有2个答案

璩涛
2023-03-14

我不能说我理解这个解决方案,也不能说它一定是一个很好的解决方案,但它让我的应用程序再次编译:

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

另外,请参见:使用渲染脚本支持库时获取多个索引错误

此解决方案归功于LubošStaráček

盖高畅
2023-03-14

更新:这在23.0.1版本的构建工具中得到了修复,因为renderscript-v8中不再包含支持目录。jar

罪魁祸首是构建工具中包含的renderscript-v8.jar版本。

我认为这个输出说明了一切:

C:.
├───renderscript-v8-22.0.01
│   ├───android
│   │   └───support
│   │       └───v8
│   │           └───renderscript
│   └───META-INF
└───renderscript-v8-23
    ├───android
    │   └───support
    │  ***  ├───annotation
    │       └───v8
    │           └───renderscript
    └───META-INF

我已经用包含它们的构建工具的版本标记了这些目录。请注意,renderscript-v8-23中的注释子目录在renderscript-v8-22.0.01中不存在。

这里已经有关于该问题的报告:https://code.google.com/p/android/issues/detail?id=179493这里有一个副本:https://code.google.com/p/android/issues/detail?id=181697

 类似资料:
  • 错误:将字节码转换为dex时出错:原因:com.android.dex。DexException:多个dex文件定义Landroid/arch/lifecycle/LiveData$LifecycleBoundObserver; 我的 gradle 文件 **这就是错误,我明白了**

  • 我有两个jar库,都有一个gson.jar的副本,正因为如此,当我试图运行我的项目时,我得到一个异常,说意外的顶级异常,定义了多个Dex文件。我找到了几个消息来源,说只删除其中一个库,但我不能,因为我需要在两个jar中包括其他项目。有没有一种方法可以让项目中的两个jar都保持运行

  • 问题内容: 我知道这个问题已经在这里问过几次了。但是我还没有看到任何可能的解决方案。在我将项目“以Android应用程序身份运行”之前,如果我不清理它,则会收到以下错误,并且必须重新启动Eclipse …并再次清理。 com.jstun.core …是我的src文件夹的一部分,我当然不能删除它。即使我删除该程序包,另一个程序包也会显示为错误,例如: 自更新为ADT 15以来,我已经看到此错误,我正

  • 问题内容: 我有2个应用版本-专业版和精简版。它们都已经在 v1.01上上市。我正在尝试为两者发布v1.1。此更新包括 SwawrmConnect集成,以便使用其全球排行榜。 我首先要说我知道我没有正确维护我的代码。我 有2个完全独立的应用程序,它们可能共享90%的代码。我分别 维护它们,因为在一周或两到三周未能弄清楚 如何做一个库和共享代码之后,我放弃了,只是这样做了 。 SwarmConnec

  • 我无法编译该项目,编译时出现以下错误: 错误:任务': myApp: dexDebug'执行失败。 通用域名格式。Android石斑鱼类。常见的内部的LoggedErrorException:无法运行命令:C:\Program Files(x86)\Android\Android studio\sdk\build tools\21.0.2\dx。bat--dex--输出C:\Users\Andro