1. 程式人生 > >Android Rom定製與修改學習(一)

Android Rom定製與修改學習(一)

最近ZUK慘遭聯想拋棄,從而使得ZUK系列全線大降價,於是將服役了三年的榮耀6換下了,入手ZUK2 PRO,機器在硬體方面都挺讓人滿意,只是聯想採用了一塊AMOLED屏,相比較於IPS而言,A屏顏色實在過於飽和,外加ZUK自帶ZUI也可能不再更新,於是便萌生了在ZUI2.3基礎上自行定製來達到降低螢幕飽和度以及進行適量調整的想法,在此記錄下自己的學習歷程。

  • 1、聯想ZUI Rom解包
  • 2、boot.img解打包
  • 3、system.img解打包

1、聯想ZUI ROM解包

  聯想官方ROM解包出來的是一系列QSB檔案,需要進行進一步解包才能得到相應的.img檔案,本部分主要參考:

http://bbs.lenovomobile.cn/z2pro/t296299中的流程進行,下載文中提到的qsb_bootimg.exe和作者製作的bat檔案進行一鍵解包(直接將qsb檔案拖上bat)。
  解包後得到如下檔案:system1.img、system2.img。。。以及boot1.img、boot2.img等等,分開的零散檔案無法使用正常的方法進行開啟,於是採用上面解包bat作者製作的合併工具qsb-imger.exe將零散的img檔案進行合併,使用方法如下:
qsb-imger.exe使用方法
  經過以上步驟,可得到一個完整rom所需要的幾乎所以img檔案和底包(一些mbn檔案和類似分割槽的bin檔案,目前還有待進一步探索),對於rom的修改基本上只需要用到boot.img和system.img檔案。

2、boot.img解打包

  從本部分開始主要在ubuntu16.04下進行。
  boot.img中的內容主要包括一個head和linux核心和跟檔案系統,對於從官方rom基礎上進行修改得到定製rom而言,解包boot.img主要是為了做核心root,同時也可以從跟檔案系統ramdisk中抽取file_contexts檔案供之後system.img再打包是使用。解打包使用的工具為mkbootimg系列工具,具體使用方法在終端中輸入命令參考幫助即可獲得。

./mkboot boot.img <dir>

3、system.img解打包

  linux下system.img解包使用mount命令即可:

sudo mount -t ext4 -o loop system.img system

  解包後掛載資料夾system為755許可權,不利用修改,因此對其許可權進行修改:

sudo chmod -R 777 system

  之後便可以對該資料夾進行一系列修改,修改完成後,將file_contexts檔案複製到與system資料夾同一目錄,使用make_ext4fs和simg2img對system進行再打包操作:

sudo make_ext4fs -s -l 3072M -S file_contexts -a system system_new.img system 

  這裡有幾個注意點,之前我沒注意到的時候製作成刷機包一直刷機失敗:
  1.-l後面的檔案大小盡量與原檔案保持一致,甚至可以直接複製原始檔屬性中檔案大小。
  2.make_ext4fs最好升級至最新版本。
  3.-s這個引數是生成ext4的sparse版img,實測不加好像也沒什麼影響,只是加上後需要用simg2img進行再次轉換,具體會產生什麼影響之後有時間再研究。

  成功後,將生成檔案改名為system.img檔案,並找到一個刷機包的updater-script檔案(在META-INF資料夾深處)進行相應修改,同boot.img檔案一同打包為一個update.zip檔案,使用auto-sign工具進行簽名之後就可以進行愉快的刷機了。