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

集成Retrofit日志拦截器时遭遇Multiple dex文件定义冲突错误求助

解决Retrofit日志拦截器集成时的Dex重复定义问题

Hey,这个问题我之前也踩过坑!Multiple dex files define Lokhttp3/ResponseBody$BomAwareReader本质是项目里多个依赖库重复引入了OkHttp3的同一个类,导致Dex打包时合并冲突了。结合你给出的依赖配置,大概率是老版本的Google Play Services(12.0.1)和Retrofit依赖的OkHttp版本不一致或者重复引入了。

下面是具体的解决步骤:

1. 先排查重复依赖根源

执行Gradle命令查看项目的依赖树,找出重复的OkHttp引用:

# Mac/Linux
./gradlew app:dependencies

# Windows
gradlew app:dependencies

在输出结果里搜索okhttp,就能看到哪些依赖库偷偷引入了OkHttp(比如Play Services的某些模块可能自带了旧版OkHttp)。

2. 排除重复的OkHttp依赖

找到重复引入的来源后,在对应的依赖里排除OkHttp模块。比如如果是Play Services的base模块带的,就修改依赖配置:

implementation("com.google.android.gms:play-services-base:12.0.1") {
    exclude group: "com.squareup.okhttp3", module: "okhttp"
}

同理,其他Play Services模块如果也带了OkHttp,都可以用同样的方式排除。

3. 强制统一OkHttp版本(更稳妥的方式)

直接让整个项目所有依赖都使用同一个版本的OkHttp,避免版本不一致的冲突。在你的build.gradle(Module级别)里添加:

configurations.all {
    // 选一个和Retrofit兼容的稳定版本,比如4.9.3,可根据你的Retrofit版本调整
    resolutionStrategy.force 'com.squareup.okhttp3:okhttp:4.9.3'
    resolutionStrategy.force 'com.squareup.okhttp3:logging-interceptor:4.9.3'
}

4. 清理缓存后重新构建

有时候Gradle缓存会残留旧的依赖文件,执行清理命令后再构建:

# Mac/Linux
./gradlew clean build

# Windows
gradlew clean build

额外建议:升级Play Services版本

你用的12.0.1版本真的太老了,不仅容易出现依赖冲突,还存在安全漏洞。建议升级到较新的稳定版本(比如17.6.0及以上),升级后很多依赖兼容问题会自动消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:56:10