使用 buildToolsVersion 23 失败,因为多个 dex 文件定义 'AnimRes'
Using buildToolsVersion 23 fails because Multiple dex files define 'AnimRes'
在您声明 DUPLICATE 之前,请阅读问题。
只有最新版本的构建工具才会出现这种情况。旧版本不显示此问题。对于 @AnimRes
的多个定义,我已经尝试过针对其他问题提供的解决方案。 None 到目前为止提供了帮助,这就是我发布新问题的原因。同样的症状,不同的原因,不同的解决方法。
我可以在使用 buildToolsVersion 22.0.1
时毫无问题地构建,但是当我切换到 buildToolsVersion 23
时,构建失败并出现错误
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)
这是我的依赖项列表:
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)都使用相同版本的 support-annotations
我的构建文件中包含以下内容:
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:23.0.0'
}
删除它会导致其他故障。
这可能是构建工具中的错误,还是我做错了什么?
我试过在 dexOptions
中设置 Incremental false
。没用。
使用 ./gradlew -q app:dependencies
我得到以下信息:
+--- 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
更新:这已在 23.0.1 版本的构建工具中修复,因为 support
目录不再包含在 renderscript-v8.jar
罪魁祸首是构建工具中包含的 renderscript-v8.jar
版本。
我认为这个 tree
输出说明了一切:
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
中的 annotations
子目录在 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
我不能说我理解这个解决方案 - 或者它一定是一个很好的解决方案,但它让我的应用程序再次编译:
configurations.all {
exclude group: 'com.android.support', module: 'support-annotations'
}
另见:
此解决方案归功于 Luboš Staráček
在您声明 DUPLICATE 之前,请阅读问题。
只有最新版本的构建工具才会出现这种情况。旧版本不显示此问题。对于 @AnimRes
的多个定义,我已经尝试过针对其他问题提供的解决方案。 None 到目前为止提供了帮助,这就是我发布新问题的原因。同样的症状,不同的原因,不同的解决方法。
我可以在使用 buildToolsVersion 22.0.1
时毫无问题地构建,但是当我切换到 buildToolsVersion 23
时,构建失败并出现错误
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)
这是我的依赖项列表:
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)都使用相同版本的 support-annotations
我的构建文件中包含以下内容:
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:23.0.0'
}
删除它会导致其他故障。
这可能是构建工具中的错误,还是我做错了什么?
我试过在 dexOptions
中设置 Incremental false
。没用。
使用 ./gradlew -q app:dependencies
我得到以下信息:
+--- 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
更新:这已在 23.0.1 版本的构建工具中修复,因为 support
目录不再包含在 renderscript-v8.jar
罪魁祸首是构建工具中包含的 renderscript-v8.jar
版本。
我认为这个 tree
输出说明了一切:
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
中的 annotations
子目录在 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
我不能说我理解这个解决方案 - 或者它一定是一个很好的解决方案,但它让我的应用程序再次编译:
configurations.all {
exclude group: 'com.android.support', module: 'support-annotations'
}
另见:
此解决方案归功于 Luboš Staráček