安卓依赖项

版本目录

我们使用version catalog来管理项目中直接使用的所有库。这是用于添加依赖项的唯一允许的方法。为了保持一致性和可追溯性,严格禁止在目录之外添加依赖项。

使用版本目录的好处

  • 集中管理:所有依赖项都定义在一处 (gradle/libs.versions.toml),从而更容易跟踪和更新它们。
  • 一致性:确保所有模块使用相同版本的共享依赖项。
  • 简化的更新:使更新整个项目的依赖关系变得更加容易。

管理依赖项和锁定文件

该项目利用 Gradle 的 dependency locking 功能,通过跟踪所使用的所有库的精确版本来确保一致且可重复的构建。

为什么要使用依赖锁

  • 可重复的构建:通过锁定所有依赖项的确切版本,确保构建在不同环境中保持一致。
  • 避免意外:防止对可能破坏构建的传递依赖项进行意外更新。

更新依赖项和锁定文件

gradle/libs.versions.toml 中添加或更新依赖项时,更新相应的锁定文件也至关重要。锁定文件捕获所有直接和传递依赖项的确切版本。

要更新锁定文件,请从项目根目录运行以下命令:

./gradlew alldependencies --write-locks

此命令会解析所有依赖项并更新每个模块中的 gradle.lock 文件。

Info

如果更新了版本目录但未更新锁定文件,则 CI 管道将失败。

使用 Renovate 自动更新依赖项

为了简化依赖关系管理,我们已将 Renovate 集成到存储库中。 Renovate 会自动创建拉取请求来更新依赖项和锁定文件。

翻新如何运作

  • 自动更新:Renovate 扫描项目中是否有过时的依赖项,并创建拉取请求来更新它们。
  • 锁文件更新:Renovate 确保锁定文件与依赖项一起更新。
  • 自定义配置:Renovate 配置为尊重项目的版本控制策略和更新策略。
Note

Renovate 配置为在库的新版本发布后等待 3 天,然后再打开拉取请求。这种延迟使早期采用者能够识别并报告任何明显的问题。

使用翻新的好处

  • 节省时间:自动执行检查和更新依赖项的繁琐过程。
  • 降低风险:确保一致地应用更新并通过 CI 管道进行测试。
  • 提高安全性:使依赖项保持最新,降低漏洞风险。

使用不稳定版本

虽然我们的目标是与我们使用的库保持同步,但我们优先考虑稳定性。因此,我们避免使用alphabetarc或其他不稳定版本。

Note

在非常特殊的情况下,我们同意 PR 使用 alpha 版本来访问新功能。然而,这会带来每次更新后解决问题的成本,因为 API 不稳定。一个值得注意的例子是 wear-compose-material 库。