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 download → Download ZIP 将文件下载下来(作者并不推荐在 Windows 系统上使用 git clone
命令拷贝分支,因为可能会导致潜在的换行符问题),下载后解压到固定位置备用。
然后从 MIUI 官网 下载你所使用机型的最新的稳定版 ROM,下载完成后放入 mipay-extract
文件夹。
修改 mipay-extract
配置文件
注:如果你只需要小米钱包可跳过此步
如果需要加入如国内版应用商店等软件,可以通过修改 extract.sh
达到此目的,使用编辑器打开这个文件,找到 mipay_apps
字段,在后面加入你想添加的其他 App 名称(清单可以在 这里 找到),比如我加入了小米应用商店,就在后面加入 MiuiSuperMarket
。
制作卡刷包
Windows 用户双击执行 extract.bat
,macOS / Unix 用户请先在终端内使用 chmod +x extract.sh
为 extract.sh
加入执行权限再运行(在 macOS / Unix 上还需要 JDK 以及 Python 2.7),或者使用 sh extract.sh
运行脚本。经过漫长的等待,屏幕上提示 --> all done
便代表已经提取完毕,这时应该在目录下面能看到一个以 mipay-机型代号-版本号.zip
格式命名的压缩包。
将压缩包解压,留待备用。
制作 Magisk 模块
从 这里 下载中文社区提供的 Magisk 模块模板,仍然是采用「Download ZIP」方式来下载。下载完成后将其解压,得到如下图所示的目录结构:
将 /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
拓展阅读:
> 下载少数派 客户端 、关注 少数派公众号 ,了解更精彩的数字生活 🍃