三渠道版本差异:Google Play vs GitHub vs F-Droid 完整对比
核心差异矩阵
| 维度 | Google Play | GitHub Release | F-Droid |
|---|---|---|---|
| 安装入口 | Play Store | GitHub Releases | F-Droid 客户端 |
| 签名 | FairCode 签名(与 GitHub 相同) | FairCode 签名(与 Play 相同) | F-Droid 独立签名 |
| Hosts 广告拦截 | ❌ | ✅ | ✅ |
| 端口转发 | ❌ | ✅ | ✅ |
| Pro 购买 | Play 内购 | 捐赠激活 | 捐赠激活 |
| Pro 跨设备 | 绑定 Play 账号 | ≥7€ 捐赠→所有设备 | 同 GitHub |
| 自动更新 | Play Store 管理 | 应用内检查 GitHub | F-Droid 客户端管理 |
| 最低 Android | 5.1 | 5.1 | 5.1 |
| APK 大小 | ~2.6 MB | ~2.6 MB | ~2.6 MB |
| Google 服务依赖 | 需要 | 可选(可选 Play 恢复 Pro) | 无 |
| IPv4 / IPv6 / TCP / UDP | ✅ | ✅ | ✅ |
| Wi-Fi / 移动独立控制 | ✅ | ✅ | ✅ |
| 亮屏 / 漫游 / 锁屏条件 | ✅ | ✅ | ✅ |
| 流量过滤 | ✅ | ✅ | ✅ |
| SOCKS5 代理 | ✅ | ✅ | ✅ |
| DoT / DoH 处理 | ✅ | ✅ | ✅ |
| Hosts 文件下载 | ❌ | ✅ | ✅ |
| 自定义 DNS | ✅ | ✅ | ✅ |
签名关系详解
Play 版 ↔ GitHub 版
签名相同。这意味着:
- 可以直接从 Play 版覆盖安装 GitHub 版(或反过来)
- 覆盖安装时不会提示签名冲突
- Pro 购买状态在覆盖后自动恢复(因为 Play 购买状态存在云端,GitHub 版可以验证 Play 账号)
这是开发者有意设计的——方便 Play 用户无缝切换到 GitHub 版以获得 Hosts 拦截功能。
F-Droid 版 ↔ 其他版
签名独立。覆盖安装会提示签名冲突,必须先完全卸载旧版才能安装 F-Droid 版。卸载会:
- 清除所有 NetGuard 应用内设置
- 丢失 Play Store 购买的 Pro 功能(F-Droid 版无法验证 Play 账号)
- 需要在 F-Droid 版里重新捐赠激活 Pro
为什么 Play 和 GitHub 共用签名
Play Store 规则禁止开发者上架"与其他版本签名相同但功能不同"的应用。但 NetGuard 的做法是:同一个签名、同一个包名,Play 渠道的构建被移除了 Hosts 和端口转发功能——本质上是同一个应用的不同构建变体。Play 规则没禁止这种做法(禁止的是"功能相同但签名不同"或"签名相同但应用名/包名不同")。
Hosts 功能的硬限制原因
Play 版不可能有 Hosts 拦截功能——这是 Google Play 政策的硬性规定。Google 禁止任何"全局拦截第三方域名"的应用上架。
即使 NetGuard 开发者想在 Play 版里悄悄加回 Hosts 功能,也会在 Play 自动审核阶段被检测到并强制下架。这不是技术限制,是政策限制。
版本更新机制
Play 版
- 完全由 Play Store 管理更新
- NetGuard 应用内没有更新检查选项
- 更新推送到设备上时,Play Store 会自动下载和安装
- 你无法关闭 Play Store 对 NetGuard 的自动更新(除非在 Play Store 设置里手动关闭对 NetGuard 的自动更新)
GitHub 版
- NetGuard 应用内有更新检查机制
- 主菜单 → 设置 → 「检查更新」(Check for updates)
- 或者开启「自动检查更新」(Auto check for updates)
- 检查到新版本后提示你到 GitHub Releases 页面手动下载 APK
- 可以在 Play Store 设置里关闭对 NetGuard 的自动更新——防止 Play Store 用 Play 版覆盖 GitHub 版(Play 版签名相同、版本号相同时会优先覆盖)
F-Droid 版
- 完全由 F-Droid 客户端管理更新
- F-Droid 有延迟(新版本从 GitHub 发布到 F-Droid 构建上线通常需要 1~7 天)
- 自动更新或手动更新由 F-Droid 客户端设置决定
三渠道如何选
| 你的情况 | 推荐渠道 |
|---|---|
| 主要需求是 Wi-Fi / 移动独立控制、不需要广告拦截 | Play Store(最省心) |
| 已经在 Play Store 买了 Pro、想加 Hosts 拦截 | GitHub 版(同签名覆盖安装) |
| 不想用 Google Play 任何服务 | F-Droid 版 |
| 需要端口转发功能 | GitHub 或 F-Droid |
| 只想用开源应用、讨厌 Play 商店 | F-Droid |
| 不想花 Pro 购买但想用 GitHub 功能 | GitHub 免费版 + 后期捐赠解锁 Pro |
Play Store 自动更新覆盖 GitHub 版的问题
如果你同时在设备上有 Play Store(允许对 NetGuard 自动更新)和 GitHub 版 NetGuard,会遇到一个冲突:
- GitHub 版签名 = Play 版签名
- Play Store 可能检测到 NetGuard 有新版本
- Play Store 会用 Play 构建覆盖掉 GitHub 版
- 覆盖后 Hosts 和端口转发功能消失
解决
在 Play Store 里手动关闭 NetGuard 的自动更新:
- 打开 Play Store
- 搜索 NetGuard
- 点击 NetGuard 详情页右上角三点菜单 → 取消勾选「启用自动更新」
这样 Play Store 不会再碰 NetGuard。后续更新你自己手动从 GitHub 下载覆盖。