在Mac下編譯Android最麻煩的就是設置Android的編譯環境了,作完這一步基本上剩下的就是近乎傻瓜式的操做了.提及來也簡單就三步,設置大小寫敏感的文件系統、安裝編譯工具、設置文件系統同時能打開的數量.html
默認狀況下,Mac OS運行在不區分大小寫的文件系統上,git對這類型的文件系統支持不太好,有可能會致使git命令運行出錯(好比git status)。所以,咱們推薦在一個區分大小寫的文件系統中,作與AOSP相關的操做。這很容易就能夠用磁盤映像(disk image)作到,下面會討論到.java
一旦咱們有了合適的文件系統,在Mac系統上編譯master就變得很是簡單、直接了。早起的分支,好比ICS,須要一些額外的工具.linux
爲了建立一個大小寫敏感的分區,咱們可使用帶GUI界面的磁盤工具(Mac自帶)或者使用命令行建立。根據個人經驗,下載Android 6.0的代碼大約須要50GB,編譯後能膨脹到72GB。固然,若是磁盤空間緊張,下載源代碼後,你能夠手動將源碼根目錄下面的.repo目錄刪除,這樣大約能夠節省25GB的空間.android
使用磁盤工具建立的步驟:git
使用命令行建立macos
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg
這會建立一個.dmg(或者也與多是一個.dmg.sparseimage)文件,一旦掛載上,就是一個Android開發所須要的文件系統格式的磁盤.bash
若是你須要調整磁盤空間的大小,可使用下面的命令:oracle
hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage
android.dmg(android.dmg.sparseimage)會保存在home(~)目錄下,你能夠在~/.bash_profile添加幫助函數:app
使用mountAndroid來掛載映像:函數
# mount the android file image function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }
使用 umountAndroid取消掛載:
# unmount the android file image function umountAndroid() { hdiutil detach /Volumes/android; }
完成後,就能夠看見在/Volumes/中掛載了一個叫android的磁盤。
Android開源項目(AOSP)的master分支須要java 8.在Mac系統上使用jdk 8u45 或者更新的版本.
5.0.x的分支須要Java 7.在Mac上,使用 use jdk-7u71-macosx-x64.dmg
開發從版本Gingerbread(Android 2.3)到KitKat(Android 4.4)須要使用Java 6
從Apple的開發者網站下載XCode。推薦使用3.1.4或者更新(好比gcc 4.2)版本4.X可能會致使一些問題.
對於我而言,我安裝了最新的Xcode(7.2版本,SDK 版本MacOSX10.11),可是因爲不是Android官方推薦的版本,在編譯前還須要做一些修改,具體的後面會介紹.
從 macports.org安裝MacPorts.
注意:要確保/opt/local/bin 在path中排在/usr/bin以前.若是沒有添加下面的東西到~/.bash_profile文件中.若是沒有~/.bash_profile文件,那麼就建立一個
export PATH=/opt/local/bin:$PATH
從MacPorts獲取make, git, and GPG packages :
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg
若是使用 Mac OS X v10.4, 還須要安裝 bison:
$ POSIXLY_CORRECT=1 sudo port install bison
在Mac中,默認的文件同時打開數實在過低,一個高速並行的編譯進程運行時可能會遇到瓶頸。(注:Mac上限制最大打開文件數的緣由是每打開一個文件,系統都須要內存來管理它們,內存是有限的資源)
爲了增長最大文件打開數量,在~/.bash_profile中添加:
# 設置文件打開數量爲1024 ulimit -S -n 1024
接下來,就能夠下載Android的源代碼了.剩下的就只是須要耐心了.