gradle中的Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoC

最近在使用gradle的过程中遇到了这么一个报错:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
    at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
    at com.android.dx.command.dexer.Main.run(Main.java:232)
    at com.android.dx.command.dexer.Main.main(Main.java:174)
    at com.android.dx.command.Main.main(Main.java:91)
其实我只是引用了一下recycleview,结果就死活编译不过去了。一番折腾加Google之后终于解决。
问题根本原因:
	库与库之间存在交叉编译,一个class被编译了两次,所以报错。
查看交叉依赖的方法:
	使用gralde命令:./gradlew.bat -q dependencies,然后就可以看到项目与项目之间的依赖关系,不过这招对我的问题完全没用。
问题解决:
	这个项目我是后来接手的,原来是基于eclipse编译,后面是我手动加入的gralde编译并加了一些新功能,结果没曾想,老项目的libs
目录下面居然有个support-v4的jar包!!上面的交叉命令是看不到本地libs下面的jar包依赖的(本地也没依赖。。。),删掉libs下面多余的
v4包,搞定。
 
  

你可能感兴趣的:(gradle中的Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoC)