目录
一、repo说明
- AOSP:本质上是一堆使用git进行版本控制的project。
- repo:针对AOSP大量git仓库的管理工具。可以执行批量git同步,更新,提交等操作。
- 原理:通过读取manifest.git里维护的manifests.xml文件当中配置的projects的git仓库地址,分支等信息执行git操作。将服务器上按照特定目录结构保存的project原封不动的同步到本地。
- 关系:repo基于git,让超大型的项目代码管理更有效率。
manifest.xml文件解释:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote fetch="https://android.googlesource.com" name="aosp" review="android-review.googlesource.com" revision="refs/tags/android-6.0.1_r74" />
<!-- 可以配置多个remote -->
<remote name="repo_remote"
fetch="." />
<!-- 配置git remote 远程服务器信息 -->
<!-- name ,远程服务器的名字 -->
<!--fetch: 以下projects仓库地址的公共前缀。如果是(.)(..),则是相对路径形式(相对manifest.git)比如:aosp的manifest的仓库地址为https://android.googlesource.com/platform/manifest
配置..代表公共前缀为https://android.googlesource.com/
配置.代表公共前缀为https://android.googlesource.com/platform
${remote_fetch}/${project_name}.git 组成git仓库的remote url -->
<!-- project 默认的配置 -->
<default revision="master"
remote="repo_remote"
sync-j="4" />
<!-- revision:project 节点默认的revision值
remote:project 节点默认的remote值
sync-j: 执行repo sync -j的参数值。多任务
-->
<project path="build/project1" name="project1" remote="repo_remote" revision="master"/>
<!--
path:告诉repo,project1代码下载下来保存在WORK_DIR下的那个目录)
name:服务器仓库的名字。拼接在remote_fetch 的后面,组成git服务器仓库的remote url地址。
remote: 告诉repo,project1的remote是走那一个<remote>节点的配置
revision: 告诉repo,下载这个Git project 的那个分支
-->
<project path="project1" name="project1" remote="repo_remote" revision="master"/>
</manifest>
二、安装Repo
mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo #使用清华大学镜像
chmod a+x ~/bin/repo
三、下载源码
mkdir aosp
cd aosp
export REPO_URL=‘https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/’ #如需使用清华镜像,将改内容复制到 ~/bash.rc内
git config --global user.email “usergmail@gmail.com”
git config --global user.name “username”
#初始化仓库,并设置下载的源码版本为安卓9
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r8
#同步源码
repo sync