是什么 ? | : | a command line tool built on top of git which helps manage many git repositories, does the uploads to revision control systems, and automates parts of the development workflow. Repo is not meant to replace Git, only to make it easier to work with Git. |
开发语言 | : | Python |
官方主页 | : | https://android.googlesource.com/tools/repo |
源码仓库 | : | |
used by | : | AOSP |
操作系统 | 包管理器 | 安装命令 |
---|---|---|
Windows | scoop | scoop install repo |
Windows | Chocolatey | choco install -y repo |
macOS | HomeBrew | brew install repo |
GNU/Linux | HomeBrew | brew install repo |
apt | sudo apt-get install -y repo | |
CentOS | yum | sudo yum install -y repo |
dnf | sudo dnf install -y repo | |
openSUSE | zypper | sudo zypper install -y repo |
Alpine Linux | apk | sudo apk add repo |
pacman | sudo pacman -Syyu --noconfirm | |
Gentoo Linux | Portage | sudo emerge repo |
step1、安装依赖
所有时 | Terminal + Shell + GNU CoreUtils |
下载时 | cURL |
运行时 | git、CPython |
step2、使用curl命令下载repo
脚本
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > /usr/local/bin/repo
step3、给repo
脚本设置执行权限
chmod a+x /usr/local/bin/repo
step4、将repo
脚本所在目录加入PATH
环境变量中
export PATH=$PATH:/usr/local/bin
step5、设置REPO_URL
环境变量的值
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
这么做的原因:repo
脚本在运行过程中会尝试更新自己,更新地址优先使用REPO_URL
环境变量的值,如果没有此值,会从https://gerrit.googlesource.com/git-repo
更新。
在使用repo
命令的过程中,可能会提示:请您输入邮箱号
和用户名
。这是git提示我们的,我们事先设置好,示例:
git config --global user.email leleliu008@gmail.com
git config --global user.name leleliu008
repo
命令的使用格式:
repo help <COMMAND>
repo init [ARGUMENT]...
repo sync [ARGUMENT]...
查看COMMAND
的使用帮助。
示例:
repo help init
该命令的作用是下载源码的清单文件
(manifest.xml
)。
u
是url
的首字母。该参数用于指定清单文件
(manifest.xml
)的下载地址
,常用的URL
有:
类型 | URL |
---|---|
源 | https://android.googlesource.com/platform/manifest |
清华大学开源镜像站的镜像 | https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest |
中国科学技术大学开源镜像站的镜像 | git://mirrors.ustc.edu.cn/aosp/platform/manifest |
示例:
mkdir -p ~/AOSP/master
cd ~/AOSP/master
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest
b
是branch
的首字母。此参数用于指定清单文件
(manifest.xml
)的分支
,关于分支名称,可以查看
注意:如果没有指定-b
参数,那么默认会使用master
分支。
示例:
mkdir -p ~/AOSP/android-6.0.1_r78
cd ~/AOSP/android-6.0.1_r78
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-6.0.1_r78
清单文件
(manifest.xml
)下载的很快,这一步大概有几分钟就完成了。
repo init
执行成功后,会在~/AOSP
目录中生成一个.repo
的目录,此目录为隐藏属性的文件, 我们可以在终端中使用ls -a
命令查看此目录,此目录中保存了将要下载的源代码的相关信息。
~/AOSP/.repo/manifest.xml
文件就是清单文件。其他都是一些配置文件。
q
是quite
的首字母。此参数表示没有任何的日志输出。
repo sync
命令是根据${SOURCE_DIR}/.repo/manifest.xml
清单文件同步指定的代码到本地。
repo sync
命令运行的过程中,如果出现中断,只要重新执行repo sync
就可以了。
第一次运行repo sync
,则这个命令相当于git clone
,会把repository
中的所有内容都拷贝到本地。
第二次运行repo sync
,则相当于git remote update; git rebase origin/branch
。
repo sync
命令会更新.repo
下面的文件。如果在merge
的过程中出现冲突,这需要手动运行git rebase –continue
。
repo sync
命令还可以重新校对下载的源码,若是有问题或遗漏了一些文件会重新下载,并从.repo
目录中导出到实际源码中。
若是出现以下信息,表示同步完成。
repo sync has finished successfully.
下载android-11.0.0_r30的源代码并编译它
macOS
用户一定要注意这一步
GNU/Linux
用户忽略这一步即可。
存放AOSP源码
的文件系统必须是大小写敏感
的,如果您使用的是macOS
系统,很可能您现在使用的文件系统是大小写不敏感
的, 在开始下载AOSP源码
之前,一定要确保这一点。
建议您专门购买一个移动固态硬盘
,将它格式化为支持大小写敏感
的文件系统。毕竟,AOSP源码
源码是非常的大, 动辄就是百十来GB
,我们电脑自带的硬盘很可能是不够用的。
step1、创建一个存放源代码的目录
mkdir -p /Volumes/SamsungPSSDT5/android-11.0.0_r30
step2、进入刚刚创建的目录
cd /Volumes/SamsungPSSDT5/android-11.0.0_r30
step3、下载android-11.0.0_r30
分支的清单文件
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r30
step4、根据清单文件
同步该分支的所有代码
repo sync
step5、查看同步完的目录结构
step6、建立编译环境
source build/envsetup.sh
step7、清除上次编译生成的产物
make clobber
step8、设置要生成的目标
lunch [aosp_arm64-eng]
step9、编译
make -j8