1 編譯環(huán)境選擇
要編譯 Android 源文件赏壹,需要使用 Linux 或 Mac OS。目前不支持在 Windows 環(huán)境下進(jìn)行編譯衰腌。本文介紹在Mac OS下如何下載并編譯Android源碼。也可參考官方文檔介紹
2 Android源碼下載
2.1 移動(dòng)硬盤格式化
Mac 電腦一般磁盤空間有限,可購(gòu)買一個(gè)移動(dòng)硬盤恍涂,把源碼放到移動(dòng)硬盤,新買的移動(dòng)硬盤大部分默認(rèn)是只支持Windows系統(tǒng)的NTFS格式植榕,所以需要把移動(dòng)硬盤格式化成Mac電腦上支持的ExFAT格式再沧,如圖,選中要格式化的移動(dòng)硬盤尊残,點(diǎn)擊抹掉炒瘸,然后輸入名稱,選擇ExFAT寝衫,點(diǎn)擊抹掉顷扩。
2.2 創(chuàng)建區(qū)分大小寫的磁盤映像
在默認(rèn)安裝過(guò)程中,Mac OS 會(huì)在一個(gè)保留大小寫但不區(qū)分大小寫的文件系統(tǒng)中運(yùn)行慰毅。Git 并不支持此類文件系統(tǒng)隘截,而且此類文件系統(tǒng)會(huì)導(dǎo)致某些 Git 命令(例如 git status)的行為出現(xiàn)異常。因此汹胃,建議始終在區(qū)分大小寫的文件系統(tǒng)中對(duì) AOSP 源文件進(jìn)行操作婶芭。有兩種方式可以創(chuàng)建磁盤映像,具體操作如下:
方式一:使用命令:
由于AOSP比較大统台,但是我們存放在移動(dòng)硬盤上雕擂,更大的空間能夠更好地滿足未來(lái)的需求,所以預(yù)留200G+的空間贱勃。
可以通過(guò) shell 使用以下命令創(chuàng)建磁盤映像:
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 200g /Volumes/aosp/android.dmg
當(dāng)然井赌,如果需要更大的存儲(chǔ)卷,還可以使用以下命令來(lái)調(diào)整稀疏映像的大泄笕拧:
hdiutil resize -size <new-size-you-want>g /Volumes/aosp/android.dmg
方式二:使用mac自帶的磁盤工具
打開磁盤工具
然后選擇“新建映像”->“空白映像”仇穗,出現(xiàn)下圖:
設(shè)置空間大小,警記格式標(biāo)注這欄要選擇Mac OS擴(kuò)展(區(qū)分大小寫戚绕,日志式)的卷纹坐。點(diǎn)擊“存儲(chǔ)”,此時(shí)會(huì)/Volumes/aosp/下會(huì)生成一個(gè)android.dmg的鏡像舞丛,雙擊這個(gè)鏡像耘子,將其掛載果漾。這樣在Mac Finder中就可以看到我們剛剛的創(chuàng)建的鏡像了。
2.3 設(shè)置文件描述符數(shù)量上限
在 Mac OS 中谷誓,可同時(shí)打開的文件描述符的默認(rèn)數(shù)量上限太低绒障,在高度并行的編譯流程中,可能會(huì)超出此上限捍歪。
要提高此上限户辱,請(qǐng)將下列行添加到 ~/.bash_profile 中:
# set the number of open files to be 1024
ulimit -S -n 1024
2.4 下載源代碼
Android 源代碼樹位于由 Google 托管的 Git 代碼庫(kù)中。Git 代碼庫(kù)中包含 Android 源代碼的元數(shù)據(jù)糙臼,其中包括與對(duì)源代碼進(jìn)行的更改以及更改日期相關(guān)的元數(shù)據(jù)庐镐。下面介紹了如何下載特定 Android 代碼流水線的源代碼樹。
2.4.1 安裝 Repo
Repo 是一款工具变逃,可讓您在 Android 環(huán)境中更輕松地使用 Git必逆。要詳細(xì)了解 Repo,請(qǐng)參閱開發(fā)部分韧献。
要安裝 Repo末患,請(qǐng)執(zhí)行以下操作:
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
如果你沒有翻墻,可以使用清華大學(xué)的repo鏡像:https://mirrors.tuna.tsinghua.edu.cn/help/git-repo/锤窑,在
下載完成后將bin/repo打開璧针,將里面的REPO_URL改成清華大學(xué)的鏡像:
https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
2.4.2 初始化 Repo 客戶端
1.創(chuàng)建源碼工作目錄
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
2.初始化倉(cāng)庫(kù)
repo init -u https://android.googlesource.com/platform/manifest
要對(duì)“master”以外的分支進(jìn)行校驗(yàn),請(qǐng)使用 -b
來(lái)指定相應(yīng)分支渊啰。要查看分支列表探橱,請(qǐng)參閱源代碼標(biāo)記和版本。
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-7.1.1_r28
初始化成功后绘证,系統(tǒng)將顯示一條消息隧膏,告訴您 Repo 已在工作目錄中完成初始化∪履牵客戶端目錄中現(xiàn)在應(yīng)包含一個(gè) .repo 目錄胞枕,清單等文件將保存在該目錄下。
3.下載 Android 源代碼樹
同步源碼樹魏宽,開始下載源碼
repo sync
Android 源代碼文件將位于工作目錄中對(duì)應(yīng)的項(xiàng)目名稱下腐泻。下載成功后的源碼目錄:
2.5 編譯Android源碼
1.在源碼的當(dāng)前路徑運(yùn)行如下命令
source build/envsetup.sh
不出意外的話會(huì)輸出如下信息:
2.生成android.ipr文件
make idegen && development/tools/idegen/idegen.sh
解決方法:打開build/core/combo/mac_version.mk,在下面加入一個(gè)10.12队询。
mac_sdk_versions_supported := 10.8 10.9 10.10 10.11 10.12
如果一切順利派桩,運(yùn)行成功以后會(huì)在源碼目錄下生成android.ipr文件。
3.導(dǎo)入Android源碼到Android Studio
打開AS點(diǎn)擊“Open an existing Android Studio project”蚌斩,導(dǎo)航到源碼路徑铆惑,打開android.ipr。
導(dǎo)入成功后:
這樣就可以在AS上查看源碼,但是源碼的體積很大员魏,如果全部導(dǎo)入會(huì)比較卡丑蛤,可以排除一些代碼,可以在android.iml下修改逆趋。