使用buildToolsVersion 23失败,因为多个DEX文件定义“AnimRes” [英] Using buildToolsVersion 23 fails because Multiple dex files define 'AnimRes'

查看:366
本文介绍了使用buildToolsVersion 23失败,因为多个DEX文件定义“AnimRes”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在你宣称的复制请阅读问题。

这只是发生的构建工具的最新版本。旧版本不显示此问题。我已经尝试过提供其他的问题在这里为 @AnimRes 的多个定义的解决方案。无帮助,到目前为止,这就是为什么我发布了一个新的问题。同样的症状,不同的病因,不同的解决方案。

我可以没有问题使用 buildToolsVersion 22.0.1 ,但是当我切换到 buildToolsVersion 23 编译时建失败,错误

  

意外的顶级例外:com.android.dex.DexException:多   DEX文件定义Landroid /支持/注释/ AnimRes;           在com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)           在com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)           在com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)           在com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)           在com.android.dx.merge.DexMerger.merge(DexMerger.java:189)           在com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:502)           在com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)           在com.android.dx.command.dexer.Main.run(Main.java:277)           在com.android.dx.command.dexer.Main.main(Main.java:245)           在com.android.dx.command.Main.main(Main.java:106)

这是我的依赖列表:

 规定org.projectlombok:龙目:1.16.4
编译com.android.support:support-v4:23.0.0
编译com.android.support:appcompat-v7:23.0.0
编译com.android.support:support-v13:23.0.0
编译com.android.support:cardview-v7:23.0.0
编译com.android.support:palette-v7:23.0.0
编译com.google code.findbugs:JSR305:2.0.1
编译com.google.guava:番石榴:18.0'
编译com.github.chrisbanes.photoview:图书馆:1.2.3
编译org.apache.commons:公地lang3:3.4
编译公地IO:公地IO:2.4
编译commons- codeC:commons- codeC:1.10
编译com.jakewharton:butterknife:7.0.1
编译com.squareup:奥托:1.3.8
编译org.jsoup:jsoup:1.7.2
编译com.squareup.picasso:毕加索:2.5.2
编译com.squareup.retrofit:改造:1.9.0
编译com.squareup.okhttp:okhttp:2.4.0
编译com.squareup.okhttp:okhttp-的URLConnection:2.4.0
编译com.squareup.okio:奥基奥:1.5.0
编译com.flaviofaria:kenburnsview:1.0.6
编译com.edmodo:栽跟头:1.0.1
编译com.getbase:floatingactionbutton:1.10.0
编译com.nispok:小吃店:2.10.10
编译com.github.ksoichiro:Android的observablescrollview:1.5.2
编译in.srain.cube:网格视图与 - 页眉页脚:1.0.12
编译de.hdodenhof:circleimageview:1.3.0
 

要确保每个人(包括长者preSSO)使用支持-标注相同版本的我在我的构建文件如下:

  configurations.all {
  resolutionStrategy.forcecom.android.support:support-annotations:23.0.0
}
 

删除,这将导致其它故障。

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

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

  + --- 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:番石榴:18.0
+ --- com.github.chrisbanes.photoview:库:1.2.3
| \ --- com.android.support:support-v4:19.+  - > 23.0.0(*)
+ --- org.apache.commons:公地lang3:3.4
+ ---公共-IO:公地IO:2.4
+ --- commons- codeC:commons- codeC:1.10
+ --- com.jakewharton:butterknife:7.0.1
+ --- com.squareup:奥托:1.3.8
+ --- org.jsoup:jsoup:1.7.2
+ --- com.squareup.picasso:毕加索:2.5.2
+ --- com.squareup.retrofit:改造:1.9.0
| \ --- com.google code.gson:GSON:2.3.1
+ --- com.squareup.okhttp:okhttp:2.4.0
| \ --- com.squareup.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:奥基奥:1.5.0
+ --- com.flaviofaria:kenburnsview:1.0.6
+ --- com.edmodo:栽跟头:1.0.1
+ --- com.getbase:floatingactionbutton:1.10.0
| \ --- com.android.support:support-annotations:22.2.0  - > 23.0.0
+ --- com.nispok:小吃店: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:网格视图与 - 页眉页脚:1.0.12
\ --- de.hdodenhof:circleimageview:1.3.0
 

解决方案

更新:这是固定在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 :?//$c$c.google.com/p/android/issues/detail ID = 179493 并且重复此: https://开头code。 google.com/p/android/issues/detail?id=181697

Before you claim DUPLICATE please read the question.

This only occurs with the latest version of the build tools. Older versions do not display this problem. I've already tried the solutions offered on other questions here for multiple definitions of @AnimRes. None have helped so far, which is why I posted a new question. Same symptoms, different cause, different solution.

I can build without problem when using buildToolsVersion 22.0.1, but when I switch to buildToolsVersion 23 the build fails with error

UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Landroid/support/annotation/AnimRes; at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596) at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554) at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:502) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334) at com.android.dx.command.dexer.Main.run(Main.java:277) at com.android.dx.command.dexer.Main.main(Main.java:245) at com.android.dx.command.Main.main(Main.java:106)

This is a list of my dependencies:

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'

To ensure everyone (including Espresso) uses the same version of the support-annotations I have the following in my build file:

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

Removing this will cause other failures.

Is this a possible bug in the build tools or am I doing something wrong? I've tried setting Incremental false in dexOptions. It didn't help.

Using ./gradlew -q app:dependencies I get the following:

+--- 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

解决方案

Update: This is fixed in the 23.0.1 version of build tools as the support directory is no longer included in renderscript-v8.jar

The culprit is the version of renderscript-v8.jar that is included in the build tools.

I think this tree output tells everything:

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

I've tagged the directories with the version of the build tools that included them. Notice the annotations subdirectory in renderscript-v8-23 that doesn't exist in renderscript-v8-22.0.01.

There is already a report of the issue here: https://code.google.com/p/android/issues/detail?id=179493 And a duplicate here: https://code.google.com/p/android/issues/detail?id=181697

这篇关于使用buildToolsVersion 23失败,因为多个DEX文件定义“AnimRes”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆