我有一个Android项目,使用gradle设置,包括:
1。)两个子项目(Android Studio模块构建略有不同的应用程序),带有自己的build.gradle文件。
和
2。)一个"图书馆项目"共享,通用代码。
目前,"依赖"这两个子项目的build.gradle文件的块有一堆相同的行(违反了#34;不要重复自己"原则。):
dependencies {
....
implementation rootProject.ext.timber
implementation rootProject.ext.glide
....
}
这些行引用文件中的定义" dependencies.gradle"在项目设置的根目录中。
ext {
timber = 'com.jakewharton.timber:timber:4.7.0'
glide = 'com.github.bumptech.glide:glide:4.6.1'
....
}
("实现foo"行的列表比这个例子中的长得多。)
现在我的问题: 在一个地方定义这些依赖项的最佳方法是什么?或者,避免在整个地方重复这些操作的最佳方法是什么(例如,如果我有两个以上的模块共享一些相同的依赖项)。
答案 0 :(得分:1)
我有点理解你在问什么,但是......如果你不分享,那么“共同的共享代码”有什么意义,例如,Glide? :)
事实上,如果您使用的是Gradle 3. +那么您必须使用implementation
更改api
所以,在你的公共库/代码中:
dependencies {
....
api rootProject.ext.timber
api rootProject.ext.glide
....
}
如果您想了解更多相关信息,请查看the official docs以了解草图迁移(他们介绍了所有这些新内容)。
你会发现:
implementation 'example.dependency:1.0.0’
- >仅在此模块中使用。api 'example.dependency:1.0.0’
- >也适用于任何依赖于模块的构建版本。答案 1 :(得分:1)
您可以通过让根构建将常用步骤应用于不同的项目来共享项目配置。
使用:
allprojects {
// Shared config for ALL projects goes here
}
或与:
subprojects {
// Shared config for ALL child projects
}
所以在你的情况下,你会有:
subprojects {
dependencies {
....
implementation rootProject.ext.timber
implementation rootProject.ext.glide
....
}
}
除了这些方法之外,您还可以使用configure()
方法,该方法将项目列表作为参数,并仅配置这些方法。您可以使用任何您喜欢的过滤系统来获取项目列表。