刷机软件制作
刷机软件制作没有想象中那么玄乎,本质上就是解包官方固件、精简替换文件、重新打包签名这三步。只要你会用电脑、肯花时间看日志,完全可以自己动手做一份专属刷机包。
刷机软件自己怎么做,从镜像提取到打包的完整流程
很多朋友一听到"自己做刷机包"就觉得是搞底层开发的人才能碰的东西,行业共识认为,普通用户和维修师傅同样能上手制作,关键是要搞清楚刷机包的内部结构,你的手机ROM不管叫什么名字,本质上就是一个压缩包,里面装着系统镜像、内核文件、驱动配置和刷机脚本,国内几家大厂的官方固件包,拆开看无非就是system.img、boot.img、vendor.img这几个大头。
先搞懂刷机包的本质,ROM就是一个压缩镜像
先别急着找工具,静下心理解一下包里的东西是干嘛的。
- system.img是操作系统的主分区,系统App和框架都在里面,占体积最大,也是我们精简和修改的主战场
- boot.img是内核和ramdisk,管开机引导,千万别乱动,动错了直接变砖
- vendor.img放的是底层驱动和硬件抽象层,刷完没信号、没指纹,多数是这个分区没匹配好
- META-INF文件夹是关键,里面放着刷机脚本
updater-script,它规定了文件该往哪个分区写、怎么校验、怎么格式化
刷机软件制作流程里最核心的逻辑就是:解包官方包→把你的修改写进镜像文件→重新打包签名→刷回手机,至于什么"全网通刷包""精简包",无非是在这个基础上加了个开机引导脚本或者Data分区补丁。
提取官方固件,用Payload Dumper解包别硬等
从手机厂商官网下载对应型号的固件包,别贪省事去小网站乱下,容易碰到捆绑修改过的底包,下载完如果发现是个payload.bin文件,普通压缩软件解不开,需要用专门的工具。
- Windows用户直接用Payload Dumper,把
payload.bin拖进去,点几下就能把里头的镜像逐个分离出来 - 如果你用的是macOS,建议装一个开源的payload_dumper-go,命令行跑一下,耐心等个几分钟就好
- 解出来的镜像文件按需求保留,
system.img是必留的,boot.img暂时放一边备用
制作刷机包需要什么工具,三大件得先备齐
想做刷机软件,电脑上得先装好这三样东西,缺一不可。
一个能挂载镜像的工具
Windows推荐用Image Kitchen或者dsixda's Android Kitchen的老牌替代品SuperR's Kitchen,这类工具能把system.img虚拟磁盘挂载到电脑上,像操作普通文件夹一样改里面内容,笨一点的办法是用7-Zip直接解压system.img,改完再用工具压回去,但这样分区权限和上下文容易丢,容易出现开机卡第二屏的问题。
一个能解包打包的工具
主要是针对APK文件做反编译和回编,推荐apktool配合jadx用,精简系统应用的时候,你需要把某个App抽出来,看看它到底调用了什么系统库,删干净不留垃圾文件。
一个能修boot.img的工具
推荐Magisk官方修补工具,如果你只是想给手机临时提权或者装个面具模块,可以用Magisk App直接对boot.img修补一次,这样不仅省事,还不会造成内核校验不过过不了开机。
工具路径顺手整理一下:
- 桌面建个
ROM_Workspace文件夹,里面分original(原包)、system_mod(修改中)、output(成品)三个子目录,保持心智清晰 - 把解出来的官方镜像丢进
original,每次动手之前先备份一份没动过的原始文件,手贱改崩了能秒恢复
给系统镜像做精简减肥,system.img瘦身实战
删系统应用时要注意什么,留个心眼别把核心组件删了
这是刷机软件制作的核心环节,也是翻车重灾区,很多人精简系统喜欢看着列表瞎删,看到厂商全家桶就浑身难受,一梭子带走,结果开机各种闪退,监控日志一片红。
正确的姿势是按功能分区删:
- 输入法、浏览器、视频音乐App这类纯第三方功能的能删干净,删完不影响系统稳定
- 厂商应用商店和钱包类不建议全删,不少系统设置界面会调用它们家的服务,删了以后调用报错,只能刷机重来
- 涉及
framework层修改一定要克制,只删App不碰系统框架是铁律
有个精简思路很舒服:通过查看/system/priv-app和/system/app两个目录,凡是带Google、Baidu、Duokai之类明显三方品牌名的.apk文件直接改后缀名为.bak,这样刷机时系统不会加载它们,还能留个后悔药。
减肥不只是删App,清理odex和so文件才是大头
如果你做的是一个精简包,只删几十个APK根本减不掉多少体积,系统ROM占用空间的大头是/system/framework里的framework.jar、services.jar这些编译产物,它们没法删,但可以优化编译方式,常用手段是尽量使用CloudMagisk的"CloudMount"模块,但这需要对boot.img做处理,属于进阶玩法,初学阶段建议先不动。
实际操作中比较划算的减肥目标在以下几个位置:
/system/media里的开机动画和铃声,换一个小的或者删掉,能省200MB上下/system/tts里的语音包,非离线语音用户必删/system/priv-app里你能看到的所有带Live、Video、Music名称的厂商App,基本都是媒体全家桶/system/app里的WallpaperPicker等动态壁纸组件,保留基础功能就行
系统框架层微调,改build.prop提升体验
在提取出的镜像根目录下有个build.prop文件,修改它能让刷机包拥有"定制感",比较普惠的调整方案有:
- 把
ro.sf.lcd_density改到你手机实际DPI数值,避免刷完图标忽大忽小 - 在末尾追加
persist.sys.disable_rescue=true,能防止系统被某些误判异常反复重启进恢复模式 - 关掉
debug相关的开关,减少后台日志写盘占用I/O
改完记得把文件换行符统一格式,Windows记事本编辑容易留下\r\n,刷机脚本读取时偶尔会报错,尽量用Notepad++来改。
打包签名与刷入测试,通刷包到底是什么意思
修改流程完成,接下来就是把镜像重新打包回一个可安装的刷机包。
打包讲究顺序
把改好的system.img放回工作目录,用SuperR's Kitchen的Build ROM功能回编,过程中选签名模式建议用AOSP签名,如果你需要刷入后保留bootloader解锁状态,记得选测试键,否则开机验证过不了。
用ZIP重新打包时文件路径必须跟原包一致
- 把所有镜像和META-INF目录放到同一个根目录下,然后用ZIP压缩工具打包,压缩方式选"存储"(即不压缩),否则刷机校验时显示错误代码7
- 打包完后用adb sideload或者TWRP直接刷入测试机,首次开机时间会长一点,5-8分钟算正常,超时才需要排查
通刷包和专用包的区别,刷机软件哪个好用
不少人问过"通刷包到底什么意思"。通刷包就是在脚本里对机型做了解锁校验适配,允许同芯片平台的多款机型通刷的ROM包,比如骁龙8 Gen3的几台机型,底包驱动差异不大,就能出一个通刷包节省维护成本,这跟"卡刷包"概念有区别,卡刷包侧重刷写方式,通刷包侧重适配范围。
说到刷机软件哪个好用,其实得分场景:
- 如果只是想给自己的手机做个精简包,SuperR's Kitchen足够友好,图形界面点选逻辑,镜像挂载和理解成本低
- 如果主要是想提取和回刷官方固件,Payload Dumper加MtkClient的组合目前效率最高
- 如果还想顺手修修boot.img或者打补丁,Magisk官方工具依然是那个最稳的
| 工具名称 | 核心用途 | 上手难度 |
|---|---|---|
| Payload Dumper | 解包payload.bin | 低 |
| SuperR's Kitchen | 镜像挂载、回编签名 | 中等 |
| apktool | 反编译APK修改区别 | 高 |
| Magisk | boot.img修补打补丁 | 低 |
常见问题速查
自己做的刷机包卡在开机动画进不去桌面怎么排查
先别慌着重新刷,大概率是精简过度或者脚本路径写歪了,连接数据线跑一下adb logcat看看卡在哪,重点审查删掉的App是否被system/framework的某个服务引用,实在查不出来,就把你备份的原始镜像翻出来做减法:先只删三方App,确认能开机,再逐步删厂商服务,二分定位问题。
刷机的时候机器提示错误7或者签名验证失败,打包时哪里出了问题
错误7在老版TWRP里高发,通常是刷机脚本断言机型型号时没通过,检查updater-script顶部那几个getprop校验通配符,和实际机型码写死不一致,签名验证失败则大概率是打包时没选对签名方式或者ZIP压缩方式用了压缩,把压缩方式改成"存储",重新签一次AOSP测试键,基本能解决。
制作一个刷机包通常需要多长时间,钱包和精力都要投入多少
纯粹照教程走流程,从下载固件到打包成功签完名,准备半小时熟悉工具,第一次动手建议预留三到四小时,其中镜像解压和回编各占一小时左右,真要精简到位得蹲一个半天,有些朋友久病成医,把流程跑熟了之后再出个包,半小时就能搞定,刷机这活儿不要抱着省钱的心态入坑,也无所谓投入费用,时间才是最贵的成本,工具全是免费开源项目,但踩坑过程没有捷径。

