我有一个应用程序,有很多现有的Retrofit 1.9接口 . 我想逐步升级到Retrofit 2.x(目前一切都不可行)以获得对RxJava调用适配器的支持(并且因为不再开发1.9) .
让Retrofit1的 RestAdapter
共享一个将在Retrofit2接口中使用的OkHttp3客户端是相当简单的 . 版本1.9和2.x也有不同的maven groupIds,因此这些类可以并排存在而没有任何问题 .
但是,我在运行时遇到以下异常:
java.lang.IllegalAccessError: Method 'com.google.gson.stream.JsonWriter com.google.gson.Gson.newJsonWriter(java.io.Writer)' is inaccessible to class 'retrofit2.converter.gson.GsonRequestBodyConverter'
Retrofit 1对GSON 2.3.1有很强的依赖性,所讨论的方法在GSON 2.4中公开 . 我已经设置了我的Gradle依赖项,以便GSON依赖项解析为v2.7(我发布的最新版本):
build.gradle
compile('com.squareup.retrofit:retrofit:1.9.0') {
exclude module: 'gson'
}
compile 'com.jakewharton.retrofit:retrofit1-okhttp3-client:1.1.0'
compile "com.squareup.retrofit2:retrofit:2.3.0"
compile "com.squareup.retrofit2:converter-gson:2.3.0"
compile "com.squareup.retrofit2:adapter-rxjava:2.3.0"
compile 'com.google.code.gson:gson:2.7'
运行 ./gradlew :app:dependencies
表示正在解析GSON 2.7,但运行时行为是可疑的......
Update: 我发现第三方硬件SDK正在将GSON 2.3.1捆绑在其中's AAR. I can' t弄清楚如何删除它 .