Android定制ROM,内嵌su和xposed

本文同步自wing的地方酒馆php

从Windows 98时代起,我就热衷于装系统。平均三天对着家里的台式机重装,重装,再重装。乐此不疲,后来到XP时代,有了GHOST,装的更疯狂了。如今到Android,仍然是刷刷刷,一直有个想法就是本身搞个ROM玩,因而这几天鼓捣了一下把su和xposed内嵌进去了。感谢大佬图乐的指点和讨论。html

这里选择的是ota包,由于ota包能够修改updater-script来实如今recovery里面进行一些操做。android

官方ROM下载地址为:developers.google.com/android/otabash

将他解压,能够看到一些boot.img镜像之类的,这里咱们关心META-INF文件夹,app

里面的updater-script就是recovery刷入zip包时候的一些脚本拉,从这里修改一下脚本就能够作一些咱们想作的事情。

精简&预装系统APP

这里咱们想要实现精简系统APP,其实只须要将system挂载,而且删除/system/app下文件夹便可。而且想要增长系统APP,只须要建立对应文件便可。 在scripet结尾添加如下代码ui

ui_print("mounting system");
mount("ext4", "EMMC", "/dev/block/platform/msm_sdcc.1/by-name/system", "/system");

ui_print("remove apps");
run_program("/sbin/busybox", "rm", "-rf", "/system/app/YouTube");

复制代码

以上代码展现的是删除预装app的过程,那么预装呢?google

咱们在zip包目录建立一个一样的system文件夹,里面放app文件夹,在用脚本把system提取到/system便可:spa

ui_print("set system apps");
package_extract_dir("system","/system");
复制代码

嵌入su

解压su.zip发现几乎和刷机包的原理同样,而且刷入su的过程实际上是用脚本解压boot.img 修改文件值 再从新合并boot.img 在进行刷入。 因此咱们只要在脚本里执行刷入su.zip的操做便可执行:.net

ui_print("====================>now start root");
package_extract_dir("ext/su", "/tmp/supersu");
run_program("/sbin/busybox", "unzip", "/tmp/supersu/su.zip", "META-INF/com/google/android/*", "-d", "/tmp/supersu");
run_program("/sbin/busybox", "sh", "/tmp/supersu/META-INF/com/google/android/update-binary", "dummy", "1", "/tmp/supersu/su.zip");

复制代码

固然,这个时候zip目录要有对应的zip包。code

嵌入xposed

这个是我卡了好久的地方,由于并不知道run_program的pwd,因此后来使用绝对路径而且用另外一个脚本绕了一下:

run_program("/sbin/busybox", "chmod","777","/system/flash-script.sh");
run_program("/sbin/busybox", "chmod","777","/system/install_xposed.sh");

ui_print("run install_xposed.sh");
run_program("/system/install_xposed.sh");
复制代码

其实xposed的刷入,就是把system的一些文件经过flash-script.sh进行替换连接等操做,因此咱们只需把xposed包的system文件夹换一下位置,而后执行flash-script.sh便可:

install_xopsed.sh:

#!/sbin/sh
cd /system/ && /system/flash-script.sh

复制代码

这里须要注意的是上面的注释,这个坑了我好几个小时,由于缺失注释致使没法使用run_program()方法运行。

修改完毕之后,将zip包打包便可

zip -r rom.zip ./
复制代码

这里值得注意的一点是 必须在目录内部打包,在外部会多一层目录,致使没法找到updater-script,这里也坑了我一个多小时。。

参考资料bbs.gfan.com/android-832…

相关文章
相关标签/搜索