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

时间:2015-01-29 18:52:21

标签: android maven

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

我的资料库是MaterialList,可以通过

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

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

  3. 对于测试,你可以克隆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)
    

    有关如何使其不发生的任何建议?

    提前致谢

1 个答案:

答案 0 :(得分:1)

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'

但这可能是我的错误。如果有任何这些解决方案适合您,请告诉我。