1. 程式人生 > >編譯TWRP-recovery教程及原始碼地址

編譯TWRP-recovery教程及原始碼地址

TWRP這個是一個老外的開源專案,全稱Team-Win-Recovery-Project

Source:https://github.com/TeamWin/Team-Win-Recovery-Project

專案網址:http://teamw.in/project/twrp2

目前更新到 twrp 2.5的版本了。

廢話少說,開始講解如何編譯TWRP了

我的工作環境:ubuntu 12.04(推薦) openjdk 原始碼目錄 ~/android/yemod/

機器配置:E1230 v2 8G記憶體,個人配置

首先你必須要有一份CM程式碼,不管是CM7,9,10,10.1都可以,這裡我使用CM10.1程式碼(基於android 4.2.2)

如何同步CM10.1程式碼,請開啟搜尋引擎搜尋,這裡就不說明了,或者搜尋我的新浪部落格,我原來寫過CM7的同步方式

開啟終端 cd到你的原始碼目錄裡面 比如我的 cd ~/android/yemod/

由於CM自帶的是CWM,但今天我們講的是 TWRP,所以我們需要刪除TWRP 輸入命令,

 rm -rf bootable/recovery1 `

刪除了CWM之後,我們把 TWRP的程式碼同步下來

git clone git://github.com/TeamWin/Team-Win-Recovery-Project.git -b twrp2.4 recovery

這裡我們使用分支為 twrp2.4 儲存目錄為 recovery

程式碼同步完成之後,我們的初始化工作就搞定了。

下一步就是如何編譯適配各種機器的TWRP了

今天我們就拿C8813來做例子吧

首先我們需要拿到官方的韌體包UPDATE.APP 或者UPDATA.APP

然後使用指令碼解壓這個韌體包

指令碼下載地址:git://github.com/ivan19871002/huawei_firmware_unpacker.git

把指令碼和官方韌體包放到同一個目錄終端輸入

./split_updata.pl UPDATE.APP

稍等騷年,會解壓出很多檔案,有可能指令碼解壓出來的recovery.img不是你需要的,因為華為不同的機器解壓出來的都有不同

一般來說 boot.img 和 recovery.img大小都在4M-10M 之間,system.img 就是最大的,找到了boot.img system.img recovery.img之後

我們可以製作卡刷包,但是今天我們講的是如何製作TWRP,所以我們只用到recovery.img就行了

大家可以拿廚房去測試,廚房裡面有一項是解壓recovery.img和boot.img的,拿官方韌體解壓出來的檔案一個一個去解壓,如果解壓成功的不是boot 就是recovery的img檔案

找到解壓成功的目錄 裡面如果存在 boot.img-ramdisk/etc/recovery.fstab 那麼就證明 是recovery.img

 OK,如果我們拿到了正確的recovery.img我們就開始下一步吧

依然是終端 cd 到原始碼根目錄 執行此命令:. build/envsetup.sh (注:build 前面是個空格然後是 點)

初始化環境,然後執行 make -j4 otatools 編譯出需要的工具,機器配置不好的同鞋可能需要時間比較久,不急慢慢等。

編譯結束之後我們可以在原始碼目錄/home/ivan/android/yemod/out/host/linux-x86/ 這裡看到已經編譯出來很多東西了

這個時候依然是在剛剛編譯過 otatools的終端,再次執行:

./build/tools/device/mkvendor.sh huawei c8813 /your/path/to/the/recovery.img (recovery.img可以用 boot.img替代)

如果所有都工作正常,你將看到”Done!”這樣的確認資訊。

 [email protected]:~/android/cm10$ ./build/tools/device/mkvendor.sh huawei c8813 ./recovery.img

Arguments: huawei c8813 ./recovery.img

Output will be in /home/ivan/android/yemod/device/huawei/c8813

 Done

 Use the following command to set up your build environment

 lunch full_c8813-eng

 And use the follwowing command to build a recovery:

. build/tools/device/makerecoveries.sh full_c8813-eng

mkvendor.sh指令碼也將在你的android原始碼樹中建立以下目錄

 huawei/c8813'

如果已經建立成功了,那麼我們開始配置吧

開啟進入裝置C8813裝置的目錄,使用開始我們解包官方韌體中的boot.img-ramdisk/etc/recovery_emmc.fstab 替代 該目錄下的recovery.fstab目錄

因為C8813使用了EMMC分割槽格式,所以要使用recovery_emmc.fstab

我們分析一下C8813這個機器的硬體,

CPU架構Armv7

解析度480*854

EMMC EXT4分割槽格式5 

沒有misc分割槽(從recovery.fstab中可以發現)

OK,分析完了這些之後,我們開始著手配置檔案吧

然後開啟:BoardConfig.mk 這個檔案

因為編譯TWRP多了很多需要手動設定硬體方面的配置引數,沒有預設設定的,所以我們需要寫入這些

# Platform)

 TARGET_CPU_ABI := armeabi-v7

 TARGET_CPU_ABI2 := armeabi

 TARGET_ARCH_VARIANT := armv7

 ARCH_ARM_HAVE_TLS_REGISTER := true

 ARCH_ARM_HAVE_NEON :=true

 ARCH_ARM_HAVE_VFP := true

由於C8813使用的是EXT4分割槽所以我們還要寫入

 TARGET_USERIMAGES_USE_EXT4 := true

 BOARD_USES_MMCUTILS := true

 BOARD_HAS_LARGE_FILESYSTEM := true

我們設定沒有select按鈕

 BOARD_HAS_NO_SELECT_BUTTON := true

解析度 480*854

 DEVICE_RESOLUTION := 480×854

沒有misc分割槽

BOARD_HAS_NO_MISC_PARTITION := true

OK基本配置完畢,開始編譯吧;

終端 切換到原始碼目錄,) 

 . build/envsetup.sh && breakfast c8813

等初始化完畢之後,輸入make recoveryimage -j8 (如果機器配置高你可以把 8 改成16,如果機器不行 請設定4 或者以下)

 OK教程到此結束