Android AOSP repo 工具下载与使用指南
repo 是 Google 专为管理 Android 源码(AOSP)而开发的仓库管理工具,它建立在 Git 之上,用一个 manifest 清单把数百个 Git 仓库组织起来,实现统一同步与管理。对于需要拉取、阅读或修改 AOSP 源码的开发者,repo 是绕不开的入口工具。本文按"安装 → 初始化 → 同步 → 常用命令 → 高级用法"的顺序,给出一份可直接上手的 repo 使用指南,参考 Android 官方源码下载文档。
1、repo 工具概述
repo 本质是一个 Python 脚本,它基于 Git 进行版本控制,用于管理多个 Git 仓库。Android 源码包含数百个 Git 仓库,repo 工具可以帮助开发者高效地管理这些仓库。它的核心功能包括:
- 管理多个 Git 仓库
- 统一的代码同步
- 分支管理
- 代码审查支持(Gerrit)
- 版本控制
2、安装 repo 工具
2.1、下载 repo 脚本
在 Linux 或 macOS 系统中,下载 repo 脚本到 ~/bin 目录并赋予可执行权限:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo2.2、配置环境变量
将 ~/bin 加入 PATH 环境变量,使其在任意目录可直接调用:
echo 'export PATH=~/bin:$PATH' >> ~/.bashrc
source ~/.bashrc2.3、验证安装
执行以下命令,能正常输出版本号即说明安装成功:
repo --version核心实现(安装三步):
1. 用 curl 把 repo 脚本下载到 ~/bin,并用 chmod a+x 赋予可执行权限
2. 将 ~/bin 追加到 PATH 并 source 使其立即生效(zsh 用户改写 ~/.zshrc)
3. repo --version 能打印版本号,代表安装与配置均正确
3、初始化 repo 仓库
3.1、创建工作目录
为 AOSP 源码单独建一个工作目录并进入:
mkdir aosp
cd aosp3.2、初始化 repo
使用 repo init 指定 manifest 仓库地址进行初始化,可指定分支或本地镜像:
# 默认初始化(拉取最新 manifest)
repo init -u https://android.googlesource.com/platform/manifest
# 指定特定分支(如 Android 13)
repo init -u https://android.googlesource.com/platform/manifest -b android-13.0.0_r1
# 指定本地镜像(内网/离线场景)
repo init -u /path/to/local/manifest.git -b branch_name3.3、配置用户信息
首次使用时需配置 Git 用户信息,用于后续 commit 与代码审查:
git config --global user.email "your@email.com"
git config --global user.name "Your Name"核心实现(初始化三步):
1. 新建并进入工作目录,repo init 的所有产物都在该目录下
2. repo init -u 指定 manifest 仓库,-b 指定要拉取的分支/版本
3. 配置 git 全局 user.name / user.email,repo upload 提交审查时必需
4、同步代码
4.1、完整同步
在工作目录执行 repo sync,首次会拉取所有项目的完整代码:
repo sync4.2、同步特定项目
只需更新某个项目时,可指定项目名,避免全量同步:
repo sync platform/frameworks/base4.3、并行同步
用 -j 参数指定并行线程数,充分利用带宽加速同步:
repo sync -j84.4、增量同步
再次执行 repo sync 只会同步发生变更的部分,不会重复下载未改动的仓库,日常保持代码最新就靠它。
核心实现(同步要点):
1. 首次 repo sync 为全量同步,耗时长,建议搭配 -j8 加速
2. 可指定单个项目名实现定向同步,节省时间
3. 重复执行为增量同步,只拉取变更,是日常更新的常规操作
5、repo 常用命令
5.1、查看帮助
repo help # 查看所有命令总览
repo help sync # 查看特定命令(如 sync)的详细用法5.2、管理分支
repo start my-branch --all # 在所有项目创建并切换到新分支
repo checkout my-branch # 切换分支
repo branches # 查看各项目的分支状态5.3、代码提交
repo status # 检查各项目的变更状态
repo upload # 提交变更到 Gerrit 进行代码审查
repo abandon my-branch # 放弃某分支的所有变更5.4、搜索项目
repo list | grep framework # 按关键字过滤项目列表5.5、查看项目信息
repo info platform/frameworks/base # 查看指定项目的详细信息6、高级用法
6.1、使用本地 manifest
当需要自定义要拉取的项目集合时,可编写本地 manifest 文件,例如只同步 frameworks/base 和 Settings:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="origin" fetch="." />
<default revision="master" remote="origin" />
<project path="frameworks/base" name="platform/frameworks/base" />
<project path="packages/apps/Settings" name="platform/packages/apps/Settings" />
</manifest>然后使用 -m 参数指定自定义 manifest 进行初始化:
repo init -m my_manifest.xml -u https://android.googlesource.com/platform/manifest6.2、使用 repo manifest 命令
repo manifest -o - # 查看当前生效的 manifest 内容
repo manifest -r # 列出所有项目及其 revision6.3、设置代理
需要通过代理访问 Google 源时,设置 HTTP/HTTPS 代理环境变量后再同步:
export HTTP_PROXY=http://proxy.example.com:8080
export HTTPS_PROXY=https://proxy.example.com:8080
repo sync6.4、解决同步问题
同步失败时,可尝试清除快照缓存或强制同步:
repo sync --clean-snapshot # 清除快照缓存后重试
repo sync -f # 强制同步,忽略局部错误继续7、注意事项
使用 repo 拉 AOSP 前,先确认以下几点,避免中途踩坑:
- repo 需要 Python 3.6+ 环境(新版本 repo 已全面依赖 Python 3)
- 确保有足够的磁盘空间(完整 AOSP 源码约 150GB+,编译产物另算)
- 网络连接稳定(推荐高速网络,必要时配置代理或使用镜像源)
- 定期 repo sync 增量同步,保持代码为最新
8、总结
repo 工具是 Android 开发者必备的工具之一,掌握它可以高效地管理和同步 Android 源代码。通过 repo,开发者可以轻松地管理数百个 Git 仓库,进行代码同步、分支管理和代码审查等操作。
关键要点:
- repo 是基于 Git 的多仓库管理脚本,靠 manifest 组织数百个仓库
- 安装:下载脚本到 ~/bin → 配 PATH → repo --version 验证
- 使用:repo init 初始化 → repo sync 同步(-j 加速、可指定项目)
- 常用:repo start/checkout 管分支,repo status/upload 提交审查
- 高级:本地 manifest 定制项目集、代理设置、-f 强制同步排障
对于需要阅读或修改 AOSP 源码、做系统级定制的开发者而言,熟练掌握 repo 的安装、初始化与同步流程是必要的基础——它是进入 Android 整棵源码树的唯一钥匙。把 init、sync、start、upload 这几条核心命令用熟,再结合本地 manifest 定制自己关心的项目子集,就能在海量仓库中高效定位、同步与提交代码。


