从 Sonatype 下载我的库时出现多个 dex 文件错误

Multiple dex files error when downloading my library from Sonatype

我开发了一个已经存在了几个月的库,但我在从 Sonatype 存储库下载它时遇到了问题(上传它工作正常)。

我的库是MaterialList,可以通过

导入
  1. 将此行添加到您的 build.gradle 文件

    compile 'com.github.dexafree.materiallist:2.1.0'
    
  2. 克隆项目并手动将库添加为模块

为了测试,您可以克隆 repo 并尝试两个选项,将 app/build.gradle 行从 compile project() 更改为第一个选项

当您通过设置 compile project 选项编译和 运行 时,它工作得很好。

但是当它从 Sonatype 下载时,它抱怨多个 dex 文件在我的库中需要的库上定义 class。

完整的跟踪如下:

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-manipulationlib-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'

虽然这可能是我的错误。让我知道这些解决方案是否适合您。