无法在Gradle中排除重复的库

时间:2015-01-19 09:31:05

标签: android android-gradle

2 个答案:

答案 0 :(得分:1)

“com.android.dex.DexException:多个dex文件定义”

当一个.class文件或jarfile的内容的两个或多个副本被无意中包含在项目中时,会导致这种令人烦恼的错误。 (Gradle和/或Android Studio的新手经常被这个阻止)。

  1. 尝试在应用的顶级build.gradle中将其排除 -

    android {
        ...
        packagingOptions {
            exclude('org/apache/commons/codec/*')
        }
    }
    
  2. 检查库是否多次包含为依赖项:查看项目的所有build.gradle文件以确保它只被包含一次。

     compile 'org.apache.commons.code' ...
    
  3. 库或子项目还可能包含复制库或类文件的副本:您可以将库排除在编译到应用程序中的位置,在build.gradle文件中查找其编译规范 -

    dependencies {
        ...
        compile('com.googlecode.json-simple:json-simple:1.1.1') {
            exclude group: 'org.hamcrest'
        }
    }
    
  4. 如果这不起作用,请尝试将“,module:'library'”附加到排除行,即.-

        compile('com.googlecode.json-simple:json-simple:1.1.1') {
            exclude group: 'org.hamcrest', module: 'library'
        }
    
  5. 要准确确定哪个库或子项目包含重复的类文件,请尝试使用--debug运行gradle并查看控制台输出以跟踪包含来源的位置 -

    % gradle --debug release 2>&1 | less
    

答案 1 :(得分:0)

当我在api 23中使用HttpClient时,我遇到了类似的问题。我导入org.apache.http.legacy.jar问题出现了。我用useLibrary 'org.apache.http.legacy'来解决它。