Android多模块项目如何将通用依赖统一配置在core模块Gradle文件中
问题根因
Gradle 的 implementation 关键字声明的依赖仅对当前模块可见,不会向上传递给依赖当前模块的其他模块。你当前 core 模块里的自定义代码、以及 core 声明的第三方依赖,都只能在 core 内部使用,app 模块依赖 core 时默认拿不到这些类,因此会报类解析失败的错误。
解决方案
1. 替换 core 模块的依赖声明关键字
把 core 模块 build.gradle 里需要暴露给上层模块使用的依赖,从 implementation 改成 api:
//Moshi api "com.squareup.moshi:moshi-kotlin:$moshi_version" //Retrofit api "com.squareup.retrofit2:retrofit:$retrofit_version" api "com.squareup.retrofit2:converter-moshi:$moshi_converter_version" //okhttp api "com.squareup.okhttp3:okhttp:$okhttp3_version" api "com.squareup.okhttp3:logging-interceptor:$okhttp_loggin_interceptor" //Koin api "io.insert-koin:koin-android:$koin_version" api "io.insert-koin:koin-androidx-viewmodel:$koin_viewmodel_version"
api 关键字声明的依赖会向上传递,app 模块只要保留原有 implementation project(":core") 配置,就能直接使用这些第三方库的类、以及 core 模块自己写的公共类(比如 BaseViewModel、BaseFragment),不需要再重复声明依赖。
2. 异常排查
如果修改完依赖声明后还是报 core 类找不到,依次检查以下配置:
- 确认 core 模块是 Android 库类型:core 模块的
build.gradle顶部必须声明id 'com.android.library'(旧版 AGP 为apply plugin: 'com.android.library'),不能是 application 类型,application 模块无法被其他模块依赖。 - 确认根目录
settings.gradle已引入 core 模块:必须存在include ':core'声明,缺失的话补上即可。 - 重新同步 Gradle 配置:修改完所有 gradle 文件后,点击 Android Studio 右上角的「Sync Project with Gradle Files」按钮同步配置,也可以执行清理缓存重启操作确保配置生效。
- 确认类包名和修饰符正确:检查导入的类包名和实际文件的包名完全一致,Kotlin 类默认是 public 修饰,不需要额外调整,如果是 Java 类要确保没有加 private 修饰符。
可选优化
如果部分依赖只有 core 模块内部使用、不需要开放给 app 模块,依然可以保留 implementation 声明,既不会污染上层依赖空间,也能加快编译速度。
内容的提问来源于stack exchange,提问作者Sergio
相关产品推荐
相关产品推荐

