开源项目
androidx/androidx avatar
androidx/androidx

androidx/androidx:Jetpack 库的源码仓库,贡献者需要先理解它的门槛

androidx 命名空间下的 Android Jetpack 扩展库的开发环境。与 AOSP 上的 Android Jetpack 主要开发分支同步。

6,089 个 Star1,378 个 ForkKotlinApache-2.0

秒懂

它是什么?
androidx/androidx 是 Android Jetpack 扩展库的官方开发环境,托管在 GitHub 上。本文梳理它的定位、贡献流程和实际限制,帮助工程师判断是否值得深入参与。
适合谁用?
如果你打算为 Jetpack 库修复 bug、改进文档或添加测试,androidx/androidx 是必经之路,但请先确认你需要的库在当前 GitHub 贡献白名单内,例如 Activity、Room、WorkManager。若只是想用 Jetpack 组件,直接通过 Google Maven 获取 AAR 即可,完全不需要碰这个仓库。
能商用吗?
可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 1 天前。
用什么语言写的?
主要是 Kotlin(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。

开源项目深度解析

这个仓库到底解决什么问题

Jetpack 不是一个单一库,而是几十个以 androidx.* 命名的库的集合,例如 Activity、Fragment、Room、WorkManager。androidx/androidx 就是这些库的源码所在,它和 AOSP 上的主开发分支保持同步。官方二进制发布在 Google Maven,所以绝大多数应用开发者只需要在 build.gradle 里加依赖,根本不需要看这个仓库。仓库的真正用户是两类人:一是想给现有 Jetpack 库修 bug 或加功能的人,二是想研究 Jetpack 内部实现的人。它解决的问题很具体:提供一个统一的开发环境,让所有 androidx 库能在同一套构建系统下开发、测试和发布。

仓库结构:Git 仓库、预编译依赖和目录约定

从 README 能看出仓库有几个关键设计。第一,二进制 Gradle 依赖直接存在 git 里,放在 prebuilts/androidx/internal 和 prebuilts/androidx/external 目录。这样做是为了实现 hermetic build,也就是构建不依赖外部网络,保证可重现。第二,这些依赖同时也能从 google() 或 mavenCentral() 获取,所以本地存的是副本。第三,仓库按库分目录,比如 activity、appcompat、biometric、compose/runtime 等,每个目录有 OWNERS 文件,用来指定代码审查者。这种结构对贡献者友好,因为你可以直接看目录名找到目标库,但 git 仓库体积会很大,克隆时要有心理准备。

贡献流程:实验性的 GitHub 通道和硬性门槛

GitHub 贡献流程目前是实验性的,只接受特定项目的贡献,列表包括 Activity、AppCompat、Biometric、Collection、Compose Runtime、Core、DataStore、Fragment、Lifecycle、Navigation、Paging、Room、WorkManager。不在列表里的库,比如新模块,明确不接受。贡献前需要做三件事:在 android.googlesource.com 生成 HTTPS 密码,签署 Google 贡献者许可协议,然后通过 repo upload 提交。之后到 r.android.com 添加审查者,审查者可以从 git log 或 OWNERS 文件里找。这个流程和普通 GitHub PR 完全不同,它依赖 Gerrit 审查系统,所以如果你只熟悉 GitHub 的 fork 和 pull request,需要先适应 repo 工具和 Gerrit 的工作流。

CI 和实验性构建:能拿到未发布版本

仓库的 CI 系统在 ci.android.com,它构建所有正在开发中的库,这些库可能不稳定。你可以手动下载这些 AAR 和 JAR 做实验。这对想提前尝试新 API 的开发者有价值,但要注意这些构建不是正式发布,可能有 bug 或 API 变动。README 明确说这些是 in progress 且 potentially unstable 的库,所以生产项目不应该依赖它们。这个机制的存在说明仓库面向的是活跃开发,而不是稳定发布。正式版本必须从 Google Maven 获取,这一点 README 有明确说明。

贡献类型和审查文化

接受的贡献类型有严格限制:bug 修复必须有对应的 Android Issue Tracker 报告,且每个 bug 修复要带测试;拼写错误、文档更新、新增测试是允许的;新功能只有在 feature request bug 被 AndroidX 团队成员批准后才接受。这个规则把门槛提得很高,尤其是新功能,需要先获得内部批准。另外,README 强调遵循 code review etiquette,这是一种重视礼貌和建设性反馈的审查文化。对于外部贡献者来说,这意味着你的代码不仅要正确,还要符合 Jetpack 的编码风格和审查习惯,否则可能来回多轮修改。

主要限制:新模块免谈,工具链复杂

最大的限制是仓库不接受新模块。如果你有一个全新的库想法,这里不是合适的地方,因为维护团队明确拒绝。另一个限制是工具链复杂:需要安装 repo 工具,理解 Gerrit 审查,生成 HTTPS 密码,签署 CLA。这些对新手不友好。还有,二进制依赖存 git 这点虽然保证 hermetic build,但会让克隆和同步变慢。如果你只是修一个文档拼写错误,也需要走完整流程,包括生成密码和签协议,这看起来有点重。对于只想用 Jetpack 的开发者,这个仓库完全没必要碰,直接用 Maven 依赖就好。

替代方案:AOSP 镜像和 Google Maven

直接替代方案是 AOSP 的官方仓库 android.googlesource.com/platform/frameworks/support,这是主开发分支,github 上的 androidx/androidx 只是它的同步镜像。如果你只需要阅读源码,直接访问 AOSP 的 Gitiles 界面更直接,不需要 GitHub 账号。另一个替代是 Google Maven,它提供所有正式发布的 AAR 和 JAR,适合大多数应用开发场景。区别在于:androidx/androidx 是开发环境,用于贡献代码;AOSP 镜像适合查看最新源码但不参与贡献;Google Maven 是消费二进制的地方。如果你要参与贡献,androidx/androidx 是唯一入口,但如果你只是学习或使用,其他两个更轻量。

编辑结论

如果你打算为 Jetpack 库修复 bug、改进文档或添加测试,androidx/androidx 是必经之路,但请先确认你需要的库在当前 GitHub 贡献白名单内,例如 Activity、Room、WorkManager。若只是想用 Jetpack 组件,直接通过 Google Maven 获取 AAR 即可,完全不需要碰这个仓库。贡献前必须完成两件事:生成 HTTPS 密码并签署 Google 贡献者许可协议,同时准备好接受严格的 code review 文化。该仓库目前不接收新模块,所以任何新库的想法在这里都行不通。最终判断:这是一个面向特定维护场景的仓库,不是通用开源项目,参与前先花时间读 onboarding 文档,否则容易在工具链上卡住。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
社区笔记

社区笔记