Android源碼編譯環(huán)境

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
設(shè)置環(huán)境
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,045評論 25 708
  • Android 處理7.0以上的權(quán)限,有些東西會報空,比如打開相機黑屏,FileNotFund,打開處理資源之前先...
    XINHAO_HAN閱讀 1,457評論 0 1
  • 春暖花開 燕飛蝶舞 簡單的線稿 鋪紫色和黃色打底,然后黑色分出亮色部分 加深局部,黃色有部分需要加深一個色 使出洪...
    秋日暖陽中的銀杏葉閱讀 611評論 4 14
  • 碧璽是彩寶界的新寵兒,吸引越來越多的投資者關(guān)注,價格每年都在上漲,是水晶中能量最強的,據(jù)說她的能量可以隨溫度而轉(zhuǎn)化...
    喲Rita閱讀 245評論 0 0
  • 蘭收到信后,很傷心,哭了。視頻中, “你的淚光柔弱中帶傷慘白的月彎彎勾住過往夜太漫長凝結(jié)成了霜是誰在閣樓上冰冷地絕...
    阿信說閱讀 243評論 0 1