目录

sudo apt-get update
更新之。
方法一:
根目录下创建bin文件夹,并且配置环境变量;
- $ mkdir ~/bin
- $ PATH=~/bin:$PATH
下载repo脚本,并且给与权限:
-
- $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
- $ chmod a+x ~/bin/repo
方法二:
根目录下创建bin文件夹,配置环境变量;
- $ mkdir ~/bin
- $ PATH=~/bin:$PATH
提供清华镜像下载repo文件:
git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo
这样直接下载了整个文件夹。
将下载的git-repo文件夹中的repo文件复制到bin下,并且修改权限chmod a+x ~/bin/repo;
$ chmod a+x ~/bin/repo
当你执行完以上步骤之后,理论上就可以正常使用repo了,对于gu鸽但是需要梯子,否则在使用repo init的时候,就会出现如下的错误:
Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
解决》》使用清华镜像:
sudo gedit ~/.bashrc
- # repo
- export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
source 一下生效:
source .bashrc
- git config --global user.name "Your Name"
- git config --global user.email "you@example.com"
第一条配置用户名,设置您账号的缺省身份标识;第二条配置邮箱,邮箱是不是gu鸽的都行。如果仅在本仓库设置身份标识,则省略 --global 参数。
ssh-keygen -t rsa
生成ssh key,简便做法就是直接按回车,有三个回车。
进目录:
- $ cd ~/.ssh/
- $ gedit id_rsa.pub

复制公钥,粘贴到gitlab的SSH KEY里:


- repo init -u
[] -
- -u 指定repo仓库(即manifest仓库)的url地址, 后面[
]就是可选的命令参数: -
- Manifest options:
- -m :在manifest仓库中选择一个xml文件,如果没有设置,就使用default.xml
-
- -b:选择一个maniest仓库中的一个特殊的分支
-
- repo Version options:(一般来说几乎不会使用这下面的这些选项)
- --repo-url:设定repo的版本库地址。
-
- --repo-branch:设定需要检出的分支。
-
- --no-repo-verify:设定不要对repo的里程碑签名进行严格的验证。
-
- --mirror:只在repo第一次初始化的时候使用,建立本地镜像
-
-
就像这样(获取最新版本的 Repo 及其最近的所有错误更正内容):
repo init -u https://android.googlesource.com/platform/manifest
必须为清单指定一个网址,该网址用于指定 Android 源代码中包含的各个代码库将位于工作目录中的什么位置。
- repo sync
- 默认同步xml文件中定义的所有仓库,也可以单独指定sync哪个或哪些仓库,如下:
- repo sync name1 name2 name3 ...
-
- 除此之外还有如下选项:
- -j : 多任务,一般8核心可以开到16任务,过多会起反作用
- -c: 只下载当前分支代码
- -d: 让工程回退到manifest指定的版本
- -f: 如果某个工程同步失败,继续同步
-

repo sync才是把仓库的东西下下来的指令。
常见错误:fatal: Not a git repository
在下载Android源码的时候,经常会遇到fatal: Not a git repository 错误,对于这类错误,解决方案就是直接删除相应的目录,然后重新执行repo sync即可。
例如:
- fatal: Not a git repository: '/home/android/.repo/projects/here/legacy.git'
-
- 则直接执行:
- rm -rf /home/android/.repo/projects/here/legacy.git
-
- 然后执行:
- repo sync