在多模块的Android项目中,我们需要在gradle中定义一些通用的参数、方法或者任务,然后提供给各个子模块使用。
最初的时候,我们会在projectRoot/build.gradle中定义属性或者方法,比如:
但是这种方式有点不足是,不能代码补全和单击跳转,查找和修改不是很方便。
参考:Gradle 提示与诀窍
注释buildSrc提供了更加灵活的配置,最重要的是它支持自动补全和单机跳转,我们需要在项目根目录下创建一个名为buildSrc的文件夹,在文件夹内创建build.gradle文件以及src/main/java/com/example/compositebuild/Versions.java,在Versions.java中定义属性。
然后在模块的build.gradle中直接引用属性。
目前来看,buildSrc已经非常不错了,至少在维护上面方便了很多,但是它有一个缺点是,当更新buildSrc时,会导致整个项目重新编译,增加编译时间,如果项目小影响还不是很大,但是如果项目很大,这个增加的时间将会变得不可接受。
Composing builds与buildSrc的使用方式相似,首先在项目中创建模块depsVersion1,在模块中创建src/main/java/com/example/compositebuild/DepsPlugin.java
创建并配置depsVersion/build.gradle
在projectRoot/settings.gradle中配置
这样Composing builds模块就配置好了,如果其它模块需要使用,则需要在模块的build.gradle中配置,比如app模块
这样app模块就能使用Composing builds模块中定义的属性了,不仅支持自动补全和代码跳转,而且Composing builds模块更新并不会导致整个项目重新编译。
文件 | 大小 | 修改时间 |
---|---|---|
app | 2022年02月12日 | |
build.gradle | 647 B | 2022年02月12日 |
buildSrc | 2022年02月12日 | |
depsVersion | 2022年02月12日 | |
gradle/wrapper | 2022年02月11日 | |
gradle.properties | 1 kB | 2022年02月11日 |
gradlew | 6 kB | 2022年02月11日 |
gradlew.bat | 3 kB | 2022年02月11日 |
local.properties | 437 B | 2022年02月11日 |
settings.gradle | 293 B | 2022年02月11日 |