首先说明,随着近期(2014年6月开始)GFW的升级,这个网站:http://www.android.com/ 已经不能正常访问了,下面的这些操作均是在我连接VPN的时候进行的。
首先,需要做一些准备工作:据这里(http://source.android.com/source/initializing.html)介绍,Mac OS中文件系统的特点是:case-preserving but case-insensitive,也就是保留大小写,但对大小写不敏感,这样会给后续运行一些命令带来很多麻烦,所以他们强烈建议新建一个大小写敏感的文件系统,这一点可以通过磁盘映像很容易地实现:
在Launchpad中——其他——磁盘工具,点开之后在左上角点击“文件”——“新建”——“空白磁盘映像”,然后如图所示,官方建议磁盘映像的大小应该在25GB以上。
在建立好磁盘映像之后,需要每次都去挂载它,比较麻烦,所以官方也建议在:~/.bash_profile中增加这样一条:(简单介绍一下,~表示从用户目录开始,所以下面这条语句中attach的dmg镜像也指的是用户目录。如果大家对vim之类不太熟,可以直接运行:open -e ~/.bash_profile 来打开上面这个文件,当然,不提倡这样做)
# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }
这样我们在每次挂载的时候,只需要输入:mountAndroid就可以了。上面那个页面的剩余部分,介绍了一些如果希望build 4.2.X之前版本需要做的工作,如果只是想下载或build最新版本,可以直接跳过,转而参考这个页面: http://source.android.com/source/downloading.html ,接下来按照这个页面的介绍,一步步做就可以了。简单总结一下:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
以上这两条命令是在用户根目录下建立一个bin目录。
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
以上这两条命令是将repo tool拷贝到刚才新建的bin目录下。
在完成这两步之后,我们需要挂载刚才建映像,并且进入到映像中,对于刚才的配置,就进入下面这个映像:
$ cd /Volumes/android
然后在这里建一个目录:
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
建立目录并进入之后,就可以下载Android源码了:
$ repo init -u https://android.googlesource.com/platform/manifest
这条命令同时对repo进行初始化,并指定Android源码的repository。
最后需要输入:
$ repo sync
以将源码同步到本地。需要指出的是,即便是有VPN等工具,在下载过程中可能依然很不稳定,会多次报错或退出,这时使用repo sync可以继续下载,但是每次手动输入比较麻烦,所以很多教程都强烈建议大家写一个bash脚本自动重启下载:
#!/bin/bash
repo sync
while [ $? = 1 ]; do
echo "================sync failed, re-sync again ====="
sleep 3
repo sync
done
复制上面代码保存到刚才的源码目录(WORKING_DIRECTORY)里。如:download.sh,在终端中运行该脚本,然后就可以等待其下载完了。另外,repo在下载过程中,在目录下是看不到任何文件的,下载完成之后会看到build等文件夹。
这就是一点经验,很多朋友也总结了怎样通过国内能访问的镜像站点下载的经验,这一点我以后有机会也会总结一下。
----------------------------------
(2014年7月12日更新)
没想到按照上面的流程下载,还是出现了问题,这里总结一下。今天早上起来一看,竟然把30GB的磁盘映像空间占满了!(我的Mac上空间确实不多了,256GB的固态硬盘,根本不够用啊),于是乎设置了一下隐藏文件夹显示:
$ defaults write com.apple.finder AppleShowAllFiles -bool true
$ KillAll Finder
删除以后重新开始,自己想了一下,这次选择下载某一个版本,Android的分支列表可以参看这个链接:https://android.googlesource.com/platform/manifest/+refs
我把上面说的download.sh改成了如下所示:
#!/bin/bash
PATH=~/bin:$PATH
repo init -u https://android.googlesource.com/platform/manifest -b android-4.2.2_r1
repo sync
while [ $? = 1 ]; do
echo "================sync failed, re-sync again ====="
sleep 3
repo sync
done
然后重新开始下载,经过漫长时间以后,似乎终于下载好了,仔细看了一下,这次一共有20GB左右。准备再试试其他branch。更新一下,以免误导大家。