Android 5.0.1(Lollipop)源碼的下載、編譯(eng版本)並燒錄

轉載:

Android 5.0.1(Lollipop)源碼的下載、編譯(eng版本)並燒錄到Ne,有需要的朋友可以參考下。

1.配置Linux編譯環境

安裝JDK

AOSP(AndroidOpen Source Project)需要Java7支持,在Ubuntu中使用OpenJDK,安裝方法如下:

$ sudo apt-get update  
$ sudo apt-get install openjdk-7-jdk

安裝需要的包(只針對Ubuntu14.04)

$ sudo apt-get install bison g++-multilib git gperf libxml2-utils

配置USB連接和設置編譯好的output文件目錄等在此不作詳細介紹(不影響編譯效果)

2.下載Android源碼

創建Repo客戶端

①.創建新的目錄WORKING_DIRECTORY來存放工作文件:

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

②. 運行repoinit獲取最新的Repo版本(推薦),之後下載的源碼將存放在工作路徑WORKING_DIRETORY中:

$ repo init -u https://android.googlesource.com/platform/manifest

或者指定下載任一版本(Branch),在創建Repo客戶端時使用-b 選項:

$repo init -u https://android.googlesource.com/platform/manifest-b android-5.0.1_r1

(注:由於沒有安裝Repo必要軟件,會提示安裝Repo和Git相關軟件,按照提示安裝即可)

③在Repo初始化時會提示配置real name和email address,email address需要是連接到註冊的Google賬號的地址(推薦直接使用Gmail郵箱),real name在提交代碼時會顯示在代碼信息中

下載Android代碼樹

這裏運行下面一條指令直接下載上一步指定的安卓版本的源碼:

$repo sync

等吧,最快可能也要五六個小時…..好像只能開代理下…..

3.獲取硬件驅動

Google提供的所有Nexus系列設備的硬件驅動的二進制文件在以下網址中均可下載https://developers.google.com/android/nexus/drivers#makolrx22c我手中的是Nexus4,也可根據自己手機型號選擇,找到“Nexus4 binaries for Android 5.0.1(LRX22C)”,有3個硬件驅動的壓縮包,分別是qcom-mako-lrx22c-1146e92c.tgz、lge-mako-lrx22c-ad9be737.tgz、broadcom-mako-lrx22c-ea539f92.tgz

下載完成後將三個壓縮包解壓至Android源碼根目錄(WORKING_DIRECTORY),得到三個.sh文件extract-broadcom-mako.sh、extract-lge-mako.sh、extract-qcom-mako.sh,分別執行這三個shell腳本(會提示是否接受License之類的,IACCEPT即 可),會在源碼目錄下新生成一個/vendor目錄,裏面就是Nexus4所需的相關硬件驅動二進制文件

(一定要在編譯Android源碼前確保在源碼根目錄有官方提供的硬件驅動目錄vendor,否則編譯完成燒錄後reboot會因爲缺少硬件驅動卡在Google啓動畫面上)

4.編譯Android源碼

初始化編譯環境

執行初始化編譯環境的腳本:

$ source build/envsetup.sh

選擇一個Target

使用lunch指令制定編譯的target,具體的配置可以通過參數來指定,例如:

$lunch aosp_arm-eng

這行指令用來編譯一個完整的模擬器emulator,所有的debug都是開啓的。

所有的target形式都是BUILD-BUILDTYPE,其中BUILD是一個特定代碼集合的名稱,如Nexus4的代碼名稱就是occam(mako)。

BUILDTYPE即編譯的模式,有一下三種:

-user: 受限的訪問,適用於發行版的產品

-userdebug: 和”user”模式類似,但是有root權限訪問並具有debug功能,適用於debug

-eng: 工程機的模式,用於在開發配置中添加新的debug工具等

顯然,我們需要進行eng模式的編譯,Nexus4的編譯配置是:

$lunch full_mako-eng

編譯代碼

使用make指令,GNU的make指令可以通過-jN選項進行並行操作,N的設置在此不多介紹,我使用8個任務並行的指令:

$make -j8

5.解鎖Bootloader

只有在Bootloader是unlock模式下才可能燒錄定製的系統,Nexus4設備默認的Bootloader都是locked的,需要解鎖。先把Nexus4關機,然後同時按住音量的2個鍵和power鍵,進入fastbootmode,執行下面命令解鎖:

$fastboot oem unlock

官方推薦在燒錄系統前格式化cache和userdate,注意在執行下面命令前做好手機數據的備份:

$fastboot format cache

$fastboot format userdata

6.刷入Android5.0.1適配的Bootloader和基帶版本

從官方提供的出廠鏡像中可以找到合適的Bootloader和radio信息,如果不執行這步,查看“Settings->”Aboutphone”->”Baseband version”爲“unknown”,更簡單的說,打不了電話….

google factory image:https://developers.google.com/android/nexus/images

nexus4 factory image:https://developers.google.com/android/nexus/images#occamjdq39

我下的是FactoryImages “occam” for Nexus 4的5.0.1(LRX22C),.zip文件解壓後的文件信息如下:

bootloader-mako-makoz30f.img (Nexus 4 的bootloader鏡像)

flash-base.sh

flash-all.bat

image-occam-lrx22c.zip(出廠鏡像)

flash-all.sh

radio-mako-m9615a-cefwmazm-2.0.1701.05.img(Nexus 4的基帶鏡像)

把bootloader和radio刷入Nexus4,我使用了自己的路徑,注意要替換成你的路徑:

$fastbootflash bootloader/mnt/software/factory-image/occam-lrx22c/bootloader-mako-makoz30f.img

刷好bootloader後重啓進入bootloader用最新的bootloader進行燒錄radio和編譯好的rom:

$fastboot reboot-bootloader

刷入基帶radio:

$fastbootflash radio/mnt/software/factory-image/occam-lrx22c/radio-mako-m9615a-cefwmazm-2.0.1701.05.img

6.執行(for emulator)/燒錄(for Nexus 4)

模擬器運行

如果在選擇編譯模式時採用full_arm-eng或者aosp_arm-eng等的參數時可以進行模擬器運行:

$emulator

燒錄到設備(Nexus4)

完整的Android5.0.1可以通過一行簡單的命令刷入Nexus 4,它在檢測bootloader和radio版本和編譯好的Android版本匹配後把boot、recovery、system文件分區燒錄到設備中,命令裏的“-w”參數是wipe,就是把所有的user data格式化,如果有要保留的數據注意備份:

$fastboot -w flashall

燒錄完成後會reboot到開機啓動界面,Android 5.0.1的Nexus 4工程機版本的編譯燒錄全部完成,enjoy it~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章