我有一个应用程序,有很多现有的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弄清楚如何删除它 .