Skip to main content

Android 依赖

版本目录

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

使用版本目录的好处

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

管理依赖和锁定文件

本项目利用 Gradle 的 依赖锁定 功能,通过追踪所有使用库的精确版本,以确保构建的一致性和可重现性。

为什么使用依赖锁定

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

更新依赖和锁定文件

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

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

./gradlew alldependencies --write-locks

该命令解析所有依赖并更新每个模块中的 gradle.lockfile。

info

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

使用 Renovate 自动化依赖更新

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

Renovate 的工作原理

  • 自动更新:Renovate 扫描项目中的过时依赖,并创建拉取请求以更新它们。
  • 锁定文件更新:Renovate 确保锁定文件与依赖一起更新。
  • 自定义配置:Renovate 被配置为遵循项目的版本策略和更新策略。
note

Renovate 被配置为在库的新版本发布后等待 3 天再打开拉取请求。这个延迟允许早期采用者识别和报告任何明显的问题。

使用 Renovate 的好处

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

使用非稳定版本

尽管我们希望与所使用的库保持最新,但我们优先考虑稳定性。因此,我们避免使用 alphabetarc 或其他非稳定版本。

note

在非常特定的情况下,我们已经同意通过拉取请求使用 alpha 版本来获取新特性。然而,这将伴随在每次更新后解决问题的成本,因为 API 不稳定。一个显著的例子是 wear-compose-material 库。