microG GmsCore 是谷歌(Google)Play 服务(Google Play Services)的自由软件再实现。它允许调用谷歌专有 API 的应用在 LineageOS 等基于 Android 开源项目(Android Open Source Project,AOSP)的 ROM 上运行,作为非自由专有谷歌 Play 服务(有时也被泛称为 GApps)的免费替代品。它是在享受 Android 核心功能的同时,用来找回隐私与自由的强大工具;不过调用它的应用仍可能像与真正的谷歌 Play 服务通信时那样,通过专有库与 microG GmsCore 通信。
正文
GmsCore
概述
microG GmsCore 是 Google Play Services 的自由软件重新实现。它让调用专有 Google API 的应用能在 LineageOS 等基于 AOSP 的 ROM 上运行,成为非自由专有 Google Play Services(有时也被泛称为 GApps)的免费替代品。它是在享受 Android 核心功能的同时,重新掌握隐私与自由的有力工具;不过,你所使用、并借此受益的应用,仍可能像与真正的 Google Play Services 通信时那样,通过专有库与 microG 通信。
功能
- 可选择启用 Google 服务,并扩展应用支持
- 在线 / 离线定位服务
- 省电、省内存、省 CPU
- 无冗余软件
- 适用于真实设备、测试模拟器和虚拟移动基础设施
- 免费(开源),采用 Apache 2.0 许可
系统要求
你的 Android 系统需要支持签名欺骗(signature spoofing),这样 GmsCore 才能向调用 Google API 的应用伪装出官方 Play Services 的存在。参见链接页面,了解哪些 ROM 提供开箱即用支持,以及其他 ROM 可以如何处理。
模块
GmsCore 包含统一网络位置提供器模块(UnifiedNlp),负责处理应用对 Google 网络位置提供器的调用。
要搭建完整可用的 microG 环境,你还必须安装一个 Play Store 替代应用(例如 microG Companion)。参见安装说明。
项目状态
已实现 API 的当前状态记录在此 wiki 页面上。
欢迎贡献!
请报告 bug,并根据你遇到的问题附上日志、截图、版本号和设备信息。如果问题可能与 microG 服务有关,也不要去打扰第三方应用的作者。如果你生成了 logcat,但担心或知道其中包含敏感数据,可以私信发送。
评论
多数评论在质疑 MicroG 这类 Google Play 服务替代方案的安全与透明度,焦点包括依赖签名伪装的风险、近期“从 fork 合并”的提交缺乏说明,以及它对 Google 服务调用的处理方式。只有少数人反馈它在 LineageOS 上体验良好,同时也有人困惑于去谷歌系统下应用为何仍依赖 Google Play,并以玩笑表达把 Google 请出生态的情绪。
认为它在 LineageOS 上体验良好、可正常使用
- 有用户表示自己在 LineageOS 上使用该方案,一切正常、体验很好。(认可度:少数人)
- > 我在 LineageOS 上使用它,一切正常、效果很棒。(@xx__yy)
质疑近期合并提交不透明、缺乏变更说明
- 有人发现项目最近的提交信息都只是“从 fork 合并”,却没有说明改动内容或 fork 的来源,因而担心合并进来的代码缺乏审查和可追溯性。(认可度:少数人)
- > 为什么最近的提交全都写着“从 fork 合并”,却没有说明改动做了什么、这个 fork 是什么?(@jamesnorden)
认为依赖签名伪装会带来安全风险
- 有人指出,作为替代方案它不得不依赖签名伪装才能工作;虽然在 LineageOS 上伪装范围看起来较窄,但整体上仍可能引入风险,只是也理解这样做的原因。(认可度:少数人)
- > 不得不依赖签名伪装才能把它当作替代方案来用,这很遗憾;虽然在 LineageOS 上范围看起来较窄,但总体而言我想这会带来一些风险。(@mshish)
对应用必须依赖 Google Play 功能感到困惑
- 有人不理解为什么部分应用要靠 Google Play 功能,甚至在 /e/OS 上无法下载 Telegram,认为这种依赖让去谷歌化系统难以正常使用。(认可度:少数人)
- > 我不明白为什么有些应用要依赖 Google Play 的功能,为什么我在 /e/OS 上无法下载 Telegram?(@ramon156)
质疑 MicroG 对 Google 服务调用的处理方式
- 有人提出,使用 MicroG 的设备能运行 SNCF-Connect 等接入“Pay with Google”的应用,而自己的 LineageOS 却不行;怀疑这是因为 MicroG 在 /e/OS 上把调用转发给了 Google 服务,或只是用 try-catch 捕获调用、并未真正请求 Google 服务器。(认可度:少数人)
- > 为什么用 MicroG 的人能用 SNCF-Connect,而我的 LineageOS 不行?是因为 MicroG 允许向 Google 服务发请求,还是它只是捕获了调用、根本没连到 Google 的服务器?(@maelito)
以“Google 回家吧”的调侃表达去谷歌化情绪
- 有人借谐音梗喊出“Google 回家吧”,以玩笑方式表达对该公司控制应用生态的不满。(认可度:少数人)
- > 回家吧!Goober……我是说 Google!(@p0w3n3d)