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

cop*_*lii 14 android android-support-library android-gradle-plugin

在您声明重复之前,请阅读问题.

只有最新版本的构建工具才会出现这种情况.旧版本不显示此问题.我已经尝试过在其他问题上提供的解决方案,用于多种定义@AnimRes.到目前为止没有任何帮助,这就是我发布一个新问题的原因.相同症状,不同原因,不同解决方案.

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

意外的顶级异常:com.android.dex.DexException:多个dex文件定义Landroid/support/annotation/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在com.android.dx.command.dexer.Main(Main.java:502)在com.android.dx.command.dexer.Main.runMonoDex(Main.java:334).运行(Main.java:277)在com.android.dx.command.dexer.Main.main(Main.java:245)在com.android.dx.command.Main.main(Main.java:

这是我的依赖项列表:

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'
Run Code Online (Sandbox Code Playgroud)

为了确保每个人(包括Espresso)使用相同版本的support-annotations我在我的构建文件中有以下内容:

configurations.all {
  resolutionStrategy.force 'com.android.support:support-annotations:23.0.0'
}
Run Code Online (Sandbox Code Playgroud)

删除它会导致其他故障.

这是构建工具中可能存在的错误还是我做错了什么?我试过设置Incremental falsedexOptions.它没有帮助.

使用./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
Run Code Online (Sandbox Code Playgroud)

cop*_*lii 10

更新:这已在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
Run Code Online (Sandbox Code Playgroud)

我用包含它们的构建工具的版本标记了目录.请注意,该annotations子目录中renderscript-v8-23不存在renderscript-v8-22.0.01.

此处已有问题报告:https ://code.google.com/p/android/issues/detail?id = 179493此处有重复说明:https://code.google.com/p/android/问题/细节?ID = 181697


Tim*_*eed 6

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

configurations.all {
    exclude group: 'com.android.support', module: 'support-annotations'
}
Run Code Online (Sandbox Code Playgroud)

另请参阅:使用渲染脚本支持lib时出现多个dex错误

感谢LubošStaráček提供此解决方案