博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android定制ROM,内嵌su和xposed
阅读量:6367 次
发布时间:2019-06-23

本文共 1913 字,大约阅读时间需要 6 分钟。

本文同步自

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

这里选择的是ota包,因为ota包可以修改updater-script来实现在recovery里面进行一些操作。

官方ROM下载地址为:

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

里面的updater-script就是recovery刷入zip包时候的一些脚本拉,从这里修改一下脚本就可以做一些我们想做的事情。

精简&预装系统APP

这里我们想要实现精简系统APP,其实只需要将system挂载,并且删除/system/app下文件夹即可。并且想要增加系统APP,只需要创建对应文件即可。 在scripet结尾添加以下代码

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的过程,那么预装呢?

我们在zip包目录创建一个同样的system文件夹,里面放app文件夹,在用脚本把system提取到/system即可:

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

嵌入su

解压su.zip发现几乎和刷机包的原理一样,并且刷入su的过程其实是用脚本解压boot.img 修改文件值 再重新合并boot.img 在进行刷入。 所以我们只要在脚本里执行刷入su.zip的操作即可执行:

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包。

嵌入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/shcd /system/ && /system/flash-script.sh复制代码

这里需要注意的是上面的注释,这个坑了我好几个小时,因为缺失注释导致无法使用run_program()方法运行。

修改完毕以后,将zip包打包即可

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

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

参考资料

转载地址:http://cjrma.baihongyu.com/

你可能感兴趣的文章
Java的初始化顺序
查看>>
js 判断回文字符串
查看>>
shields小徽章是如何生成的?以及搭建自己的shield服务器
查看>>
猫头鹰的深夜翻译:spring事务管理
查看>>
记一次使用Spring REST Docs + travis + github自动生成API接口文档的操作步骤(下)...
查看>>
1、集合 2、Iterator迭代器 3、增强for循环 4、泛型
查看>>
关于/var/run/docker.sock
查看>>
SCrapy爬虫大战京东商城
查看>>
用 JavaScript 实现链表操作 - 11 Alternating Split
查看>>
Laravel优秀扩展包整理
查看>>
日志分析之识别真假蜘蛛与处理办法
查看>>
太多脚本将会毁掉持续交付
查看>>
一地鸡毛 OR 绝地反击,2019年区块链发展指南
查看>>
卢森堡大学发布RepuCoin系统,可破解区块链51%攻击
查看>>
国内云计算厂商众生相:四大阵营十几家企业生存盘点
查看>>
细说Unicode(一) Unicode初认识
查看>>
Node.js有了新的管理者
查看>>
Java 20年:历史与未来
查看>>
彻底理解Javascript中的原型链与继承
查看>>
腾讯最大规模裁撤中层干部,让贤年轻人
查看>>