Mac OS 在移動(dòng)硬盤上下載并編譯Android源碼

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)擊抹掉顷扩。


1.png

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自帶的磁盤工具
打開磁盤工具


2.png

然后選擇“新建映像”->“空白映像”仇穗,出現(xiàn)下圖:


3.jpg

設(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/'
4.jpg

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)目名稱下腐泻。下載成功后的源碼目錄:


5.png

2.5 編譯Android源碼

1.在源碼的當(dāng)前路徑運(yùn)行如下命令

source build/envsetup.sh

不出意外的話會(huì)輸出如下信息:


6.png

2.生成android.ipr文件

make idegen && development/tools/idegen/idegen.sh
7.png

解決方法:打開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文件。


8.jpg

3.導(dǎo)入Android源碼到Android Studio
打開AS點(diǎn)擊“Open an existing Android Studio project”蚌斩,導(dǎo)航到源碼路徑铆惑,打開android.ipr。


9.jpg

導(dǎo)入成功后:


10.jpg

這樣就可以在AS上查看源碼,但是源碼的體積很大员魏,如果全部導(dǎo)入會(huì)比較卡丑蛤,可以排除一些代碼,可以在android.iml下修改逆趋。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盏阶,一起剝皮案震驚了整個(gè)濱河市晒奕,隨后出現(xiàn)的幾起案子闻书,更是在濱河造成了極大的恐慌,老刑警劉巖脑慧,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件魄眉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡闷袒,警方通過(guò)查閱死者的電腦和手機(jī)坑律,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)囊骤,“玉大人晃择,你說(shuō)我怎么就攤上這事∫参铮” “怎么了宫屠?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)滑蚯。 經(jīng)常有香客問我浪蹂,道長(zhǎng),這世上最難降的妖魔是什么告材? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任坤次,我火速辦了婚禮,結(jié)果婚禮上斥赋,老公的妹妹穿的比我還像新娘缰猴。我一直安慰自己,他們只是感情好疤剑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布滑绒。 她就那樣靜靜地躺著,像睡著了一般骚露。 火紅的嫁衣襯著肌膚如雪蹬挤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天棘幸,我揣著相機(jī)與錄音焰扳,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吨悍,可吹牛的內(nèi)容都是我干的扫茅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼育瓜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼葫隙!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起躏仇,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤恋脚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后焰手,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體糟描,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年书妻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了船响。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡躲履,死狀恐怖见间,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情工猜,我是刑警寧澤米诉,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站域慷,受9級(jí)特大地震影響荒辕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜犹褒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一抵窒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧叠骑,春花似錦李皇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至慰丛,卻和暖如春卓囚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背诅病。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工哪亿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粥烁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓蝇棉,卻偏偏與公主長(zhǎng)得像讨阻,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子篡殷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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