For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt, and this page is available as Markdown at /developers/android/tips/dependencies.md.

Android 依赖

版本目录

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

使用 version catalog 的好处

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

管理依赖和 lockfile

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

为什么使用 dependency locking

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

更新依赖和 lockfile

gradle/libs.versions.toml 中添加或更新依赖时,务必同时更新相应的 lockfile。lockfile 捕获所有直接和传递依赖的精确版本。

要从项目根目录更新 lockfile,请运行以下命令:

./gradlew alldependencies --write-locks

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

Info

如果 version catalog 已更新但 lockfile 未更新,CI 流水线将会失败。

使用 Renovate 自动更新依赖

为简化依赖管理,我们已将Renovate集成到仓库中。Renovate 会自动创建 pull request 来更新依赖和 lockfile。

Renovate 工作原理

  • 自动更新:Renovate 扫描项目中过时的依赖并创建 pull request 来更新它们。
  • Lockfile 更新:Renovate 确保 lockfile 与依赖一起更新。
  • 自定义配置:Renovate 被配置为遵守项目的版本策略和更新策略。
Note

Renovate 被配置为在库的新版本发布 3 天后再打开 pull request。这一延迟允许早期采用者识别并报告任何明显的问题。

使用 Renovate 的好处

  • 节省时间:自动完成检查并更新依赖的繁琐过程。
  • 降低风险:确保更新通过 CI 流水线一致应用并经过测试。
  • 提升安全性:保持依赖为最新,降低漏洞风险。

使用非稳定版本

虽然我们力求跟上所用库的最新版本,但我们优先考虑稳定性。因此,我们避免使用 alphabetarc 或其他非稳定版本。

Note

在极少数特定情况下,我们已在 PR 中同意使用 alpha 版本以访问新功能。但这会带来每次更新后需解决问题的代价,因为 API 并不稳定。一个显著的例子是 wear-compose-material 库。