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

Volley迁移至Retrofit时遇OkHttp重复依赖冲突问题求助

解决Retrofit迁移中的OkHttp重复类冲突问题

这个问题我之前帮团队排查过好几次,本质就是项目中重复引入了OkHttp依赖导致的类打包冲突——Retrofit本身默认依赖OkHttp,而你项目里的其他第三方库(比如旧版的图片加载框架、遗留的网络工具库)也自带了相同版本的OkHttp,就会出现Duplicate zip entry这个报错。

下面是具体的解决步骤:

1. 先定位重复依赖的来源

打开终端,在项目根目录执行Gradle命令查看完整依赖树:

# Mac/Linux
./gradlew app:dependencies

# Windows
gradlew app:dependencies

在输出结果里搜索okhttp,你会看到多个依赖库都引入了okhttp3:okhttp:3.10.0,这就是冲突的根源。

2. 排除重复的OkHttp依赖

找到带重复OkHttp的第三方库后,在app/build.gradle里给该依赖添加排除规则,比如假设是com.xxx.oldlibrary:1.2.3带了重复依赖:

implementation('com.xxx.oldlibrary:1.2.3') {
    // 排除该库自带的OkHttp
    exclude group: 'com.squareup.okhttp3', module: 'okhttp'
}

如果有多个库都带了重复依赖,或者你想统一项目里的OkHttp版本,可以在根目录的build.gradle里添加强制版本规则:

allprojects {
    repositories {
        google()
        jcenter()
        // 你的其他仓库配置
    }
    configurations.all {
        resolutionStrategy {
            // 强制所有依赖使用指定版本的OkHttp
            force 'com.squareup.okhttp3:okhttp:3.10.0'
            // 也可以升级到更稳定的兼容版本,比如3.12.13(适配compileSdk 27)
            // force 'com.squareup.okhttp3:okhttp:3.12.13'
        }
    }
}

3. 清理缓存后重新构建

执行以下命令清理Gradle缓存和构建产物,避免旧缓存导致的问题:

./gradlew clean build

额外提示

你的targetSdkVersion设置为22,虽然和本次冲突无关,但建议尽量升级到和compileSdkVersion一致的27,这样能避免很多系统API兼容问题,也能更好地适配Retrofit和OkHttp的特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:32:18