实用 AI

可在线运行 AI 集合,涵盖 AI 文案生成、写作辅助、AI 绘图与照片修复、AI 配音、字幕生成、语音转录以及 AI 视频创作和数字人等多种 AI 服务

查看详情

Gradle buildSrc替换方案之Composing builds

Android面试技术要点汇总
2021-05-17 14:29 · 阅读时长5分钟

在多模块的Android项目中,我们需要在gradle中定义一些通用的参数、方法或者任务,然后提供给各个子模块使用。

一、通过ext配置

最初的时候,我们会在projectRoot/build.gradle中定义属性或者方法,比如:

加载中...

但是这种方式有点不足是,不能代码补全和单击跳转,查找和修改不是很方便。

二、通过buildSrc配置

buildSrc提供了更加灵活的配置,最重要的是它支持自动补全和单机跳转,我们需要在项目根目录下创建一个名为buildSrc的文件夹,在文件夹内创建build.gradle文件以及src/main/java/com/example/compositebuild/Versions.java,在Versions.java中定义属性。

加载中...

然后在模块的build.gradle中直接引用属性。

加载中...

目前来看,buildSrc已经非常不错了,至少在维护上面方便了很多,但是它有一个缺点是,当更新buildSrc时,会导致整个项目重新编译,增加编译时间,如果项目小影响还不是很大,但是如果项目很大,这个增加的时间将会变得不可接受。

三、通过Composing builds配置

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模块更新并不会导致整个项目重新编译。

  1. 与buildSrc不同的是,名字可修改,而且buildSrc创建的目录,gradle会自动处理为module,而这里是创建模块,并且配置到settings.gradle中。
注释
文件大小修改时间
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日
buildSrcComposing buildsandroidgradle