Android Studio依赖,多个dex错误,dex合并

时间:2014-12-05 03:02:44

标签: android android-studio dependencies dex nineoldandroids

今天,当我将一个库(MaterialDesignLibrary)添加到我正在使用另一个库(Float Labeled EditText)的项目时,我遇到了多个dex文件的问题。

通过研究我发现冲突来自两个图书馆都使用九个机器人作为依赖。我测试并看到 Float Labeled EditText 引导我的项目在gradle同步时在我的外部库中添加“library-2.4.0.jar”,而 Material Design Library 包括“ nineoldandroids-2.4.0.jar“文件”/ libs“。

我尝试在这里和那里删除重复项,搜索几个小时的解决方案,但仍然没有运气。

在这种情况下,由于dex merger失败,jar文件名是多个dex错误的原因吗?或者DexMerger是否足够聪明,弄清楚两个不同的jar文件实际上是相同的依赖?

我不得不说我仍然不清楚DexMerger是如何运作的。


以下是我得到的错误:

Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:

...

Output:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lcom/nineoldandroids/animation/Animator$AnimatorListener;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
    at com.android.dx.command.dexer.Main.run(Main.java:230)
    at com.android.dx.command.dexer.Main.main(Main.java:199)
    at com.android.dx.command.Main.main(Main.java:103)

编辑12/5

我甚至尝试在app / libs中只放置一个nineoldandroids-2.4.0.jar副本,删除所有引用,包括来自其他两个模块的jar或maven repo依赖项(materialLib和floatlabeledittext)。然后我加入了两个模块

compile files(':app/libs/nineoldandroids-2.4.0.jar')

确保只引用了一个jar文件副本。

我的应用中的build.gradle

compile project(':materialLib')
compile project(':floatlabeledittext')

在依赖项下。还有多个dex错误。还尝试了Clean,Gradle Sync,使Caches / Restart无效。知道我错过了什么吗?

0 个答案:

没有答案