|
| 1 | +--- |
| 2 | +title: "XiaomiEU 固件添加国行 NFC" |
| 3 | +date: 2025-12-12T20:50:27+08:00 |
| 4 | +math: true |
| 5 | +slug: "MiPay4XiaomiEU" |
| 6 | +# weight: 1 |
| 7 | +# aliases: ["/first"] |
| 8 | +# tags: ["Tag1","Tag2"] |
| 9 | +# categories: ["XCPC"] |
| 10 | +# author: ["Me", "You"] # multiple authors |
| 11 | +# showToc: true |
| 12 | +# TocOpen: false |
| 13 | +# draft: false |
| 14 | +# hidemeta: false |
| 15 | +# comments: false |
| 16 | +# description: "Desc Text." |
| 17 | +# image: "https://www.dmoe.cc/random.php" |
| 18 | +--- |
| 19 | + |
| 20 | +近期将手机从 AfterlifeOS 这一类原生刷回了 HyperOS3, 小米14 的类原生还是不够完善 |
| 21 | + |
| 22 | +不过国行版本的 HyperOS 不超过三天就让我想把手机摔了, 因此刷了基于国行固件的魔改版本 [XIAOMI.EU](https://xiaomi.eu/community/) |
| 23 | + |
| 24 | +但是刷完之后, 国行的 NFC 功能用不了, 我的车钥匙/门卡/交通卡可还依赖这玩意呢 |
| 25 | + |
| 26 | +找了一下还没有适配当前版本的 Kernel SU 模块, 于是自己解包做了一个 |
| 27 | + |
| 28 | +## 解包国行系统包 |
| 29 | + |
| 30 | +先下载国行包并解压 |
| 31 | +```bash |
| 32 | +wget https://bkt-sgp-miui-ota-update-alisgp.oss-ap-southeast-1.aliyuncs.com/OS3.0.5.0.WNCCNXM/houji-ota_full-OS3.0.5.0.WNCCNXM-user-16.0-306ce971bf.zip |
| 33 | +unzip houji-ota_full-OS3.0.5.0.WNCCNXM-user-16.0-306ce971bf.zip payload.bin |
| 34 | +``` |
| 35 | +现在的安卓刷机包大多会打成 payload.bin 这种包格式, 需要先解包 |
| 36 | + |
| 37 | +```bash |
| 38 | +wget https://github.com/ssut/payload-dumper-go/releases/download/1.3.0/payload-dumper-go_1.3.0_linux_amd64.tar.gz |
| 39 | +tar -xvf payload-dumper-go_1.3.0_linux_amd64.tar.gz |
| 40 | +chmod +x payload-dumper-go |
| 41 | +./payload-dumper-go -o ./ ./payload.bin |
| 42 | +``` |
| 43 | + |
| 44 | +查看文件尺寸, 最大的是这个 `product.img` 用 `file` 指令查看后可以知道这是个 `erofs` 的单分区镜像包, 我们将其挂载 |
| 45 | + |
| 46 | +```bash |
| 47 | +pacman -S erofs-utils erofsfuse |
| 48 | +mkdir product |
| 49 | +mount -t erofs -o loop product.img product |
| 50 | +``` |
| 51 | + |
| 52 | +然后在挂载镜像的 `app` 目录下找到 `MINextpay` `MITSMClient` `UPTsmService` 三个必要组件, 将其打包成一个最简的 KernelSU module 刷入即可, 也就是只有 `system/app/组件` 和 `module.prop` 文件的最简包 |
| 53 | + |
| 54 | +```bash |
| 55 | +cp -a ./product/app/MINextpay ./module/system/app/MINextpay |
| 56 | +cp -a ./product/app/MITSMClient ./module/system/app/MITSMClient |
| 57 | +cp -a ./product/app/UPTsmService ./module/system/app/UPTsmService |
| 58 | +cp -a ./product/app/MIUISuperMarket ./module/system/app/MIUISuperMarket |
| 59 | +``` |
| 60 | + |
| 61 | +为了方便后续更新版本, 做了个 Github Action 用来打包 |
| 62 | + |
| 63 | +其中奇怪的一点是, 在 Action 中使用 `mount -t erofs -o loop product.img product` 挂载镜像后 拷贝之后, 执行到 cp 这一步的时候会报 |
| 64 | + |
| 65 | + |
| 66 | + |
| 67 | + |
| 68 | + |
| 69 | +看上去是内存超限了的样子 |
| 70 | + |
| 71 | +因此换成了 `fsck.erofs product.img --extract=product` 指令将镜像中的文件提取出来 |
| 72 | + |
| 73 | +最后成品可以在 https://github.com/ReiAccept/MiPay4XiaomiEU 中找到 |
0 commit comments