步驟方法
- 找相近機型
找相近機型主要是為我們移植rom節省功夫,因為相近機型的rom大部分驅動都是相同的,比如和小編用的G22相近的機型有G14、G18、One S,然后我選擇的是G14的ROM,為什么?因為G14與G22的硬件配置最相似,比如CPU是同型號的,分辨率也是一樣的,連攝像頭像素都一樣,所以為G22移植ROM,找G14機型的rom是首選。機友們認真分析之后可以找到合適的吧。 - 移植boot.img
移植安卓rom首先要移植boot.img,這里我只說一下要重點修改boot.img里面的內容,此外怎么解包和打包boot.img就不在這里談及了,網上有很多教程,多用搜索功能。我推薦用廚房軟件解包boot.img,解包boot.img后有BOOT-EXTRACTED文件夾,BOOT-EXTRACTED文件夾里面有boot.img-ramdisk文件夾和zImage內核,我們找到boot.img-ramdisk文件夾里面的init.rc文件,移植boot.img全部就在init.rc文件,init.rc文件我理解就是一個啟動文件,我們開機后通過init.rc文件啟動系統。好,現在我們用文本編輯打開init.rc文件,找到export BOOTCLASSPATH這一項,這一項后面就是啟動系統的相關項目,不同機型不同系統這一項啟動內容都不一樣,那么我們怎么修改這個呢?很簡單,比如我們解包G14的sense4的rom,找到G14的內核boot.img,然后解包G14的boot.img,找到init.rc文件,然后用文本打開將export BOOTCLASSPATH這一項后面的內容全部復制,然后再到22的init.rc,把export BOOTCLASSPATH這一項的內容復制上去,簡單的說就是將G11的啟動內容復制到G22的啟動內容上,到這里,boot.img的移植就完成了,最后將G22的boot.img打包回來。 - 修改rom包刷機腳本
我們知道recovery刷機包都是zip格式的,所以我們完全可以解壓修改后再打包回來,完全沒有問題。比如我們下載G14的一個XUI的官方ROM,解包后里面有META-INF文件夾,有system系統文件夾,有boot.img內核文件,我們只要修改META-INF文件夾,META-INF里面都是刷機腳本文件,操作如下:
\META-INF\CERT.RSA 簽名文件 刪掉
\META-INF\CERT.SF 簽名文件 刪掉
\META-INF\MANIFEST.MF 簽名文件 刪掉
\META-INF\com\android 機型驗證文件夾 整個刪掉
\META-INF\com\google\android\ update-binary 刷機命令程序 保留
\META-INF\com\google\android\ updater-script 刷機腳本 需要修改
修改updater-script如下:
用文本打開updater-script,刪除以下兩行機型驗證
assert(getprop("ro.product.device")== "ruby" ||
getprop("ro.build.product") == "ruby");
將mount("ext4","EMMC", "/dev/block/mmcblk0p23", "/data");
改為mount("ext4", "EMMC", "/dev/block/mmcblk0p31","/data");
修改好保存updater-script
注意上面的紅色數字改成你data分區的分區表的代碼。紅色數字每個機型特定,如果錯誤,ROM直接就不能刷了。如何查看分區表信息,可以直接找度受。或者等小編后續的教程。
- 替換boot.img
將修改好的G22的boot.img(不會修改boot的機油可以直接用相同UI的ROM的boot.img)替換到G14的XUI官方ROM里面 - 簽名打包
重新打包ROM為zip格式,然后拿去刷機吧,按照上面過程操作,這個rom完全可以開機進入系統的。
不過進入系統之后你會發現完全不能使用啊,各種進程停止。因為簡單替換boot.img,雖然可以進入系統,但是由于驅動或配置不同,還是存在很多bug的,比如開機后不能識別內存卡,usb不能掛載內存卡,wifi不能用,wifi熱點不能用,GPS不能用,重力感應不能用,聲音有問題等等。這些都會在后續的教程中間一一解決,盡量使我們的ROM更完美。