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

And*_*oob 5 android retrofit retrofit2 okhttp3

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

 compile 'com.squareup.retrofit2:retrofit:2.3.0'
 compile 'com.squareup.retrofit2:converter-gson:2.3.0'
Run Code Online (Sandbox Code Playgroud)

最近我们开始得到这个已经解决的崩溃.那我怎么在我们的应用程序中解决这个问题?我的理解是改造是建立在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'
Run Code Online (Sandbox Code Playgroud)

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.**
Run Code Online (Sandbox Code Playgroud)

DeK*_*szn 3

是的,您可以通过添加来强制使用新的 okhttp 版本compile 'com.squareup.okhttp3:okhttp:3.8.1'

如果你运行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
Run Code Online (Sandbox Code Playgroud)

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

PS:这适用于没有定义自定义依赖解析策略的情况