編譯Android AOSP代碼

下載完了源代碼,終于到了編譯的階段了惭每。這個階段遠比你想象的簡單,一個make命令就可以完成源代碼的編譯了.參照下面的教程你就可以編譯出適用于Android源代碼樹上的所有分支绒北,包括master.基本的編譯流程如下:

準(zhǔn)備編譯環(huán)境

用envsetup.sh(它在源代碼根目錄/build下面)腳本初始化環(huán)境,注意后面的lunch命令等都跟這一步有沒有執(zhí)行有關(guān)峻汉。如果沒有執(zhí)行后面會提示找不到lunch命令.注意將source替換成.省得打那么多字,并且這種簡短的方式更常見于文檔中蛛碌。我們需要進到源代碼的根目錄下,運行下面其中一個命令酝蜒。

$ source build/envsetup.sh

或者

$ . build/envsetup.sh

選擇編譯目標(biāo)

用lunch命令選擇編譯目標(biāo).額外的配置可以用參數(shù)傳遞。比如下面的命令:

$ lunch aosp_arm-eng

它指的是一個適用于模擬器的完整編譯版本,帶編譯的版本霉咨。

如果運行l(wèi)unch的時候沒有帶任何參數(shù),他就會彈出一個選擇菜單.

Lunch menu... pick a combo:

1. aosp_arm-eng
2. aosp_arm64-eng
3. aosp_mips-eng
4. aosp_mips64-eng
5. aosp_x86-eng
6. 省略一些選項...
17. aosp_angler-userdebug

所有的編譯目標(biāo)的格式都是:BUILD-BUILDTYPE喷斋,BUILD指的是指定特性的結(jié)合浆西,

BUILDTYPE是下面列出的其中一個:

Buildtype 用途
user 有限的權(quán)限近零;適合一般用戶
userdebug 類似user模式,但有root權(quán)限和debug能力,適合debug
eng 帶有額外的debug工具的開發(fā)配置幌甘。

如果你只是想編譯出一個可以運行的版本看看效果痊项,那么可以直接運行l(wèi)unch aosp_arm-eng皱埠,比如我有一個Nexus 6p的真機,我就可以運行 lunch aosp_angler-userdebug.

注意:執(zhí)行l(wèi)unch命令的時候忘巧,彈出Can not find SDK 10.6錯誤睦刃,具體的解決方法見Android編譯過程中的碎碎念.
更多關(guān)于編譯和真機運行的內(nèi)容涩拙,看 Running Builds.

編譯代碼

用make編譯所有東西.GNU make 可以使用-jN參數(shù)并行地處理,并且他一般用CPU線程數(shù)的1~2倍進行編譯.比如在一個dual-E5520機器上(2 CPU,每個CPU 4核,每個核2線程),那么想讓編譯速度最大化就可以用make -j16或者make -j32.

$ make -j4

等待編譯完成后,會產(chǎn)生一些txt文留、img文件,android-info.txt竭沫、cache.imgramdisk-recovery.img蜕提、recovery.img、userdata.img
boot.img、ramdisk.img 吁断、system.img仔役。這些文件跟后面燒錄的過程有關(guān)又兵,非常重要.一般他們在源代碼路徑下的out文件夾中摔认。比如我之前輸入lunch aosp_angler-userdebug,那么就會生成在 “源代碼根目錄/out/debug/target/product/angler”,你也可以用源代碼根目錄下輸入 find . -name system.img查找.

![Uploading Snip20160214_7_020290.png . . .]

開始運行!

你可以直接在模擬器上運行或者將他燒錄到一個設(shè)備上辰企。要注意之前已經(jīng)用lunch選擇了特定的設(shè)備,不然他就很可能不能運行不同的編譯目標(biāo)上。

運行模擬器

如果在選擇編譯目標(biāo)那一步選擇的是lunch aosp_arm-eng.那么這時候就可以直接輸入emulator命令來運行模擬器了(emulator命令在編譯過程中會自動添加到Path路徑下)

$ emulator

刷機

如果在選擇編譯目標(biāo)那步選擇了跟特定機型有關(guān)的編譯選項,比如Nexus 6P,那么就需要燒錄到設(shè)備上.

進入fastboot模式

為了燒錄到設(shè)備上,你需要使用fastboot,在成功編譯后他就會在path路徑下震放。把設(shè)備弄到fastboot模式下殿遂,要嘛手動按特定的組合鍵(對于Nexus系列可以參考這里),要嘛使用命令行如下:

$ adb reboot bootloader

解鎖bootloader

如果你的機器是第一次采用fastboot進行刷機,那么還需要運行下面的命令(要在fastboot模式下)進行bootloader解鎖.bootloader默認(rèn)是鎖住的.bootloader只需要解鎖一次轻掩,解鎖后就不需要再解鎖了.

解鎖命令跟fastboot的版本有關(guān),你可以運行fastboot不加參數(shù),它會彈出明星提示,看看具體是哪個杆查,按照我的經(jīng)驗:

版本 命令
在Nexus 5x浊仆、Nexus 6p之前的機器上運行 fastboot oem unlock
Nexus 5x、Nexus 6p fastboot flashing unlock

一旦設(shè)備進入fastboot模式, 先進入到產(chǎn)生的img文件目錄下(一般在源代碼根目錄下面,你可以搜索)沙绝,運行

$ fastboot flashall -w

-w 選項清空設(shè)備上的/data分區(qū),在第一次燒錄的時候很有必要,但其他時候就不是必須的.
你可能會好奇购笆,一般不都使用rom文件(一個zip包)進行刷機嗎襟锐,這時候怎么就直接通過這個命令就行了粮坞?
是的,更具體的解釋可以見Android編譯過程中的碎碎念.

更多關(guān)于編譯和運行在真實設(shè)備上的東西,請查看running builds.

這時候所有的工作就完成了.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市聋伦,隨后出現(xiàn)的幾起案子夫偶,更是在濱河造成了極大的恐慌界睁,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兵拢,死亡現(xiàn)場離奇詭異翻斟,居然都是意外死亡,警方通過查閱死者的電腦和手機说铃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門访惜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人腻扇,你說我怎么就攤上這事债热。” “怎么了幼苛?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵窒篱,是天一觀的道長。 經(jīng)常有香客問我舶沿,道長墙杯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任括荡,我火速辦了婚禮高镐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘畸冲。我一直安慰自己嫉髓,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布召夹。 她就那樣靜靜地躺著岩喷,像睡著了一般恕沫。 火紅的嫁衣襯著肌膚如雪监憎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天婶溯,我揣著相機與錄音鲸阔,去河邊找鬼。 笑死迄委,一個胖子當(dāng)著我的面吹牛褐筛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播叙身,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼渔扎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了信轿?” 一聲冷哼從身側(cè)響起晃痴,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤残吩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后倘核,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泣侮,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年紧唱,在試婚紗的時候發(fā)現(xiàn)自己被綠了活尊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡漏益,死狀恐怖蛹锰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情遭庶,我是刑警寧澤宁仔,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站峦睡,受9級特大地震影響翎苫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜榨了,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一煎谍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧龙屉,春花似錦呐粘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至五芝,卻和暖如春痘儡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背枢步。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工沉删, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人醉途。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓矾瑰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親隘擎。 傳聞我的和親對象是個殘疾皇子殴穴,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

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