Lint错误:`httpclient`定义的类与Android现在提供的类冲突

时间:2019-01-24 20:44:22

标签: android google-drive-api

我正在尝试按照sample app将应用从不推荐使用的Android Drive API更新为Drive REST API。

当尝试构建签名的发行版APK时,出现以下问题:

  

httpclient定义与Android现在提供的类冲突的类。解决方案包括查找没有相同问题的较新版本或替代库(例如,对于httpclient使用HttpUrlConnection或okhttp替代),或使用jarjar之类的库重新打包该库。

这是我的gradle依赖项:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.google.android.gms:play-services-auth:16.0.1'
    implementation 'com.android.support:design:27.1.1'
    implementation 'com.android.support:customtabs:27.1.1'
    implementation 'com.google.http-client:google-http-client-gson:1.26.0'
    implementation('com.google.api-client:google-api-client-android:1.26.0') {
        exclude group: 'org.apache.httpcomponents'
    }
    implementation('com.google.apis:google-api-services-drive:v3-rev136-1.25.0') {
        exclude group: 'org.apache.httpcomponents'
    }
}

我猜这是由以下原因引起的:

    implementation 'com.google.http-client:google-http-client-gson:1.26.0'

我已经尝试过发布在herehere上的解决方案,但是它们不起作用。

this comment这样说:

  

如果排除httpclient,我将无法获得发布APK

还有什么其他解决方案?

1 个答案:

答案 0 :(得分:0)

尝试将org.apache.httpcomponents模块也从google-http-client-gson中排除。 然后,如果您的项目需要Apache HttpClient类,请使用一些包装器来提供它们,例如this one即使定位到最新的SDK也能很好地发挥作用。

我在app\build.gradle中使用以下代码块,并且工作正常(我仅使用google-http-client-gson模块的旧版本):

compile ('com.google.http-client:google-http-client-gson:1.19.0') {
    //Exclude conflicting modules
    exclude module: 'httpclient'
    exclude module: 'commons-logging'
}
//Add HttpClient classes from a different package
compile 'cz.msebera.android:httpclient:4.5.8'

然后,您只需将所有org.apache.http导入更改为cz.msebera.android.httpclient,例如

import org.apache.http.HttpResponse

成为

import cz.msebera.android.httpclient.HttpResponse