零. 前述
在外企工作而且用 Android 的同学们估计会遇到和我一样的问题: 工作上的APP 依赖 Google 服务, 像 Authy, 1password, lastpass, Slack 这些都需要 Google 服务才能正常运行. 而我们手上的国内版 MIUI 是不带 Google 服务的, 想用上 Google 服务我们有几个选项:
- 刷 opengapps, 但由于 Android 10 是动态分区的, 安装系统结束后 system 分区只剩下很少空余空间, 导致刷 opengapps失败
- 使用 Google Installer 等工具, 但安装不是网络被墙就是不兼容, 毕竟 Google Installer 已经很久没更新过了
但即使你费尽心思通过上面两个方法安装好后, 还是容易遇到兼容性问题, 毕竟不是 MIUI 官方制作的嘛, 那么有没有更好的方法?
有! MIUI 有官方的国际版和 EU 版, 这些版本是自带 Google Play 的, 官方制作兼容性绝对没问题! 那么问题来了, 我除了工作上依赖 Google Play 外, 生活上已经习惯了 小爱同学和小米公交卡了呀, 而这俩是不在 EU 等国际版里的, 于是我开始琢磨怎么在 EU 版上安装小爱同学和小米公交卡了. 当然最后我也安装成功了, 下面开始讲述安装过程.
整体过程
整个过程需要以下几个步骤, 我们要从国内版提取APP, 所以要先刷 TWRP, 而刷 TWRP 要先解锁, 顺序如下:
- 安装 Android Platform SDK
- 解锁 MIUI
- 刷入 TWRP
- 从国内版中提取需要的 APP
- 刷入 EU 版系统
- 安装小爱同学和小米公交卡
一. 安装 Android Platform SDK
MacOS 下直接用 brew 安装: brew install android-platform-tools
Windows 下到这里下载安装: https://developer.android.com/studio/releases/platform-tools
后续会用到这个 SDK 里面的 adb 和 fastboot 工具.
二. 解锁 MIUI
如果你的手机已经解锁, 可以跳过这个步骤.
解锁方法基于你的电脑系统分为 Windows 和 Linux, Mac 几种
Windows 系统下, 你可以用官方的小米助手即可
Linux 和 Mac 系统没有官方工具, 可以使用第三方的 MiUnlockTool V2
第一个选项要先安装 Java 和 JavaFX, 其中 JavaFX 巨难搞, 不建议使用
第二个选项已经帮你搞定了Java 和 JavaFX, 简单易用, 选他就可以了.
解锁过程比较简单, 按照工具的提示操作即可, 就不详叙了. 中途大概会遇到这些问题:
- 驱动问题: Windows 下容易出现, 驱动精灵等可以帮你搞定
- 连接问题:
- 没有开启开发者选项.设置 ->我的设备 -> 全部参数 -> 连点 MIUI 版本 7 次即可
- 没有启动 USB 调. 设置 ->更多设置 -> 开发者选项 -> 打开 USB 调试即可
三. 刷入 TWRP
TWRP 是用来在 Recovery 上刷入系统, 还原出厂设置等的. 我们用这个工具来刷入EU 版系统和 Mount system 分区.
TWRP 可以在这里下载(EU 版本系统刷机包也在这里): https://xiaomi.eu/community/threads/miui-12-0-stable-release.56191/
-
首先手机先重启到 fastboot 模式
有这几种方法:
- 设置 -> 我的设备 -> MIUI 版本 -> 重启到 bootloader
- 电脑连接手机后输入命令:
adb reboot bootloader
- 关机后同时按下 开机键和声音减键(-)
-
接着刷入 TWRP, 电脑连接手机后输入命令:
fastboot flash recovery twrp.img
如果上面你下载到的 TWRP 刷机包名字叫 twrp-3.4.0-0-dipper.img, 那么上面命令中的 twrp.img 替换为你下载到的文件名字, 下同.
-
最后重启到 TWRP
输入命令:
fastboot reboot
注意, 官方系统第一次重启会自动替换recovery为原本的版本, 所以执行上面命令后需要立即同时按下 开机键和声音减键(-), 从而打断官方系统这个替换动作, 打断一次以后每次进入recovery都是 TWRP 了. 如果你按得慢了, 那么重新进入 fastboot 刷入 TWRP 重试. 或者直接命令强制进入 TWRP: fastboot boot twrp.img
四. 从国内版中提取需要的 APP
从国内版中提取需要的 APP 有很多种方式, 你可以在别人的文章哪里学习到, 比如直接从刷机包中提取, 但刷机包里提取处理的往往是还没deodex过的, 不能直接使用, 需要安装十分多的工具辅助才能提取好. 我是直接刷好国内版后进入 TWRP 提取文件出来, 相对没那么难.
如果你当前系统不是国内版, 那么请先参考第五步或者官方教程刷入国内稳定版, 然后再进入 TWRT.
提取过程:
- 进入 TWRT
- 选择 Mount, 勾选上 system 分区, 这样就把 system 挂载好了
- 然后在 mac 上输入下面的命令
mkdir -p ~/phone_backup/system
cd ~/phone_backup/system
adb pull -z "/system/app" .
adb pull -z "/system/priv-app" .
adb pull -z "/system/data-app" .
这样就把国内版需要的 APP 提取出来了, 而且都是已经 deodex过的, 后面直接导入到新系统即可.
五. 刷入 EU 版系统
从这里下载你的手机的刷机包, 比如我下载到的文件是 xiaomi.eu_multi_MI8_V12.0.3.0.QEACNXM_v12-10.zip
刷入方法:
- 重启进入 TWRP
- 连接电脑后传刷机包到手机: 执行这个命令即可:
adb push xiaomi.eu_multi_MI8_V12.0.3.0.QEACNXM_v12-10.zip /sdcard/
- 重启后进入手机, 当做是新手机一样按照提示完成初始化手机.
- 重启进入 TWRP, 选择 Mount, 勾选上 system 分区, 这样就把 system 挂载好了
六. 安装小爱同学和小米公交卡
这一步我参考了这篇文章里介绍的小米钱包所用到的文件名, 感谢作者: https://sspai.com/post/60065
- 进入 TWRT
- 选择 Mount, 勾选上 system 分区, 这样就把 system 挂载好了
- Mac 上执行下面的命令导入小米钱包和小爱同学的 apk 文件
cd ~/phone_backup/system
adb push XiaoAiSpeechEngine /system/app
adb push XMPass /system/app
adb push Mipay /system/app
adb push NextPay TSMClient /system/app
adb push UPTsmService /system/app
adb push VoiceTrigger /system/app
adb push VoiceAssist /system/app
adb push VoiceAssist /system/app
adb push VoiceAssist /system/app
adb push VoiceAssist /system/app
这个过程中有可能会报 "No space left on device" 错误, 这是由于 Android 10 系统的动态分区问题导致 /system 分区空间不足, 我们可以删除一些没用的内置 APP 然后重试导入即可.
adb shell 命令进入手机, 然后进入 /system 目录, 删除你不需要的 app, 可以参考下面这篇文章筛选你不需要的 APP:
比如我就删除这些服务:
rm -rf /system/priv-app/MiService
rm -rf /system/product/app/GoogleTTS
最后, 重启手机正常进入系统, 你会在桌面上找到小米钱包和小爱同学两个 APP 了,
然后到系统设置 > 连接与共享 > NFC > 安全模块位置
中选择「内置安全模块」设置默认 NFC 处理程序为小米钱包.
如果打开小米钱包后没看到公交卡, 那么可以到 系统设置 > 小米账号 > 支付信息 > 我的公交卡
上重新激活公交卡, 重启后小米钱包里就会显示公交卡的了.
接下来可以到 系统设置 > 更多设置 > 按键快捷方式 > 小米钱包 > 设置为双击电源键
. 哈哈, 这个时候你双击电源键就会弹出熟悉的刷公交卡界面, 所有步骤就算顺利完成啦!
七. 一些思考
由于第六步有可能会因为Android 10 系统的动态分区问题导致 /system 分区空间不足, 那么我们是否可以再第五步刷入 EU 版系统后不重启, 直接导入文件呢, 这就有待你们去尝试了