代码之家  ›  专栏  ›  技术社区  ›  Iván Nokonoko

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

  •  0
  • Iván Nokonoko  · 技术社区  · 5 年前

    我正在尝试通过以下操作将我的应用程序从不推荐的Android Drive API更新到Drive REST API sample app .

    当尝试构建签名版本APK时,我遇到了这个lint问题:

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

    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'
    

    我试过贴出的解决方案 here here ,但它们不起作用。

    this comment 说:

    如果排除httpclient,我将无法获得release apk

    0 回复  |  直到 5 年前
        1
  •  2
  •   kibitzerCZ    5 年前

    尝试排除 org.apache.httpcomponents 模块也来自 google-http-client-gson . 然后,如果您的项目需要Apache HttpClient类,请使用一些包装器来提供它们,例如。 this one

    app\build.gradle 它工作得很好(我只是使用旧版本的 谷歌http客户端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
    
    推荐文章