AOSP源碼編譯及刷入Nexus 5

看到的一篇比較靠譜的AOSP源碼編譯和刷機(jī)實(shí)戰(zhàn)文章派阱。轉(zhuǎn)自:https://blog.csdn.net/u012417380/article/details/73196722

一染突、下載專有的二進(jìn)制文件

目前網(wǎng)絡(luò)上的中文教程以及出版的書籍幾乎都是直接編譯AOSP源碼用模擬器加載啟動鏡像贮懈。但是要想讓用AOSP源碼編譯出的系統(tǒng)鏡像在特定的設(shè)備中運(yùn)行,僅僅編譯AOSP分支的源代碼是不夠的颈渊,必須下載相應(yīng)的與硬件相關(guān)的其他專有庫遂黍。

下載專用的二進(jìn)制源碼

由于我使用的是NEXUS 5 設(shè)備俊嗽,并且打算編譯Android 4.4.4_r1版本,所以去官方 Nexus 和 Pixel 設(shè)備的二進(jìn)制驅(qū)動下載頁面:https://developers.google.com/android/drivers?下載了相應(yīng)的二進(jìn)制驅(qū)動绍豁。

三個(gè)鏈接下載的三個(gè)驅(qū)動文件?

解壓專有二進(jìn)制文件

將三個(gè)壓縮包解壓出的自解壓腳本放在源碼樹的根目錄下并運(yùn)行?

運(yùn)行后芯咧,會提示你查看證書竹揍,按Enter鍵一行行的查看,出現(xiàn)下面的輸入提示時(shí)无拗,輸入?I ACCEPT昧碉,解壓到了vendor?目錄下。其它兩個(gè)自解壓腳本也是這樣執(zhí)行

解壓后的目錄:?

這三個(gè).sh自解壓文件執(zhí)行下來按Enter按的痛苦么焰扳?很痛苦Q肝堋8珉埂嗅辣!于是我看了看這三個(gè)文件的結(jié)構(gòu):

把第254行改為'if test "$typed" = I\ ACCEPT'就可以一路Enter到底至解壓了。感興趣的可以踩踩這個(gè)坑兒愿题,成功后告訴我~

清理

命令刪除所有以前編譯操作的已有輸出:

$ make clobber

二蛙奖、設(shè)置環(huán)境

使用?build目錄中的envsetup.sh?腳本初始化環(huán)境

$sourcebuild/envsetup.sh

$ . build/envsetup.sh

三、選擇目標(biāo)

使用lunch選擇要編譯的目標(biāo)雁仲。確切的配置可作為參數(shù)進(jìn)行傳遞。例如以下命令(只是舉例攒砖,不用執(zhí)行):

$ lunch aosp_arm-eng//該命令表示針對模擬器進(jìn)行完整編譯,并且所有調(diào)試功能均處于啟用狀態(tài)惰蜜。

不設(shè)置參數(shù)直接運(yùn)行l(wèi)anch的話,會提示從菜單中選擇一個(gè)目標(biāo)?

所有編譯目標(biāo)都采用?BUILD-BUILDTYPE形式政钟,其中?BUILD?是表示特定功能組合的代號养交。

BUILDTYPE?是以下類型之一:?

三者具體差異Google也在官方文檔中給出了說明:https://source.android.com/source/building

模擬器一般選eng,調(diào)試功能全開碎连。?

調(diào)試真機(jī)的話選userdebug?驮履。?

發(fā)行最終版本用user?。

官方給出了一份自己出廠設(shè)備的代號和編譯配置選項(xiàng)?

我們用的設(shè)備是NEXUS 5 倒戏,所以lanch?編譯配置為aosp_hammerhead-userdebug

四杜跷、編譯代碼

我們使用make命令來編譯代碼,為了提高編譯速度矫夷,GNU Make 可以借助 -jN 參數(shù)處理并行任務(wù),通常使用的任務(wù)數(shù) N 介于編譯時(shí)所用計(jì)算機(jī)上硬件線程數(shù)的 1-2 倍之間淑趾。

我們來查看自己計(jì)算機(jī)上的核心數(shù):

aosp444@aosp444-virtual-machine:~$ cat /proc/cpuinfo| grep processor

可看到自己創(chuàng)建的虛擬機(jī)CPU核心共有 4 個(gè)忧陪,那么要實(shí)現(xiàn)最快的編譯速度嘶摊,可以使用介于?make -j4?到?make -j8之間的命令。

運(yùn)行下面的命令進(jìn)行編譯:

make-j8

在虛擬機(jī)中編譯了4小時(shí)左右等孵,編譯結(jié)束蹂空。?

編譯后輸出的文件都放在了源碼根目錄下的out文件中,編譯后生成的文件:

五咐熙、刷入目標(biāo)設(shè)備

那么我們刷機(jī)刷入哪些生成的文件呢辨萍?

事實(shí)上,我之前已經(jīng)下載了Nexus 5官方進(jìn)行鏡像包進(jìn)行了刷機(jī)爪飘,可參考我寫的這篇文章:NEXUS 5 工廠鏡像刷機(jī)教程及刷機(jī)包目錄解析?拉背,萬一自己編譯的系統(tǒng)刷機(jī)失敗椅棺,可刷官方刷機(jī)包來救急。

下面是官方刷機(jī)包的目錄:

對比我們編譯生成的文件床估,我們知道編譯的可刷機(jī)的文件有boot.img诱渤、system.img、recovery.img鞋吉、cache.img励烦、userdata.img五個(gè)鏡像文件。

當(dāng)我們編譯前執(zhí)行source build/envsetup.sh?赊锚、lanch aosp_hammerhead-userdebug?兩條命令時(shí)屉栓,腳本已經(jīng)為我們自動設(shè)置好了環(huán)境變量和編譯選項(xiàng),其中·lanch命令為我們設(shè)置好了ANDROID_PRODUCT_OUT變量的值牲平。adb域滥、fastboot工具 的路徑也被設(shè)置好了蜈抓。

1.檢查輸出目錄變量的值

我們在刷機(jī)前輸出ANDROID_PRODUCT_OUT變量的值沟使,確保它的值和編譯后鏡像輸出目錄的路徑值一致渊跋。如果不一致的話,重新設(shè)置ANDROID_PRODUCT_OUT的值與編譯后鏡像輸出目錄路徑值一致燕少。

2.用USB數(shù)據(jù)線連接手機(jī)

用USB數(shù)據(jù)線連接手機(jī)連接手機(jī)與虛擬機(jī)蒿囤,無法識別的話需要設(shè)置USB選項(xiàng)蟋软,具體參考上一篇USB環(huán)境變量配置.?

3.以fastboot 模式啟動手機(jī),進(jìn)行設(shè)備解鎖

默認(rèn)情況下凄敢,Nexus 5是上鎖無法刷入鏡像的湿痢,需要我們解鎖,解鎖會擦除手機(jī)數(shù)據(jù)的拒逮,最好先備份用戶數(shù)據(jù)臀规。在開機(jī)的情況下,輸入命令進(jìn)入bootloader?模式

aosp444@aosp444-virtual-machine:~/Android444_r1$ adb reboot bootloader

輸入下面的命令進(jìn)行解鎖:

aosp444@aosp444-virtual-machine:~/Android444_r1$ fastboot oem unlock

按上下音量鍵選擇YES選項(xiàng),再按電源鍵確認(rèn)就解鎖成功了?

4.刷入鏡像

輸入下面的命令進(jìn)行刷機(jī)

aosp444@aosp444-virtual-machine:~/Android444_r1$ fastboot-wflashall

這時(shí)恩袱,會刷入boot.img胶哲、system.img、recovery.img澈吨、cache.img、userdata.img五個(gè)鏡像文件

然后手機(jī)會重啟1-2次,直至進(jìn)入系統(tǒng)界面屈藐。原汁原味~?

5.以fastboot 模式啟動手機(jī)熙尉,進(jìn)行設(shè)備上鎖

在開機(jī)的情況下检痰,再次輸入命令進(jìn)入bootloader?模式,進(jìn)行設(shè)備上鎖

aosp444@aosp444-virtual-machine:~/Android444_r1$ adb reboot bootloader

aosp444@aosp444-virtual-machine:~/Android444_r1$ fastboot oemlock

上鎖成功后按電源鍵啟動設(shè)備公壤。至此我編譯android系統(tǒng)4.4.4_r1源碼輸入Nexus 5 設(shè)備椎椰。

另外一篇比較好的文章:https://c55jeremy-tech.blogspot.com/2019/04/aosppixel-2-romrom.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末慨飘,一起剝皮案震驚了整個(gè)濱河市瓤的,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌圈膏,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異慎皱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)祈匙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跪帝,“玉大人些阅,你說我怎么就攤上這事±杵” “怎么了缤谎?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵坷澡,是天一觀的道長。 經(jīng)常有香客問我频敛,道長斟赚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任鹊碍,我火速辦了婚禮食绿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘耀销。我一直安慰自己铲汪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布狰住。 她就那樣靜靜地躺著齿梁,像睡著了一般肮蛹。 火紅的嫁衣襯著肌膚如雪创南。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機(jī)與錄音邻储,去河邊找鬼。 笑死冬耿,一個(gè)胖子當(dāng)著我的面吹牛萌壳,可吹牛的內(nèi)容都是我干的日月。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼尺借,長吁一口氣:“原來是場噩夢啊……” “哼精拟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起栅表,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤怪瓶,失蹤者是張志新(化名)和其女友劉穎践美,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陨倡,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡兴革,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了箕昭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泌霍,死狀恐怖述召,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情藤为,我是刑警寧澤夺刑,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布遍愿,位于F島的核電站,受9級特大地震影響沼填,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜岩饼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一薛夜、第九天 我趴在偏房一處隱蔽的房頂上張望却邓。 院中可真熱鬧,春花似錦腊徙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至牵署,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間青责,已是汗流浹背取具。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留产阱,地道東北人块仆。 一個(gè)月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像怎燥,于是被迫代替她去往敵國和親蜜暑。 傳聞我的和親對象是個(gè)殘疾皇子策肝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355