Android AOSP repo 工具下载与使用指南

QuibblerQuibbler 2020-03-15 约 11 分钟 303 次阅读

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/repo

2.2、配置环境变量

将 ~/bin 加入 PATH 环境变量,使其在任意目录可直接调用:

echo 'export PATH=~/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

2.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 aosp

3.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_name

3.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 sync

4.2、同步特定项目

只需更新某个项目时,可指定项目名,避免全量同步:

repo sync platform/frameworks/base

4.3、并行同步

用 -j 参数指定并行线程数,充分利用带宽加速同步:

repo sync -j8

4.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/manifest

6.2、使用 repo manifest 命令

repo manifest -o -    # 查看当前生效的 manifest 内容
repo manifest -r      # 列出所有项目及其 revision

6.3、设置代理

需要通过代理访问 Google 源时,设置 HTTP/HTTPS 代理环境变量后再同步:

export HTTP_PROXY=http://proxy.example.com:8080
export HTTPS_PROXY=https://proxy.example.com:8080
repo sync

6.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 定制自己关心的项目子集,就能在海量仓库中高效定位、同步与提交代码。

相关推荐

git rebase调整commit提交的顺序
Git

git rebase调整commit提交的顺序

git rebase调整commit之间顺序一连提交了几笔commit,想调整一下顺序,把其中一笔提交置顶拿到最前面来,专门修改这一笔提交。当然如果想修改某一笔提交,可以reset到那笔commit,进行修改,完成之后再把之后的提交cherry-pick回去。git log查看提交记录,每笔提交记录太多,可以让每笔提交仅显示一行查看 --oneline。使用git rebase -i进入编辑,之前

1.4w
git blame:显示文件的每行提交记录信息
Git

git blame:显示文件的每行提交记录信息

git blame:显示文件的每行提交记录信息git blame对文件的每行信息都进行注释。能看到关于该行修改的每一次commit的哈希标签、作者和提交日期。Intellij IDEA在打开文件的行数右键点击Annotate显示文件每一行的记录信息。应该用的就是这个命令实现的功能。

5.5k
Git可视化工具:Sublime Merge
Git

Git可视化工具:Sublime Merge

Git可视化工具:Sublime Merge同事推荐了一个Git 可视化客户端:Sublime Merge ,由知名文本编辑器 Sublime Text 开发商打造。自己平时用的则是最好用的Git GUI工具:SourceTree,也体验了下Sublime Merge,用起来还不错。直接点击下载或购买后,安装即可。功能免费,完整功能无限制使用。但是订阅内容(比如更换主题)付费。Sublime Me

2.8k