在Mac下編譯Android最麻煩的就是設置Android的編譯環境了,做完這一步基本上剩下的就是近乎傻瓜式的操作了.說起來也簡單就三步,設置大小寫敏感的文件系統、安裝編譯工具、設置文件系統同時能打開的數量.
默認情況下,Mac OS運行在不區分大小寫的文件系統上,git對這類型的文件系統支持不太好,有可能會導致git命令運行出錯(比如git status)。因此,我們推薦在一個區分大小寫的文件系統中,做與AOSP相關的操作。這很容易就可以用磁盤映像(disk image)做到,下面會討論到.
一旦我們有了合適的文件系統,在Mac系統上編譯master就變得非常簡單、直接了。早起的分支,比如ICS,需要一些額外的工具.
創建大小寫敏感的磁盤映像
為了創建一個大小寫敏感的分區,我們可以使用帶GUI界面的磁盤工具(Mac自帶)或者使用命令行創建。根據我的經驗,下載Android 6.0的代碼大約需要50GB,編譯后能膨脹到72GB。當然,如果磁盤空間緊張,下載源代碼后,你可以手動將源碼根目錄下面的.repo目錄刪除,這樣大約可以節省25GB的空間.
使用磁盤工具創建的步驟:
- 選擇"新建映像(new Image)"
- 格式那里選擇Mac Os擴展(區分大小寫,日志式),大小至少選擇50GB.
使用命令行創建
創建磁盤空間
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg
這會創建一個.dmg(或者也與可能是一個.dmg.sparseimage)文件,一旦掛載上,就是一個Android開發所需要的文件系統格式的磁盤.
如果你需要調整磁盤空間的大小,可以使用下面的命令:
調整磁盤空間的大小
hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage
android.dmg(android.dmg.sparseimage)會保存在home(~)目錄下,你可以在~/.bash_profile添加幫助函數:
使用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的磁盤。
安裝JDK
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的源代碼了.剩下的就只是需要耐心了.
文章列表