我已经开发了一个已经存在了几个月的库,并且在从Sonatype存储库下载它时遇到了问题(将其上传正常)。
我的库是MaterialList,可以通过导入
将此行添加到您的build.gradle文件中
compile 'com.github.dexafree.materiallist:2.1.0'
克隆项目并手动将库添加为模块
为了进行测试,您可以克隆存储库并尝试这两个选项,将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)
关于如何避免这种情况的任何建议?
提前致谢
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'
不过,这对我来说可能是一个错误。让我知道这些解决方案是否对您有用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句