本指导记录了在 Windows 下(除了安装外,其余章节 Linux 同样适用)使用 Repo 工具的过程,包括安装 Repo、配置代理、同步全部或部分 Android Open Source Project(APPS)工程源代码到本地,可方便 Android 系统研究人员后续使用 Source Insight 等工具本地查阅代码。
安装 Repo(Windows)
安装 Python
repo 是 Python 脚本,依赖于 Python。前往 https://www.python.org/downloads/ 下载安装 Python 3,安装过程注意勾选创建 PATH 环境变量,使 Python 程序目录添加到操作系统环境变量中。
安装 Git
前往 https://git-scm.com/downloads 下载安装 Git,在 Windows 上 Git 还提供了一个 bash 模拟器,称为 Git Bash。
安装 Repo
先在用户目录(
%USERPROFILE%
)下创建
bin
目录,然后手动下载 https://storage.googleapis.com/git-repo-downloads/repo 到该目录,最后将
bin
目录添加到 Windows PATH 环境变量中。
配置代理(可选)
在公司内网,可能需要额外配置代理才能让 git 和 repo 连接外网。
Git 代理配置
编辑
%USERPROFILE%/.gitconfig
(Windows)或
~/.gitconfig
(Linux)
1
[http]
proxy = http://user:[email protected]:8080
[https]
proxy = http://user:[email protected]:8080
注意:连接内网地址时需要关闭代理。
Repo 代理配置
编辑
%USERPROFILE%/.bash_profile
(Windows)或
~/.bash_profile
(Linux),增加如下代理配置:
1
export
http_proxy= http://user:[email protected]:8080
export https_proxy = $http_proxy
export ftp_proxy = $http_proxy
完成上述代理配置后,bash(或 git bash)中运行的 Git 和 Repo 命令就会以代理的方式连接服务器了。
创建 AOSP 源代码根目录
1
mkdir AOSP
在源代码根目录初始化 Repo 客户端
在源码根目录执行
repo init
获取最新版本的 Repo,并通过指定清单文件来指定 Android 源代码中包含的各个代码库位于工作目录中的什么位置:
1
repo init -u https://android.googlesource.com/platform/manifest
上面命令会在 AOSP 目录创建
.repo
目录,包含最新版本 Repo 以及清单等文件。
如果因不明原因无法下载 Repo,可以用如下命令手动获取:
1
mkdir .repo
cd .repo
git clone https://gerrit.googlesource.com/git-repo
mv git-repo repo
同步源代码
AOSP 由大量项目组成,包含数百个 git 仓库,代码量十分巨大(因此 Google 开发 repo 工具)。同步源代码的方式有两种:
同步整个 AOSP 源代码
1
repo sync
同步 AOSP 子工程源代码
通过指定工程名来来执行
repo sync
,可以仅仅同步感兴趣的那部分源代码,并且在本地保持 AOSP 目录结构:
1
repo sync project_name1 projuect_nameN
其中工程名可通过查阅 .repo/manifest/default.xml 得到,例如
platform/frameworks/base
切换不同 AOSP 分支
1. 查看可切换的分支
1
cd .repo/manifests git branch -a | cut -d / -f 3
2. 切换分支 (以android-7.0.0_r1为例)
1
repo init -u https://android.googlesource.com/platform/manifest -b android-7.0.0_r1
3. 同步代码
1
repo sync
如果本地版本库中的源代码有一些改动,执行上述命令后,会出现部分文件的提交无法合并的提示,此时使用下面的操作命令:
1
repo forall -c git reset --hard
repo init -u https://android.googlesource.com/platform/manifest -b android-7.0.0_r1