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文件进行合并,使用方法如下:
Android Rom定制与修改学习(一)_第1张图片
  经过以上步骤,可得到一个完整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工具进行签名之后就可以进行愉快的刷机了。

你可能感兴趣的:(编程学习)