翻译:koffuxu 校对:
获取 AOSP¶
在前面的章节我已经提到过,官方AOSP可以通过这个网站获 取http://android.git.kernel.org ,这是一个git接口的网站。当你浏览这个网站的时候,你可以看到大量的熟悉的git代码仓库,同时可以把这个仓库下载到本地。可想而知,手动把每个git仓库下载下来是非常繁琐的事情;AOSP包含了数以百计的仓库。但事实上,下载所有的仓库是没有用处的因为在一个项目中只有某几个仓库是需要的。正确的下载AOSP方式是通过 repo 这个工具,它可以在同一个位置获得。首先,你先得把 repo 这个工具安装好:
$ sudo apt-get install curl
$ curl https://android.git.kernel.org/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
在Ubuntu下,~/bin 这个路径如果存在,当你登陆的时候会自动添加到你系统的环境变量中。所以,如果你的家目录没有 bin/ 这个目录的话,手动创造一个,登出然后登入系统,确保这个路径在系统的环境变量中。不然的话,就算你安装好
reposhell也找不到repo。你不一定要把
repo放到 ~/bin,但这个一定得在你的目录里。所以,不管你把它放在哪里,只要确保你在命令行操作下能够进入的地方即可。
尽管repo 看起来就是一个简单的shell命令,不过它是一个相当复杂的工具。我们将在最后来深入了解它。现在,就只考虑它是一个能够同时下载和管理多个git仓库来组织Android代码结构的工具。仓库是通过一个manifest文件来下载的,这是一个描述工程的XML文件,它被下载下来存放在项目最顶层.repo目录下面,第个项目存在于相互独立的git仓库中。
也许会混淆
repo的“Manifest”文件和在APP开发中用于描述APP信息的的“Manifest”(AndroidManifest.xml),其实它们几乎是没有任何关系。它们使用完全不同的格式。幸运的是,它们几乎不会在同一个场景下使用,所以你就不需要太担心这个接下来的解释。
现在我们已经安装好repo,接下来就开始我们AOSP之旅:
$ mkdir -p ~/android/aosp-2.3.x
$ cd ~/android/aosp-2.3.x
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread
$ repo sync
最后一个命令就需要一些时间来执行,它将按照manifest文件的描述来下载各个项目的代码仓库。总的来说,一份未编译的AOSP源码大概有4G。因此,请记住你的网络带宽,时延性在决定你需要花多少时间扮演很重要的角色。记住我们下载一个指定的代码分支Gingerbread。即第三条命令中的-b gingerbread参数。如果你忽略这这部分,你下载下来的代码是master分支的。这个分支是有很多人的经验之作,也许不能正常的编译和运行,而且这里面包含了开放开发的分支。标记分支,另一方面,许多东西直接拿来使用。