OkHttpClient在更新Retrofit到Retrofit 2后损坏

时间:2016-07-27 05:15:58

标签: java android retrofit retrofit2 okhttp3

从改装到改造2更新后出现此错误。

  

致命异常:OkHttp Dispatcher                                                                                过程:nz.co.datacom.mars.junction,PID:21616
  java.lang.NoSuchMethodError:没有虚方法   log(Ljava / lang / String;)类Lokhttp3 / internal / Platform中的V;或者它的   超级类('okhttp3.internal.Platform'的声明出现在   /data/app/nz.co.datacom.mars.junction-1/base.apk)
  在   okhttp3.logging.HttpLoggingInterceptor $记录器$ 1.登录(HttpLoggingInterceptor.java:109)   在   okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:157)   在   okhttp3.RealCall $ ApplicationInterceptorChain.proceed(RealCall.java:190)   在okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:163)   在okhttp3.RealCall.access $ 100(RealCall.java:30)
  在okhttp3.RealCall $ AsyncCall.execute(RealCall.java:127)
  在okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
  在   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)   在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:588)   在java.lang.Thread.run(Thread.java:818)

我在应用程序中使用的libs版本是:

    compile 'com.squareup.okhttp3:okhttp:3.2.0'
    compile 'com.squareup.okhttp3:okhttp-urlconnection:3.2.0'
    compile 'com.squareup:otto:1.3.7'
    compile 'com.google.code.gson:gson:2.6.2'
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
    compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'

不确定是否是因为okhttp版本,但我尝试了2.3.0和3.4.0之间的几个不同版本,但没有一个能够正常工作。

有什么想法吗?提前谢谢。

2 个答案:

答案 0 :(得分:12)

和你一样有问题。

首先,扔掉:

compile 'com.squareup.okhttp3:okhttp:3.2.0'

Retrofit具有okhttp3因为它的依赖性,因此不需要它。此外,当您检查here Retrofit 2.1.0取决于okhttp 3.3.0时,可能会发生冲突。请记住,最终的依赖版本是您在gradle文件中编写的版本。如果你不写,那么Gradle会自动解析它并获取正确的版本。

还有更新版本的Logging Interceptor和urlconnection:

compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
compile 'com.squareup.okhttp3:okhttp-urlconnection:3.4.1'

希望能解决问题。

答案 1 :(得分:0)

此外,了解此修复程序最重要的是确保okhttp3依赖项具有与协作者所说的here相同的版本号