【问题标题】:Build error with the duplicates (Apache HttpClient) - Android重复生成错误 (Apache HttpClient) - Android
【发布时间】:2016-07-18 08:40:57
【问题描述】:

我想在我的应用程序中使用 Twilio。为此我添加了依赖项

compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'

但问题是,当我尝试构建时出现构建错误

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: org/apache/http/concurrent/Cancellable.class

Build.gradle

apply plugin: 'com.android.application'

    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.3"
    //    useLibrary  'org.apache.http.legacy'
        packagingOptions {
            exclude 'META-INF/DEPENDENCIES.txt'
            exclude 'META-INF/DEPENDENCIES'
            exclude 'META-INF/dependencies.txt'
            exclude 'META-INF/LICENSE.txt'
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/license.txt'
            exclude 'META-INF/LGPL2.1'
            exclude 'META-INF/NOTICE.txt'
            exclude 'META-INF/NOTICE'
            exclude 'META-INF/notice.txt'
            exclude 'META-INF/ASL2.0'
        }
        defaultConfig {
            applicationId "com.example.twillosample"
            minSdkVersion 19
            targetSdkVersion 22
            versionCode 1
            versionName "1.0"
            multiDexEnabled true
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }

    }
    allprojects {
        repositories {
            jcenter()
        }
    }
    dependencies {
        compile 'com.android.support:appcompat-v7:23.3.0'
        compile 'com.twilio.sdk:twilio-java-sdk:5.10.0'
        compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
    //    compile (group: 'org.apache.httpcomponents' , name: 'httpmime' , version: '4.3.5') {
    //        exclude module: 'org.apache.httpcomponents:httpclient-android'
    //    }
    }

【问题讨论】:

  • 你能发布你的build.gradle吗?
  • 我试了很多次,请你帮忙如何排除依赖
  • @JagadeshSeeram 我已添加为答案。

标签: android apache httpclient


【解决方案1】:

主要原因是org.apache.httpcomponents的重复条目,以便Catch一个可能包含org.apache.httpcomponents的可能编译并排除它。我们以ews-java-api为例。

假设您的build.gradle 中可能有两个编译,

compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
compile 'com.microsoft.ews-java-api:ews-java-api:2.0'

然后你必须从com.microsoft.ews-java-api:ews-java-api:2.0 编译中排除org.apache.httpcomponents,

compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
compile ('com.microsoft.ews-java-api:ews-java-api:2.0') {
    exclude group: 'org.apache.httpcomponents'
}

注意:这只是一个例子,也请参考this discussion,

【讨论】:

  • 我在我的 gradle 中添加了排除
  • 你有没有在两个编译中分别尝试过?
  • 即使我在 gradle 中添加了“httpclient”。有一个异常 - NoClassDefFound - PoolingClientConnectionManager
  • 你确定你已经添加了仅在compile 'com.twilio.sdk:twilio-java-sdk:5.10.0'中排除的内容
  • 是...排除模块:'httpcore'
猜你喜欢
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多