4. Android編譯過程及腳本分析

  • 編譯內(nèi)核
    lichee文件夾下霎桅,有build.sh的腳本巾钉,主要內(nèi)容是對(duì)kernel內(nèi)核的編譯瘫镇,out目錄下會(huì)產(chǎn)生已選擇相應(yīng)的img,之后在android編譯的時(shí)候則會(huì)直接從中拷貝進(jìn)行編譯盖溺。
  • 編譯android
    • 編譯之前漓糙,會(huì)執(zhí)行source build/envsetup.sh和lunch命令,其中l(wèi)unch會(huì)跟一個(gè)參數(shù)表示產(chǎn)品的型號(hào)和eng烘嘱,userdebug之類昆禽。
    • 之后運(yùn)行extract-bsp:extract-bsp是一個(gè)腳本函數(shù),在device/softwinner/common/vendorsetup.sh 他也是在lunch的時(shí)候被執(zhí)行的拙友,也就是說如果先不執(zhí)行l(wèi)unch ,extract-bsp是無效的歼郭。這個(gè)腳本的主要作用是將lichee編譯的結(jié)果輸出到device/softwinner/vendor目錄下遗契。
    • 打包IMG:上面的extract-esp執(zhí)行完之后,則可以運(yùn)行make -jn(n根據(jù)電腦的配置選擇病曾,我用的是8)牍蜂,第一次編譯的過程非常久,大概1-2個(gè)小時(shí)左右泰涂。編譯結(jié)束后鲫竞,會(huì)在out文件夾下生成很多的img文件這也是為我們的打包做準(zhǔn)備。
    • 最后執(zhí)行pack命令逼蒙,進(jìn)行打包从绘,運(yùn)行結(jié)束之后,最后會(huì)在lichee/tools/pack目錄下,一般格式是sun8xxx_android_yourname_uart0.img(其中yourname是自己取的名字)僵井。生成的img文件就可以進(jìn)行固件的燒錄了陕截,燒錄的方式由硬件商提供。

1. android編譯過程

(1) 初始化參數(shù)設(shè)置(初始化編譯環(huán)境):執(zhí)行source build/envsetup.sh(加載指令和分支)
(2) 檢查環(huán)境變量并配置目標(biāo)環(huán)境:lunch 命令
(3) 選擇 lunch:讀取目標(biāo)配置和平臺(tái)信息
(4) 清空輸出目錄:out目錄清掉才能夠重新編譯
(5) 執(zhí)行編譯:make -j16或make -j8
(6) 生成升級(jí)包:使用打包程序生成升級(jí)包

2. 編譯過程及腳本分析

編譯過程簡(jiǎn)單腳本分析.png

(1) .bulid/envsetup.sh 分析

  • 在源碼目錄下通過. bulid/envsetup.shsource bulid/envsetup.sh來執(zhí)行envsetup.sh文件
    執(zhí)行.png

    注意:將 source 替換成 .(一個(gè)點(diǎn))可以省去一些字符批什,這種簡(jiǎn)寫形式在文檔中更為常用农曲。
    說明:在源碼目錄下通過vi bulid/envsetup.sh命令來查看envsetup.sh文件,envsetup.sh文件內(nèi)容如下(包括各種編譯命令)驻债。
    各種編譯命令.png

    備注:只有執(zhí)行過envsetup.sh文件后才可以把各種編譯命令加載到終端上乳规,之后才可以在終端使用各種編譯命令。通過make命令可以編譯整個(gè)android源碼合呐;mm指令編譯當(dāng)前目錄(單獨(dú)模塊的編譯)暮的;mmm指令就是用來編譯指定目錄(單獨(dú)模塊的編譯);lunch指令設(shè)置編譯目標(biāo)合砂,所謂的編譯目標(biāo)就是生成的鏡像要運(yùn)行在什么樣的設(shè)備上青扔。

問題:執(zhí)行.bulid/envsetup.sh命令時(shí),做了什么事情翩伪?
回答:執(zhí)行.bulid/envsetup.sh命令時(shí)微猖,做了加載編譯命令加載平臺(tái)信息(分支)兩件事。加載編譯命令后則可以在shell中使用envsetup.sh腳本文件中包含的各種編譯命令缘屹,如下面所示的執(zhí)行lunch命令獲取所有的分支凛剥;加載平臺(tái)信息后則可以獲取對(duì)應(yīng)的分支。

(2) lunch 分析

  • 在源碼目錄下通過lunch命令來獲取所有l(wèi)unch(分支)
    獲取所有l(wèi)unch.png
  • 選擇lunch(分支)


    選擇并獲取平臺(tái)信息.png
  • 通過export命令來查看當(dāng)前環(huán)境變量
    image.png

問題:lunch做了什么轻姿?如何增加和刪除一個(gè)lunch犁珠?
回答:通過修改分支的源碼來減少分支,通過復(fù)制分支并修改來增加分支互亮。

3. android源碼編譯

備注:使用make命令make -j16make -j8進(jìn)行源碼編譯犁享。

編譯.png

問題:如何使用android的編譯命令編譯單獨(dú)的模塊?
回答:通過make命令可以編譯整個(gè)android源碼豹休;mm指令編譯當(dāng)前目錄(單獨(dú)模塊的編譯)炊昆;mmm指令就是用來編譯指定目錄(單獨(dú)模塊的編譯)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末威根,一起剝皮案震驚了整個(gè)濱河市凤巨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洛搀,老刑警劉巖敢茁,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異留美,居然都是意外死亡彰檬,警方通過查閱死者的電腦和手機(jī)伸刃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來僧叉,“玉大人奕枝,你說我怎么就攤上這事∑慷椋” “怎么了隘道?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)郎笆。 經(jīng)常有香客問我谭梗,道長(zhǎng),這世上最難降的妖魔是什么宛蚓? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任激捏,我火速辦了婚禮,結(jié)果婚禮上凄吏,老公的妹妹穿的比我還像新娘远舅。我一直安慰自己,他們只是感情好痕钢,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布图柏。 她就那樣靜靜地躺著,像睡著了一般任连。 火紅的嫁衣襯著肌膚如雪蚤吹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天随抠,我揣著相機(jī)與錄音裁着,去河邊找鬼。 笑死拱她,一個(gè)胖子當(dāng)著我的面吹牛二驰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播秉沼,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼桶雀,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了氧猬?” 一聲冷哼從身側(cè)響起背犯,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤坏瘩,失蹤者是張志新(化名)和其女友劉穎盅抚,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體倔矾,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡妄均,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年柱锹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丰包。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡禁熏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出邑彪,到底是詐尸還是另有隱情瞧毙,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布寄症,位于F島的核電站宙彪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏有巧。R本人自食惡果不足惜释漆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望篮迎。 院中可真熱鬧男图,春花似錦、人聲如沸甜橱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽渗鬼。三九已至览露,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間譬胎,已是汗流浹背差牛。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留堰乔,地道東北人偏化。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像镐侯,于是被迫代替她去往敵國和親侦讨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350