Gradle从2.x.x升级至3.1.2后Retrofit相关类无法解析求助
解决Gradle升级至3.1.2后Retrofit2.Callback无法解析的问题
我之前升级Gradle时也踩过类似的依赖传递坑,版本迭代带来的规则变化确实容易让人懵,给你几个针对性的排查和解决步骤:
1. 先确认Android Gradle插件与Gradle版本的匹配性
Gradle 3.1.2必须对应Android Gradle插件3.1.2,这是很多依赖解析问题的根源。打开项目根目录的build.gradle,检查这一行:
buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.1.2' // 必须和Gradle版本对应 } }
版本不匹配会导致依赖传递逻辑混乱,先把这个基础问题解决。
2. 确认SDK模块的依赖配置正确
你在SDK模块里用api引入Retrofit的做法是对的(api会把依赖传递给上层模块),但可以再核对下依赖代码:
dependencies { api "com.squareup.retrofit2:retrofit:2.4.0" // 如果项目用到了Converter、CallAdapter这类扩展库,也要用api引入,比如: // api "com.squareup.retrofit2:converter-gson:2.4.0" }
别不小心写成implementation,那样依赖就不会传递到子模块了。
3. 修改子模块引入SDK的方式
你当前用的api project(path: ':sdk', configuration: 'default')是Gradle旧版本的写法,3.x版本里已经不需要指定configuration: 'default',直接改成:
dependencies { // 如果子模块需要把SDK的依赖继续传递给更上层,用api;否则用implementation即可 api project(':sdk') // 或者 implementation project(':sdk') }
default配置在Gradle 3.x中已经被apiElements和runtimeElements替代,指定旧配置会导致依赖传递不完整。
4. 清理Gradle缓存并重新构建
升级后本地缓存可能残留旧的依赖信息,执行以下命令彻底清理:
./gradlew clean build --refresh-dependencies
这个命令会清空缓存并强制重新下载所有依赖,能解决很多莫名其妙的"找不到类"问题。
5. 检查SDK模块的类型配置
确保SDK模块是Android库模块,在它的build.gradle开头有:
apply plugin: 'com.android.library'
如果误写成com.android.application,依赖传递也会失效。
按这些步骤走下来,应该就能解决retrofit2.Callback无法解析的问题了。
内容的提问来源于stack exchange,提问作者alexfi
相关产品推荐
相关产品推荐

