android - 在一个 gradle 文件中设置所有依赖项?
问题描述
我有的
我的 android 项目中有两个不同的模块:
- app:这是主要的app android模块,几乎所有的app代码都存放在这里。
- 核心:这是另一个模块,我想在其中指定将在应用程序模块中使用的所有基本代码,例如 BaseFragment、BaseViewModel 或我想在应用程序模块中实现的接口。
在核心build.gradle
文件中,我拥有所有这些依赖项:
//Moshi
implementation "com.squareup.moshi:moshi-kotlin:$moshi_version"
//Retrofit
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
implementation "com.squareup.retrofit2:converter-moshi:$moshi_converter_version"
//okhttp
implementation "com.squareup.okhttp3:okhttp:$okhttp3_version"
implementation "com.squareup.okhttp3:logging-interceptor:$okhttp_loggin_interceptor"
//Koin
implementation "io.insert-koin:koin-android:$koin_version"
implementation "io.insert-koin:koin-androidx-viewmodel:$koin_viewmodel_version"
我不想在应用程序build.gradle
文件中声明所有这些依赖项。
我正在阅读一些博客和Gradle 官方文档,但我无法成功实现这一点。
我想要的是
我想从核心模块 gradle 文件中“继承”所有依赖项
项目的结构应该是这样的:
core
|_build.gradle (common dependencies)
|_app
|_build.gradle (just specific dependencies)
我试过的
我已经读到可以按如下方式实现核心项目(在应用程序 build.gradle 文件中):
dependencies {
implementation project (":core")
......
}
但是我在应用程序模块中有一些使用无法找到的核心类的类。例如:
import com.example.core.presentation.base.BaseViewModel
该错误表示无法解析引用,就像它不存在一样。
一些想法?
提前致谢!!
解决方案
实现这一点的最简单方法是使用约定插件。不要让插件部分吓到你太多,这是一些设置但并不复杂。
那里有 3 个选项:
- 将插件放在 buildSrc 目录中并让 gradle 自动拾取它
- 将插件放在特定模块中并包含构建(复合构建)
- 将插件放在特定模块中,将其释放并作为二进制依赖插件加载。
更多信息可以在这里找到: https ://docs.gradle.org/current/samples/sample_convention_plugins.html
或者,如果您只想将版本维护在一个地方,但不介意将依赖项放在两个构建 gradle 文件中,那么平台可能会更容易:https ://docs.gradle.org/current/userguide/java_platform_plugin.html
推荐阅读
- c - 生成允许在给定范围内重复的随机数
- docker - 无法访问docker工具箱/usr/share/nginx/html中的docker路径
- asp.net - Response.Filter 与动态压缩 (IIS 7.5+)
- python - 气流设置 dag 取决于过去与触发规则
- ios - viewWillAppear 没有在 UIPageViewController 孩子上被调用
- java - 正则表达式计数 <>
- networking - 无法加入频道。SimulateProposal() 导致链码名称:“cscc”响应状态 500
- python - 无法替换熊猫列中包含 $ 的字符串
- eslint - eslint no-extraneous-dependencies 问题
- php - 在php中传递onclick Jquery变量问题