Android ROM开发(三)——精简官方ROM并且内置ROOT权限,开启Romer之路
Android ROM開發(三)——精簡官方ROM并且內置ROOT權限,開啟Romer之路
相信ROM的相關信息大家通過前幾篇的學習都是有所了解了,這里就不在一一提示了,這里我們下載一個官方包,我們還是以之前的紅米note為例子;
一.精簡
相對于各個廠商的推廣軟件,你可以毫不留情的把他刪掉
1.廠商內置APK
一般廠商的ROM還是會放一點點軟件在里面的,不純在純凈ROM之說,產商內置的軟件在system/vendor/app目錄下,你全部刪掉就是了
MIUI一般不放在這個目錄,放在data/目錄下
2.系統APK
在system/app下,有些軟件也是我們不想要的,比如應用商店,收音機之內的,我們也可以刪掉,不過,那都是需要自己斟酌下了,刪錯了可是要付出代價的哦
3.推廣軟件
一般官方包不會有這個目錄,只有第三方才有,這里主要是我們用recovery刷ROM的時候推送到手機安裝的一些aok,我們叫他推廣軟件,目錄為data/app下,小米的結構好像要多一點(每個廠商的目錄都有細微的變化)system/miui/app下
4.去掉官方recovery
這里我們只要把根目錄下的recovery文件夾刪掉就行
5.去掉標識
一些官方自帶的東西都可以刪掉,比如uboot.img,logo.img,這里我把他們都刪掉了,只剩下
二.修改刷機腳本updater-script
既然前面我們把該刪掉的都刪掉了,那么刷機腳本也是要修改一下咯
1.刪除機型效驗
getprop("ro.product.device") == "lcsh92_wet_tdd" || abort("This package is for \"lcsh92_wet_tdd\" devices; this is a \"" + getprop("ro.product.device") + "\"."); mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/data");2.刪除官方recovery解壓
這里他是要把剛才根目錄的官方recovery拷貝到手機里去,但是我們都已經精簡了,所以這里就不用了
package_extract_dir("recovery", "/system") || abort("Failed to extract dir from \"recovery\" to \"/system\".");recovery還沒有刪除干凈哦,我們Ctrl+F搜索一些recovery
很明顯,這兩個我們也是不要滴
這里要注意,你精簡了什么東西,腳本中都有清單,你要對應的刪掉
三.添加ROOT權限
這里是這樣的,我們拿著一個機型,我們找到與他對應的root卡刷包,這里我就隨便下了一個做示例
注意,這里我只是找了個root包做演示,如果你要添加ROOT權限的話,要找對應型號的ROOT包
1.編譯內核
因為廠商在boot中有一個反root的機制,所以,我們需要把boot里的一些東西去掉,這里提供了一個比較方便的編譯內核的工具,下載地址:鏈接: http://pan.baidu.com/s/1i3MqggH 密碼: 4g7q
使用方法也是很簡單,就不需要使用我們的廚房了,這個操作方便點,這里我們拷貝boot.img放在這個目錄下,執行MTK解壓boot.bat
解壓完成之后同目錄下就有一個boot的文件夾了
我們用notpad++打開boot/rmdisk/init.rc
我們滑動到最末尾,刪掉這么一段話(每個機型不同,大體位置差不多)
這是另一個機型找的,MIUI是沒有的
然后再刪除boot/rmdisk/sbin/coolsec
然后執行根目錄的MTK打包boot.bat打包回來替換到原來的ROM中去
2.ROOT腳本
我們先來看看ROOT的腳本是什么樣子的
//輸出 ui_print("***********************************"); ui_print(" ROOTPKG for DASHEN, E.Y. v2.0 "); ui_print("***********************************"); //進度 show_progress(0.500000, 0);ui_print("Extract files..."); //寫入這三個文件 package_extract_file("busybox", "/tmp/busybox"); package_extract_file("updater.sh", "/tmp/updater.sh"); package_extract_file("root.zip", "/tmp/UPDATE-SuperSU.zip");//設置權限 set_perm(0, 0, 0770, "/tmp/busybox"); set_perm(0, 0, 0770, "/tmp/updater.sh"); set_perm(0, 0, 0660, "/tmp/UPDATE-SuperSU.zip");ui_print("Install busybox..."); run_program("/tmp/busybox", "--install", "-s", "/sbin"); //執行 ui_print("Mount system partition..."); mount("ext4", "EMMC", "/system", "/system");show_progress(0.200000, 0); show_progress(0.200000, 10);ui_print("Updating..."); run_program("/tmp/updater.sh", "/tmp/UPDATE-SuperSU.zip");ui_print("Unmounting system..."); unmount("/system");show_progress(0.100000, 0); ui_print("Installation complete!");這里不難看出,只是把ROOT包下的三個文件寫入到了手機,也就是我選中的這三個文件
既然如此,那就好辦了,我們把這三個文件解壓到我們的ROM中去
我們根據ROOT的腳本來看,她就做了三件事,解壓,設置權限,執行,那我們照著改就是了,但是記住,Android4.2和Android4.4以及5.0,6.0的指令是不一樣的,這里我們都是Android4.2的話,可以直接使用,我們就把這些放在掛載指令之前把
show_progress(0.500000, 0);ui_print("Extract files..."); package_extract_file("busybox", "/tmp/busybox"); package_extract_file("updater.sh", "/tmp/updater.sh"); package_extract_file("root.zip", "/tmp/UPDATE-SuperSU.zip");set_perm(0, 0, 0770, "/tmp/busybox"); set_perm(0, 0, 0770, "/tmp/updater.sh"); set_perm(0, 0, 0660, "/tmp/UPDATE-SuperSU.zip");ui_print("Install busybox..."); run_program("/tmp/busybox", "--install", "-s", "/sbin");ui_print("Mount system partition..."); mount("ext4", "EMMC", "/system", "/system");show_progress(0.200000, 0); show_progress(0.200000, 10);ui_print("Updating..."); run_program("/tmp/updater.sh", "/tmp/UPDATE-SuperSU.zip");ui_print("Unmounting system..."); unmount("/system");我們現在其實就可以去測驗了,首先,我沒有這手機,所以也不好測試,其次,有真機的小伙伴野不要去測試,因為這篇博客只是拋磚引玉而已,并沒有講的多詳細,我們只是把這個步驟和思想走下去,以后我們會用更高端的工具來測試
想繼續連接的話,可以時刻關注一下,下一篇主要是分析從recovery中備份出來的ZIP包制作成ROM包
總結
以上是生活随笔為你收集整理的Android ROM开发(三)——精简官方ROM并且内置ROOT权限,开启Romer之路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我靠着这套学习视频+文档,自学Andro
- 下一篇: RIPng,RIP升级IPv6