Linux下 使用Repo和Git下载Android源代码并编译

64bit ubuntu 12.10下使用repo和git来下载android源代码:

1。编译环境必须是64位的Linux系统。推荐使用ubuntu,建议版本号>=10.04。在ubuntu中执行以下命令安装必要的包:
如果是ubuntu12.04及更新版本,请执行:
$ sudo apt-get install git gnupg flex bison gperf build-essential \
  zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
  libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos \
  python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

2。新建你要保存Android源码的文件夹。例如我要存在home文件夹下bin文件夹里。在命令行中输入:
mkdir ~/bin
PATH=~/bin:$PATH

3。继续在Terminal中输入:
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
这时候在你的home文件夹下应该已经有一个bin文件夹,其中有一个repo文件。repo文件相当于一个批处理文件,极大地简化了git的使用。因为android系统的各部分都放在上百个不同的代码仓库里,若使用git clone <代码仓库地址> 命令下载每个仓库里的源代码,那么下载完所有的android源码可能要执行上百次git clone,而repo文件则将所有步骤变成了一个脚本文件了。我们目前只需要使用repo sync命令将所有代码仓库里的master branch拷贝至本地即可。

4。通过cd ~/bin将Terminal定位到~/bin文件夹

5。在Terminal中(当前处于bin文件夹)输入以下命令,初始化repo。repo默认将下载所有代码仓库中的master branch:
$ repo init -u https://android.googlesource.com/platform/manifest

如果此步成功,应该会有提示:Repo is initialized in your working directory. 在~/bin文件夹内生成了.repo
隐藏文件夹

若想让repo下载指定的branch而非master,可执行:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
查看目前android所有branch列表: http://source.android.com/source/build-numbers.html

仔细看看~/bin/.repo/manifest.xml文件,里面列出了repo需要同步的所有project的信息。特别注意的是有一些project的group属性为“notdefault”。在仅使用repo sync命令时默认是不下载这些project的。 

6。继续输入:repo sync
这样就可以开始下载最新源码了。在中国大陆,网络连接常常不稳定,导致repo sync一半可能会失败。但repo sync具有一定的断点续传的功能,失败后隔一段时间(10分钟左右就好)重新运行repo sync即可。

7。开始配置Ccache编译缓存。将以下内容拷贝至/etc/profile中:
export USE_CCACHE=1
并且在命令行中执行:source /etc/profile 以使该环境变量生效
接着将Terminal定位到源码文件夹下,执行:
prebuilts/misc/linux-x86/ccache/ccache -M 50G

8. 现在可以开始编译源码了
使用源码中的build/envsetup.sh配置编译所需环境
$ source build/envsetup.sh

9.接着执行lunch full-eng以明确我们待会儿编译的目标为emulator上的android系统。
如果你想编译能刷上真机的android系统,请参考:
http://source.android.com/source/building-devices.html
当然,目前能将编好的android系统刷上去的真机型号不多,只有Nexus几个系列罢了。

10. 一般直接输入make开始编译就好.(官网上有说明,如果使用make -jn(n为某个自然数)可以多线程编译,但我使用make -j4有时会产生意想不到的错误.固我一般只用make直接开始编译)
make后会在源代码根目录下产生out文件夹,内有target和host两个子文件夹。target文件夹一般存放的是与手机端有关的make结果,host文件夹存放的是和pc端有关的内容。

你可能感兴趣的:(Linux下 使用Repo和Git下载Android源代码并编译)