AOSP:Android Open Source Project
使用Linux 或 Mac OS,Windows下暫不支持。
選擇分支
選擇要編譯的分支版本。
創(chuàng)建Mac OS構(gòu)建環(huán)境
默認安裝下,Mac OS運行在大小寫保留但大小寫不敏感的文件系統(tǒng)上。
創(chuàng)建一個大小寫敏感的磁盤映象
方法1:使用Mac OS下的“磁盤工具”
在Mac OS下,可以使用磁盤映象創(chuàng)建大小寫敏感的文件系統(tǒng)。啟動磁盤工具并選擇“新建映象”創(chuàng)建映象。完成編譯需要至少25GB。確保選擇“區(qū)分大小寫,日志式”作為卷格式。
方法2:使用shell命令
使用下面命令創(chuàng)建
# hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg
上面的命令會生成一個.dmg(或.dmg.sparseimage文件),掛載該文件,就可以作為android源碼編譯環(huán)境。
使用下面命令擴容
# hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage
android.dmg
存儲在home下,可以在~/.bash_profile
中添加以下幫助函數(shù)。
執(zhí)行mountAndroid
掛載映象:
# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }
執(zhí)行umountAndroid
卸載映象:
# unmount the android file image
function umountAndroid() { hdiutil detach /Volumes/android; }
安裝JDK
Android不同版本對JDK的要求,參見Requirements
安裝需求包
安裝xcode
$ xcode-select --install
從macports.org安裝MacPorts
確保在你的路徑中,/opt/local/bin
出現(xiàn)在/usr/bin
前。否則,在~/.bash_profile
中添加如下內(nèi)容:
export PATH=/opt/local/bin:$PATH
從MacPorts獲取make, git, 和 GPG 包
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg
如果是Mac OS X v10.4,安裝bison:
$ POSIXLY_CORRECT=1 sudo port install bison
從make 3.82恢復(fù)
Android 4.0.x或更早的版本,在gmake 3.82中有一個bug阻止android構(gòu)建。根據(jù)下面步驟使用MacPorts安裝3.81:
編輯/opt/local/etc/macports/sources.conf
,增加下面這行內(nèi)容:
file:///Users/Shared/dports
然后創(chuàng)建這個目錄:
$ mkdir /Users/Shared/dports
在dports
目錄下,運行:
$ svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/ devel/gmake/
為該新的本地庫創(chuàng)建一個port index
$ portindex /Users/Shared/dports
安裝老版本gmake
$ sudo port install gmake @3.81
設(shè)置文件描述符限制
為了提高上限,在~/.bash_profile
中添加以下內(nèi)容:
# set the number of open files to be 1024
ulimit -S -n 1024
下載源碼
安裝Repo
Repo是一個使Git在Android上下文環(huán)境中更容易工作的工具。Repo更多信息,參見Developing。
確保在home下有bin/
目錄,并包含在你的路徑中:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
下載Repo工具并確保其可執(zhí)行:
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
對于版本1.21,repo的SHA-1校驗和:b8bd1804f432ecf1bab730949c82b93b0fc5fede
對于版本1.22,repo的SHA-1校驗和:da0514e484f74648a890c0467d61ca415379f791
對于版本1.23,repo的SHA-1校驗和:ac9d646f6d699f6822a6bc787d3e7338ae7ab6ed
初始化Repo客戶端
安裝Repo后,設(shè)置你的client訪問Android源碼repository。
創(chuàng)建一個空目錄保存工作文件
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
配置git。為了使用Gerrit代碼review工具,需要一個注冊Google賬戶的郵件地址。
$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"
運行repo init
獲取Repo的最新版本。必須指定manifest的特定URL。
$ repo init -u https://android.googlesource.com/platform/manifest
為了檢出branch而不是"master",指定-b
。分支列表。
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
初始化成功,你的client目錄會包含.repo
目錄。
下載Android源碼樹
從遠程倉庫拉取Android源碼樹到工作目錄。
$ repo sync
For more about repo sync and other Repo commands, see the Developing section.
更多關(guān)于repo sync
或其他Repo命令信息,參見Developing。
用戶認證
默認情況,訪問Android源碼是匿名的。為了防止對服務(wù)器的過度使用,每個IP地址一個限額。
當共享IP地址時,限額會觸發(fā)一定的使用規(guī)則(如限制一定時間內(nèi)的訪問等)。
這種情況下,可以使用認證訪問,其對每個用戶使用獨立的限額,而不顧IP地址。
第一步使用密鑰生成器創(chuàng)建密鑰并跟隨其頁面指示操作。
第二步強制認證訪問,使用manifest URI:https://android.googlesource.com/a/platform/manifest。
/a/
路徑前綴觸發(fā)強制認證。下面的命令,轉(zhuǎn)換已存在的client為使用強制認證:
$ repo init -u https://android.googlesource.com/a/platform/manifest
準備編譯
如果你要編譯Android6.0或更新版本,查看Compiling with Jack獲取更多信息。
獲取專用二進制文件
AOSP不能僅從純代碼中使用,也需要運行附加的硬件依賴庫,例如硬件圖形加速。有關(guān)其他資源的下載鏈接和設(shè)備二進制文件要求,請參閱以下部分。
下載專用二進制文件
你可以從Google's Nexus驅(qū)動程序界面 下載支持設(shè)備運行帶AOSP版本分支標簽的代碼的官方二進制文件。這些二進制文件通過非開放源代碼添加對附加硬件功能的訪問。要改為構(gòu)建AOSP主分支,請使用Nexus設(shè)備的二進制預(yù)覽。在為設(shè)備構(gòu)建主分支時,請使用最新編號版本或最近日期的二進制文件。
額外的專用庫
每個二進制文件集合都作為在壓縮歸檔中一個自解壓腳本。解壓縮每個歸檔,從源樹根目錄運行包含的自解壓縮腳本,然后確認您同意所附許可協(xié)議的條款。二進制文件及其匹配的makefile將安裝在源代碼樹的vendor/
層級中。
清理
為了保證最新安裝的二進制文件在解壓后被正確應(yīng)用,使用下面命令刪除之前構(gòu)建的輸出:
$ make clobber