为什么更新到最新的Gradle插件会产生多个dex文件定义'问题

时间:2014-08-21 11:35:11

标签: android gradle

我有和android库项目,它有一个子项目取决于另一个。目前,在构建时,这可以正常工作。 build.gradle文件包含以下内容:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.11.+'
    }
}

但是,如果我将其更改为classpath 'com.android.tools.build:gradle:0.12.2',则会出现此错误

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lcom/mycompany/android/SomeClass;
    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)

如果我将其更改回0.11.+,那么它会再次构建。造成这种情况的原因是什么,以及如何在不进入新项目的情况下解决这个问题?

1 个答案:

答案 0 :(得分:0)

检查子项目中的libs文件夹,找到与其所依赖项目相同的库,如果找到它,则从项目结构中删除它(可以将其保留在光盘上)。我对新的gradle插件有同样的错误,我发现这是造成它的。