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

Getting Multiple dex error when using render script support lib

我在 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
  dexOptions {
  preDexLibraries = false
}

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

https://code.google.com/p/android/issues/detail?id=181697 是此问题的错误,以及临时解决方法。

使用

 renderscriptTargetApi 18
 renderscriptSupportModeEnabled true

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

multiDexEnabled true

只是为了确保您没有超过 Android () 规定的 65K 方法 dex 限制。如果您正在使用其他一些 android 支持库,例如 appcompat 或 design 或 support-v4/v7... 添加另一行到您的 gradle 文件

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

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

编辑: 据推测,它已在 Android 支持库的 23.1.0 修订版中修复,因此在更新到 23.1.0 后,您需要将其全部删除*.exclude 命令。否则,您的应用将因缺少支持注释库而无法编译。