You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

引入OkHttp 4后原有依赖OkHttp 3的Retrofit 2项目代码报错如何解决

问题解答

能否同时使用两个版本的OkHttp库

默认情况下无法直接在同一个项目中同时使用两个版本的OkHttp。Gradle处理依赖冲突时会默认选择最高版本的依赖,且同一个包名的类在类加载时只会被加载一次,高版本的类会直接覆盖低版本实现,最终只会有一个版本的OkHttp生效。

如果确实需要同时使用两个版本,可以通过Shadow插件对其中一方的OkHttp依赖进行重打包,修改其包名路径避免冲突,但该方案操作复杂度高,仅作为特殊场景下的备选。

报错原因说明

你遇到的所有构建报错都是OkHttp 4.x的API不兼容导致的:
OkHttp 4.x采用Kotlin重构后,原3.x版本中的Java风格Getter方法(如uri()、method()、body()等)全部调整为Kotlin属性,parse()方法调整为扩展函数,uri()方法替换为toUri(),因此适配OkHttp 3.x的代码在4.x版本依赖下会触发上述编译错误。
Android Studio没有高亮提示是因为IDE索引和实际构建依赖版本不同步,执行File -> Invalidate Caches重启IDE后就会显示对应的代码报错。

推荐解决方案

优先选择升级原有项目代码适配OkHttp 4.9.1,该方案成本最低且可长期维护:

  • 原uri()调用替换为toUri()
  • 原method()、body()、code()等Getter调用,Java代码可替换为对应的getMethod()、getBody()、getCode(),Kotlin代码可直接调用对应属性
  • 原MediaType.parse()调用替换为MediaType.get()
  • Retrofit 2.9.0完全兼容OkHttp 4.x版本,适配后原有功能不会受影响

如果实在不想调整原有代码,可尝试对第三方库的OkHttp依赖进行排除,但该方案会导致第三方库运行异常,不推荐。

内容的提问来源于stack exchange,提问作者user2164852

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:06:03