Getting Multiple dex error when using render script support lib

匆匆过客 提交于 2019-11-28 10:15:52

问题


I am using render script in support library in my gradle file.

  renderscriptTargetApi 22
  renderscriptSupportModeEnabled true

After I added these 2 lines, I am getting this error

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

回答1:


I've had similar issue. Try add to your gradle file

multiDexEnabled true

just to be sure you are not exceeding the 65K methods dex limit imposed by Android (Java finished with non-zero exit value 2 - Android Gradle). If you are using some other android-support libraries like appcompat or design or support-v4/v7... add another line to your gradle file

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

Renderscript library already includes support-annotations library, which then may collide with those other support libraries, I suppose. Anyway, these gradle commands fixed it for me.

Edit: It was supposedly fixed in 23.1.0 revisions of Android support libraries, therefore after updating to 23.1.0 you'd need to remove that all*.exclude command. Otherwise your app would not compile due to missing support-annotations library.




回答2:


https://code.google.com/p/android/issues/detail?id=181697 is the bug for this, along with a temporary workaround.




回答3:


  dexOptions {
  preDexLibraries = false
}

In your build.gradle file try adding the following block inside your android block.




回答4:


Use

 renderscriptTargetApi 18
 renderscriptSupportModeEnabled true


来源:https://stackoverflow.com/questions/32051938/getting-multiple-dex-error-when-using-render-script-support-lib

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!