我开发了一个已存在几个月的库,从Sonatype存储库下载它时遇到问题(上传工作正常)。
我的资料库是MaterialList,可以通过
导入将此行添加到build.gradle文件
compile 'com.github.dexafree.materiallist:2.1.0'
克隆项目并手动将库添加为模块
对于测试,你可以克隆repo并尝试两个选项,将app / build.gradle行从compile project()更改为第一个选项中的那个
当您通过设置compile project
选项进行编译和运行时,它可以正常运行。
但是当它从Sonatype下载时,它会抱怨多个dex文件在我的库中需要的库中定义一个类。
完整跟踪如下:
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
/[sdk-path]/android/sdk/build-tools/21.1.2/dx --dex --no-optimize --output /[project-path]/MaterialList/app/build/intermediates/dex/debug --input-list=/[project-path]/MaterialList/app/build/intermediates/tmp/dex/debug/inputList.txt
Error Code:
2
Output:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lcom/nhaarman/listviewanimations/util/Swappable;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
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.mergeDexes(DexMerger.java:171)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
at com.android.dx.command.dexer.Main.run(Main.java:246)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)
有关如何使其不发生的任何建议?
提前致谢
答案 0 :(得分:1)
lib-manipulation
和lib-core-slh
都依赖于lib-core
。由于我没有在您的库中找到任何StickyListHeaders的内容,我认为您不需要lib-core-slh
依赖项。您还应该能够删除lib-core
依赖关系,因为lib-manipulation
包含此内容。
您也可以尝试直接包含依赖项,而不使用@aar
后缀。也许这会使事情变得混乱。
compile 'com.nhaarman.listviewanimations:lib-core:3.1.0'
compile 'com.nhaarman.listviewanimations:lib-manipulation:3.1.0'
compile 'com.nhaarman.listviewanimations:lib-core-slh:3.1.0'
但这可能是我的错误。如果有任何这些解决方案适合您,请告诉我。