硬件环境:MacBook Pro Retina, 13-inch, Late 2013
处理器 2.4 GHz Intel Core i5
内存 8 GB 1600 MHz DDR3
硬盘60G以上
软件环境:OS X 10.9.2
GNU Make 3.81
Python 2.7.5
XCode 5.0.2
java version "1.7.0_55"
repo VERSION = (1, 21)
某收费VPN(代理FAN墙是下载不了的,请使用VPN)
(软件版本问题非常可能导致下载或者编译失败!!!高版本请降至这些版本...)
1.创建一个镜像。因为源码只能在大小写敏感的磁盘上编译(红色字体标示可以自行配置的参数,下同)
hdiutil create -type SPARSE -fs ‘Case-sensitive Journaled HFS+‘ -size 60g ~/android.dmg.sparsefile
这里分了60G硬盘
2.加载分区
hdiutil attach ~/android.dmg.sparsefile -mountpoint /Volumes/android
3.下载相应的工具
主要说一下repo,请开vpn
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
然后将repo的所在路径加到环境变量方便后面使用
java、make等工具请自行google,尽量用和博主相同的软件版本。
4.修改文件描述符限制
在~/.bash_profile中添加以下内容:
# set the number of open files to be 1024
ulimit -S -n 1024
5.进入到加载好的分区下(上面的/Volumes/android)
cd /Volumes/android/
mkdir android-source
cd android-source
6.开始下载
repo init -u https://android.googlesource.com/platform/manifest -b android-5.0.0_r3
如果init正常,执行
repo sync 或 repo sync -j4
(android-5.0.0_r3是nexus 5的源码,其他设备如nexus 9或者nexus player请查阅https://source.android.com/source/build-numbers.html)
附图一张
7.开始编译
在android-source目录下执行
make
然后就可以等待编译完成了。
博主编译中 5小时50分钟时 遇到了一个问题
解决方案是将/Volumes/android/external/iptables/include/linux/netfilter_ipv4/ipt_ECN.h中的
#include <linux/netfilter/xt_DSCP.h>
改成
#include <linux/netfilter/xt_dscp.h>
总结一下过程中遇到的几个问题
1.repo版本。非官方的repo工具可能有秘钥问题或者下载失败,请使用官方版本。楼主用旧版的repo下了好久,后来都删了重新下的。。。
2.VPN不稳定。这个问题不多解释了大家都懂,lz也没有买比较贵的专线VPN。解决办法有一个,mac下可以用apple script编写一个VPN自动重连的脚本,存成App即可。方法请自行Google。但是偶尔也会有已经断网但是VPN没有断的情况,就只能手动重连了。
3.下载和编译时间过长。下载没有统计,估计不算repo出问题的那次,也超过24小时了。dalvik完全换成ART后加上增加了5000个API,编译时间明显长了很多,编译总耗时7小时30分钟。源码13.4G,repo文件20G,编译完的源码+build出来的文件共43G。
4.感谢官网文档:http://source.android.com/source/downloading.html
感谢某人的文章:http://blog.csdn.net/bulreed/article/details/22783467
最后上图两张: