很久以前,在国内是可以正常使用 Google 的。坑爹的我后来稀里糊涂地买了个运营商定制版 Galaxy S4,几乎没人用的机型,自然找不到适配的软件,也没人找漏洞尝试 root,连第三方 Recovery 都是奢望。幸运的是,我找到了能用的 Recovery~ 终于能动手啦!
¶一、制作 GMS 补丁包
建立Google-Installer
目录,结构如下:
Google-Installer
├── META-INF
│ └── com
│ └── google
│ └── android
│ ├── update-binary
│ └── update-script
└── system
└── priv-app
├── GoogleAccountManager
│ └── GoogleAccountManager.apk
├── GooglePlayServices
│ └── GooglePlayServices.apk
├── GooglePlayStore
│ └── GooglePlayStore.apk
└── GoogleServiceFramework
└── GoogleServiceFramework.apk
¶1、应用文件
其中四个 apk 可以自己去可信的网站上寻找,注意要选择兼容手机系统和 CPU 的版本 (适用Android 4+还是Android 5+,适用32位还是64位,适用屏幕分辨率等等)。推荐去国外著名的 ApkPure 或 ApkMirror 上寻找所需的 apk,此二网站大多 apk 文件直接从 GooglePlay 原生提取,比较可信。
¶2、脚本文件
update-binary
和update-script
是 recovery 读取执行命令的文件,使用edify
脚本语言,点此前往项目地址,查看命令语法等。
¶update-script
update-script
可参考我写的版本,核心代码如下(recovery版本不同可能会略有区别):
run_program("/sbin/busybox", "mount", "/system");
package_extract_dir("system", "/system");
set_perm_recursive(0, 0, 0755, 0644, "/system/priv-app");
run_program("/sbin/busybox", "umount", "/system");
ui_print("Installation succeeded!");
可以从中看出主要操作:
- 使用
busybox
挂载手机文件系统/system
目录 - 把压缩包中的
system
目录解压合并到/system
挂载点 - 设置权限,并且为目录递归操作,拥有者为
root
用户root
组,目录权限串为drwxr-xr-x
,普通文件-rw-r--r--
- 卸载
/system
目录
¶update-binary
update-binary
,如今的情况或许有些不同了,实际上可能需要把上面的代码写入这个文件,而update-script
的内容则为dummy
,也就是“做做样子”的意思。因为当今各类定制 Recovery 大多都已包含了常用函数库,不再需要外部载入了。
¶3、打包
把Google-Installer
目录下的内容压缩为普通zip包,名称最好不要包含中文,注意保持目录结构是这样的:
xxx.zip
├── META-INF/
└── system/
而不是:
xxx.zip
└── Google-Installer/
├── META-INF/
└── system/
¶二、 刷入定制 Recovery
手中的三星 S4 能用工程工具 Odin 刷 recovery(没有 bootloader 锁或者 OEM 锁,方便了很多)
¶三、刷入补丁包
补丁包放入手机存储空间或SD卡中。进入定制 recovery,选择制作好的包,确定。重启完成!