如何使用MToolkit进行ROM开发

这篇文章是 ROM 开发的一些流程,和个人工具的使用方法,推广元素很强哈 ,因为有这方面需求的往往不是开发者(反而是很多高中都没有念完的酷安基友们),而一些安卓开发者往往不会使用这类的工具,其实也是自己工具的一个使用教程

前几天发了一篇对官改圈子的吐槽

聊聊官改

我以小米 10/小米 8 Lite 的 ROM 开发的流程,还有工具箱的使用为例

  • 小米 10 是比较新的设备,采用了动态分区,所以使用了教新的刷机机制
  • 小米 8 Lite 是比较旧的设备,传统的 sar 分区结构,非动态分区

什么是动态分区?

首先先了解什么是传统的分区,在安卓设备的传统分区中,例如 64g 的手机储存,你会发现你能用的只有 40 多 g,原因在于手机的系统占用了很多的分区

例如小米 8 Lite 中:

  • system 空间占用 3g
  • vendor 空间占用 3g
  • firmware 等分区占用若干

这也是所有旧设备的分区状况,区别在于 system,vendor 等分区大小不一样,而实际来看,vendor 中的内容只有 1g 多一点,厂商为了保守起见,之后的一系列扩展需求,所以其实是浪费了用户的很多空间

所以动态分区中的做法是:

  • 在打包镜像的时候生成镜像需要的空间,比如 vendor 某次升级里面的内容为 1.1g,那么这个镜像的生成大小就为 1.1g
  • 刷机的时候动态调整了设备各个分区的大小为镜像大小(如上次更新 system 镜像大小为 2.5g,下一次更新就可以根据刷机脚本动态调整为 2.6g 等,无需预留特别多的空间)

我们需要使用到的工具:

  • MT 管理器
  • MToolkit

刷机的流程(这里指卡刷,也就是 Rec 中刷机)

Rec 解压出刷机包的单个文件->META-INF/com/google/android/update-binary,这是个可以执行的文件,随后 Rec 直接执行这个文件,并将 ROM 的路径作为这个文件的参数,此时刷机开始

update-binary 做了什么

update-binary 负责提供刷机用到的一系列执行文件,例如 unzip,chmod 等,然后定义了一系列函数,主要负责解析 META-INF/com/google/android/updater-script 这一刷机脚本,updater-script 中的脚本内容也就是不断调用 update-binary 中的函数,例如
ui_print,package_extract_file,run_program

下载完整的刷机包后用 MT 管理器直接打开

  • META-INF:ROM 的签名文件夹,刷机脚本,刷机二进制
  • firmware-update:基带相关镜像文件
  • 外面的文件:system,vendor,boot 等镜像

看下它的刷机脚本

所以就是通过 ui_print 显示当前正执行的操作,set_progress 更新进度,package_extract_file 刷写分区,update_dynamic_partitions 动态更改分区大小等

做 ROM 开发,一般只需要主要修改它的系统层,和去除一些开机的验证,添加更多的功能,修改内核去除验证,去除开机卡米的验证,vbmeta,dtb 验证等,这一系列交给工具箱完成

MToolkit/ROM 工具使用教程(声明是会员功能)

首先需要了解各个功能的作用

MToolkit/ROM 工具使用教程

单个功能使用的场景是比较少的,是为了有这些需求的人预留的功能,更多的会直接使用一键中的功能

打开 App 初始没有工程,点击新建工程

一键功能截图

点击执行会弹出文件管理器,我们找到下载的 ROM 包(zip),单击即可,随后工具箱便开始跑代码(整个过程会拦截你在工具箱内部的返回键,在执行结束后会释放,并通过弹窗给予提示)


工具箱默认勾选了解包的部分,这部分执行结束后会直接暴露出可以供开发者修改的文件目录
如下

在工程名的/UnpackedImg/下便有 system/vendor 这两个文件夹,里面就是对应分区的原始内容(就是没有什么壳子了),所以此时你便可以去自定义自己的内容,删除/添加内置应用,反编译修改系统 apk 等,

接下来你便可以根据自己 ROM 的情况勾选剩下的部分。
下列功能是针对 MIUI ROM 定制功能

  • 精简系统
  • 破解卡米
  • 状态栏时间显秒

再点执行

所以如果你不是 MIUI ROM 这几个一定不要打勾,随后如果你是动态分区,如上图后面几个有标记的也不要打勾。
上面的所有功能中,只有涉及到 boot 中的部分是需要 root 的(需要挂载 boot 分区,没 root 无法),其他的功能手机没有 root 也能正常使用。

是的,就这么简单,如果你不会自定义定制,那么就如同我对小米 10 的做法一样,直接全部勾选(除了动态分区不能勾选的),然后执行,出包,刷上,此时的 ROM 虽然没有太多的功能,但是有一系列破解,并且是正常的官改系统。能装 xposed 这些框架的。
工具箱的解包打包部分理论是覆盖安卓全版本,deodex 部分仅支持 8.0 以上的 ROM,整体对 8.0 以上的 ROM 稳定性较高。

  • 如果你对博文的任何内容有疑问,随时留言,再简单的问题,我看到就会回复你。如果你有看我上面对官改现状的一些吐槽,这些功能都绝对是有价值性的,即使会用到的人的却不多。
  • 我不会去主动的向任何个人安利我的会员功能,我只想用到它的是真正需要的人,也有很多人通过我的工具学会了自己 ROM 开发,通过我的工具去发布官改系统。
  • 因为在博客有很多人发布的 ROM 开发教程是使用电脑端的一些软件(也一样是付费的),那些软件其实早就过时,不兼容新的设备了(我不是恶意抬杠别人的产品哈,最初我加了他们的内测群反馈了核心的 bug 以及修复的方案,就给我踢掉了)。
  • 这一功能的初次诞生是在一年前,我用 bat 编写出了整个功能,后来又使用 python 从头到尾的重构,由于不想直接卖断源码所以 pc 端并未上线,等待 Flutter PC 端的开发
作者

梦魇兽

发布于

2020-04-02

更新于

2023-03-11

许可协议

评论