如何編譯CWM Recovery


原文鏈接:http://forum.xda-developers.com/showthread.php?t=1866545

 

你必須使用32位或64位Ubuntu系統,關於如何建立編譯環境和同步源碼的指導,請自己查找有關指導的文章。

 

1,

安裝所需要的包

 

2,

建立編譯的環境,並同步CWM所需的源碼,CyanogenMod源碼中附帶CWM源碼

CWM 5 - Gingerbread
CWM 6 - Jellybean

 

3,

下面我們進入真正的編譯階段,確保你已經使用“repo sync ”命令同步了最新的源碼

進入源碼的目錄

放出以下命令:

     make -j4 otatools

 

3.5,

如果你的機型不被CM10官方支持,請執行這一步

在你的手機終端上執行以下命令,

dump_image boot /sdcard/boot.img

這將boot鏡像導出到你手機的sdcard,復制該鏡像至你的home目錄下

為一款新設備編譯android源碼,需要建立相應的配置文件和makefile文件,這通常比較麻煩,如果僅僅編譯recovery鏡像,會容易的多。在android源碼根目錄下(假設已運行envsetup.sh),運行以下命令(使用適當的名稱取代命令中的名稱)

build/tools/device/mkvendor.sh device_manufacturer_name device_name /your/path/to/the/boot.img

例如,你擁有Samsung Galaxy Ace這款設備,你應該使用以下這條命令

build/tools/device/mkvendor.sh Samsung cooper ~/boot.img
 
Please note that Cooper is the device name. Only use "~/boot.img" if you have the boot image in your home directory. Or else please specify the correct path.

如果所有都工作正常,你將看到"Done!"這樣的確認信息。mkvendor.sh腳本也將在你的android源碼樹中創建以下目錄:

manufacturer_name/device_name

 

4

現在你已經擁有相關的配置文件

在源碼目錄下,在terminal終端下鍵入以下命令

. build/envsetup.sh

這一步將為你建立編譯環境

現在使用這條命令

lunch full_device_name-eng

這將為你的設備建立起build system。用文件管理器或IDE打開目錄,你應該擁有以下文件: AndroidBoard.mk, AndroidProducts.mk, BoardConfig.mk, device_.mk, kernel, system.prop, recovery.fstab, 和 vendorsetup.sh

 

對你感興趣的應該是recovery.fstab和kernel這兩個文件,kernel這個文件是你之前從boot.img文件中提取出的。recovery.fstab將適用於大部分擁有 mtd, emmc,或者其他分區的設備。如果沒有,recovery.fstab將需要優化以支持加載這些點。例如 /sdcard被加載至/dev/block/mmcblk1p1,

你需要將下面這段加入到你的BoardConfig.mk文件中

/sdcard vfat /dev/block/mmcblk1p1 

一旦recovery.fstab已經適當的裝載,你可以開始下一步了

 

5,

現在,我們開始編譯Recovery

make -j4 recoveryimage

這個命令用於編譯recovery鏡像

你能使用這個命令

make -j4 recoveryzip

用於建立一個臨時的recovery.zip刷機包在你真實的設備上測試

你編譯好的recovery可以在"your_source_directory/OUT/target/product/device/recovery.img"目錄下找到。而.zip刷機包可以在相同目錄下的utilities文件夾下找到。

如果各項測試正常,就可以有一個成功的recovery

 

一旦你編譯通過了recovery,通知"koush",在Github上,他就能根據你的編譯文件發放官方版的CWM Recovery,並使Rom Manager提供相應的支持。

 

 

小貼士:

如果你想編譯CWM6,使用以下命令同步jellybean分支源碼

repo init -u git://github.com/CyanogenMod/android.git -b jellybean
 
repo sync

 

如果你改變了BoardConfig.mk文件,在編譯期間運行"make clobber",否則你做的更改就不會生效。

 

如果你在32位系統上編譯CWM6,你需要同步以上源碼,更多信息請參考readme。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM