使用渲染脚本支持lib时出现多个dex错误

时间:2015-08-17 13:40:06

标签: android android-support-library renderscript

我在gradle文件中使用支持库中的渲染脚本。

  renderscriptTargetApi 22
  renderscriptSupportModeEnabled true

添加这两行后,我收到此错误

at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
UNEXPECTED TOP-LEVEL EXCEPTION:com.android.dex.DexException: Multiple dex files define Landroid/support/annotation/AnimRes;
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.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)
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException:    
org.gradle.process.internal.ExecException: Process 'command 'C:\Program       
 Files\Java\jdk1.8.0_25\bin\java.exe'' finished with non-zero exit value 2

4 个答案:

答案 0 :(得分:8)

我有类似的问题。尝试添加到您的gradle文件

multiDexEnabled true

只是为了确保你没有超过Android(Java finished with non-zero exit value 2 - Android Gradle)规定的65K方法dex限制。如果您正在使用其他一些Android支持库,如appcompat或design或support-v4 / v7 ...请在您的gradle文件中添加另一行

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

Renderscript库已经包含了support-annotations库,我想这可能会与其他支持库发生冲突。无论如何,这些gradle命令为我修复了它。

编辑:据说在Android支持库的23.1.0版本中修复了它,因此在更新到23.1.0之后,您需要删除所有* .exclude命令。否则,由于缺少支持 - 注释库,您的应用程序将无法编译。

答案 1 :(得分:2)

https://code.google.com/p/android/issues/detail?id=181697就是这个错误,还有一个临时的解决方法。

答案 2 :(得分:0)

  dexOptions {
  preDexLibraries = false
}

在build.gradle文件中尝试在android块中添加以下块。

答案 3 :(得分:0)

使用

 renderscriptTargetApi 18
 renderscriptSupportModeEnabled true