硬件環境: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
(其他設備或其他版本的源碼請查閱
https://source.android.com/source/build-numbers.html
https://android.googlesource.com/platform/manifest
)
附圖一張
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
最后上圖兩張: