首页 文章

build.gradle依赖于改造和最新版本的okhttp

提问于
浏览
5

在我们的应用程序中,我们使用改造来进行以下依赖的网络连接:

compile 'com.squareup.retrofit2:retrofit:2.3.0'
 compile 'com.squareup.retrofit2:converter-gson:2.3.0'

最近我们开始得到这个crash已经解决了 . 那我怎么在我们的应用程序中解决这个问题?我的理解是改造是 Build 在okHttp库的基础之上的 . 这是否意味着我们必须等待包含新okHttp版本的新版本改装或者我可以手动包含新版本的okHttp作为单独的依赖并最终得到:

compile 'com.squareup.retrofit2:retrofit:2.3.0'
 compile 'com.squareup.retrofit2:converter-gson:2.3.0'
 compile 'com.squareup.okhttp3:okhttp:3.8.1'

Proguard配置(虽然只是改装部分)

-dontnote retrofit2.Platform
-dontwarn retrofit2.Platform$Java8
-dontwarn okhttp3.**
-dontwarn retrofit2.**
-dontwarn com.squareup.picasso.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions
-keepclasseswithmembers class * { @retrofit2.http.* <methods>; }
-keepclasseswithmembers interface * { @retrofit2.* <methods>; }
-dontwarn okio.**

3 回答

  • 0

    是的你可以通过添加 compile 'com.squareup.okhttp3:okhttp:3.8.1' 强制新的okhttp版本

    如果你运行 gradlew app:dependencies ,你会看到:

    releaseCompileClasspath - Resolved configuration for compilation for variant: release
    +--- com.squareup.retrofit2:retrofit:2.3.0
    |    \--- com.squareup.okhttp3:okhttp:3.8.0 -> 3.8.1
    |         \--- com.squareup.okio:okio:1.13.0
    

    这意味着,Retrofit声明依赖 okhttp:3.8.0 ,但是Gradle将其替换为 okhttp:3.8.1

    PS:当您没有定义自定义依赖关系解析策略时,这适用于情境

  • 0

    添加这两个并尝试

    compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
    compile 'com.squareup.okhttp:okhttp:2.0.0'
    
  • 0
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
        compile 'com.squareup.retrofit2:converter-gson:2.1.0'
        compile 'com.google.code.gson:gson:2.7'
        compile 'com.squareup:otto:1.3.8'
        compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
    

相关问题