Ivá*_*oko 3 android google-drive-api
我正在尝试按照示例应用程序将我的应用程序从已弃用的 Android Drive API 更新为 Drive REST API 。
在尝试构建签名发布 APK 时,我遇到了以下 lint 问题:
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'
}
}
Run Code Online (Sandbox Code Playgroud)
我猜这个问题是由以下原因引起的:
implementation 'com.google.http-client:google-http-client-gson:1.26.0'
Run Code Online (Sandbox Code Playgroud)
就像这条评论说:
如果排除 httpclient,我将无法获得发布 apk
还有哪些其他解决方案?
尝试org.apache.httpcomponents从google-http-client-gson. 然后,如果您的项目需要 Apache HttpClient 类,请使用一些包装器来提供它们,例如,即使以最新的 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'
Run Code Online (Sandbox Code Playgroud)
然后您只需要将所有org.apache.http导入更改为cz.msebera.android.httpclient,例如
import org.apache.http.HttpResponse
Run Code Online (Sandbox Code Playgroud)
变成
import cz.msebera.android.httpclient.HttpResponse
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2373 次 |
| 最近记录: |