Matrix 精选

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。

文章代表作者个人观点,少数派仅对标题和排版略作修改。


前些日子入手了 Redmi K30 5G 版,本来想不解锁 Bootloader 安心养老,奈何通过一般方式装入的 Google 框架总会莫名其妙地被干掉后台导致 FCM 无法正常推送,无奈还是在第六天解锁了 Bootloader 并刷入了 MIUI.eu

完整的 Google 框架的确十分舒适,但同时它也带来了几个问题,其中对我影响最大的就是小米钱包(Mi Pay、小米公交)和小米推送的缺失。

本文便是我在本地化过程中的一些踩坑记录和心得体会,希望可以对有需要的朋友有一些帮助。受限于篇幅,本文暂时只介绍制作小米钱包 Magisk 模块的方法。

踩坑与转机

为了解决这个问题我将目光投向了在小米 6 时代曾经使用过的 mipay-extract(GitHub),这是国内开发者开发的一个小工具,可以从 MIUI 国内版 ROM 中提取小米钱包相关文件并制作成卡刷包刷入手机(实际上也可以抽取别的 App,下文会讲到)。

不过由于 Android 10 使用了 动态分区,刷入卡刷包这一步骤只能在刷机完成后立马进行(至少在我的 Redmi K30 5G 上是这样),以及卡刷包会破坏 /system 分区的结构,导致刷完之后无法进入系统,这个方法显然已经行不通了。

之后我试着在群里求助,有一个人提到「不是有 Magisk 版的小米钱包模块么」,这才想起来之前看到过类似的帖子,把小米钱包相关的文件做成了 Magisk 模块刷入,这样就不会破坏 /system 分区了。于是找到了 这篇文章,里面提供了作者为 MIX 2S 制作的模块,本着「不要重复造轮子」的心态,我直接下载了文章提供的模块并刷入,结果重启之后应用是有了,但是无法正常使用,提示「NFC 模块异常,请重启手机」。

这个懒看来是不能偷了,只能自己动手了。

自己动手,制作 Magisk 模块

准备文件

这里首先还是要用到上文提到的 mipay-extract,首先从 GitHub 项目页上点击右侧的 Clone or downloadDownload ZIP 将文件下载下来(作者并不推荐在 Windows 系统上使用 git clone 命令拷贝分支,因为可能会导致潜在的换行符问题),下载后解压到固定位置备用。

然后从 MIUI 官网 下载你所使用机型的最新的稳定版 ROM,下载完成后放入 mipay-extract 文件夹。

修改 mipay-extract 配置文件

注:如果你只需要小米钱包可跳过此步

如果需要加入如国内版应用商店等软件,可以通过修改 extract.sh 达到此目的,使用编辑器打开这个文件,找到 mipay_apps 字段,在后面加入你想添加的其他 App 名称(清单可以在 这里 找到),比如我加入了小米应用商店,就在后面加入 MiuiSuperMarket

▲ 修改配置文件

制作卡刷包

Windows 用户双击执行 extract.bat,macOS / Unix 用户请先在终端内使用 chmod +x extract.shextract.sh 加入执行权限再运行(在 macOS / Unix 上还需要 JDK 以及 Python 2.7),或者使用 sh extract.sh 运行脚本。经过漫长的等待,屏幕上提示 --> all done 便代表已经提取完毕,这时应该在目录下面能看到一个以 mipay-机型代号-版本号.zip 格式命名的压缩包。

▲ All Done
▲ 制作好的卡刷包

将压缩包解压,留待备用。

制作 Magisk 模块

这里 下载中文社区提供的 Magisk 模块模板,仍然是采用「Download ZIP」方式来下载。下载完成后将其解压,得到如下图所示的目录结构:

▲ Magisk 模块模板

/system 目录下的 placeholder 删除,然后将上一步所解压的卡刷包中的 system/app 目录复制过来,复制完成后的目录结构应如下图所示

▲ 正确的目录结构

接着我们要来修改 config.sh 文件,print_modname 部分决定在刷入 Magisk 模块时会显示什么,可以根据自己的喜好修改,这里略过不表。

将文件第 57 行的 REPLACE 修改为 REPLACE_EXAMPLE(这里应该是汉化时的失误),然后在最后【自定义函数】的位置插入如下内容:

on_install() {
ui_print "- Extracting module files"
unzip -o "$ZIPFILE" 'system/*' -d $MODPATH >&2
}

保存退出。然后将整个模板目录下面的文件压缩成 .zip 格式,这样一个简易的 Magisk 模块就制作完成了。另外你还可以修改 module.prop 来更改你的模块在 Magisk Manager 中的展示效果,少数派已有 文章 介绍,这里也不再赘述。

刷入手机并修改手机设置

将刚刚制作好的 Magisk 模块传输到手机上,然后在 Magisk Manager 中刷入并重启手机。

重启之后在「系统设置 > 连接与共享 > NFC > 安全模块位置」中选择「内置安全模块」,所有步骤就算顺利完成啦!

之后就可以在小米钱包 App 中自由添加公交卡 / 银行卡 / 门卡了。

▲ 刷卡界面效果图

结语

这是我在少数派写下的第一篇文章,也是我第一次尝试自己制作 Magisk 模块,过程中虽绕了不少弯路,但是最后成功的那一刻还是十分开心的。文笔不佳,有稍显啰嗦的地方还请各位看官见谅,我会努力改进的。

如果你对开头提到的小米推送感兴趣,不妨参考我的另一篇文章文章。同时我也还在研究如何恢复国内版 MIUI 的负一屏功能,希望大家多多支持。

题图来自 Unsplash

拓展阅读:

> 下载少数派 客户端 、关注 少数派公众号 ,了解更精彩的数字生活 🍃