1.Git和Repo的安装 首先确保在当前用户的主目录下创建一个/bin目录(如果没有的话),然后把它(~/bin)加到PATH环境变量中。 a@ubuntu:~$ vim .bashrc 添加:export PATH=$PATH:~/bin a@ubuntu:~$ source .bashrc a@ubuntu:~$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/a/bin a@ubuntu:~$ sudo apt-get install git-core a@ubuntu:~$ sudo apt-get install curl 这两条命令会从互联网的软件仓库中安装git-core和curl。 其中curl是一个利用URL语法在命令行方式下工作的文件传输工具,它支持很多协议,包括FTP、FTPS、HTTP、HTTPS、TELENT等,我们需要安装它从网络上获取Repo脚本文件。 a@ubuntu:~$ curl http://android.git.kernel.org/repo > ~/bin/repo 这句命令会下载repo脚本文件到当前主目录的bin目录下,并保存在文件repo中。 最后我们需要给repo文件可执行权限 a@ubuntu:~$ sudo chmod a+x /home/a/bin/repo 接下来我们就可以利用repo脚本和Git、curl软件获取Android的源代码了。 2、初始化版本库 如果是想把Android当前主线上最新版本的所有的sourcecode拿下来,我们需要repo的帮助。 先建立一个目录,比如~/myandroid,进去以后用repo init命令即可。 repo init -u git://android.git.kernel.org/platform/manifest.git 这个过程会持续很长的时间,具体要多少时间就取决于网络条件了 最后会看到 repo initialized in /myandroid这样的提示,就说明本地的版本库已经初始化完毕,并且包含了当前最新的sourcecode。 需要之后调用 repo sync 如果想拿某个branch而不是主线上的代码,我们需要用-b参数制定branch名字,比如: repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake 另一种情况是,我们只需要某一个project的代码,比如kernel/common,就不需要repo了,直接用Git即可。 git clone git://android.git.kernel.org/kernel/common.git 这也需要不少的时间,因为它会把整个Linux Kernel的代码复制下来。 如果需要某个branch的代码,用git checkout即可。比如我们刚刚拿了kernel/common.get的代码,那就先进入到common目录,然后用下面的命令: git checkout origin/android-goldfish-2.6.27 -b goldfish 这样我们就在本地建立了一个名为goldfish的android-goldfish-2.6.27分支,代码则已经与android-goldgish-2.6.27同步。我们可以通过git branch来列出本地的所有分支。 这里我们以android-2.1_r1这个分支为例: a@ubuntu:~$ mkdir myandroid a@ubuntu:~$ cd myandroid a@ubuntu:~/myandroid$ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.1_r1 repo initialized in /home/a/myandroid 3、同步版本库 使用repo sync命令,我们把整个Android代码树做同步到本地,同样,我们可以用类似 repo sync project1 project2 … 这样的命令来同步某几个项目 如果是同步Android中的单个项目,只要在项目目录下执行简单的 git pull 即可。 a@ubuntu:~/myandroid$ repo sync 下载android-sdk-2.1_r1版本 a@ubuntu:~$ # mkdir android-sdk-2.1_r1 a@ubuntu:~$ # cd android-sdk-2.1_r1/ a@ubuntu:~ android-sdk-2.1_r1 # repo init -u git://android.git.kernel.org/platform/manifest.git -b android-sdk-2.1_r1 a@ubuntu:~$ android-sdk-2.1_r1 # repo sync | | | |