签名冲突覆盖安装 — F-Droid 版 vs GitHub 版 Seal 不能互相覆盖
问题表现
如果你已经装了 F-Droid 版的 Seal,再用 GitHub 版的 APK 直接覆盖安装时,会弹出:
应用未安装
现有的同名应用与你正在尝试安装的应用使用了不同的证书。
或者反过来,GitHub 版已装,F-Droid 版无法覆盖。
原因
F-Droid 版和 GitHub 版是两个不同的签名者构建的:
| 渠道 | 签名者 | 构建方式 |
|---|---|---|
| F-Droid | F-Droid 官方 | 用公开的 source tarball 在 F-Droid CI 里重新构建并签名 |
| GitHub | JunkFood02(开发者本人) | 开发者用自己的签名密钥构建 Release APK |
安卓系统要求:同一个包名(com.junkfood.seal)的两个 APK,必须签名者完全相同才能覆盖安装。两个渠道签名不同,所以互相之间只能先卸载再装。
正确做法
步骤一:导出下载历史(重要)
卸载旧版本会清除应用数据目录——里面包含你的下载历史、Cookie 数据库、自定义命令模板等。卸载前务必先导出下载历史:
- 打开 Seal → 下载记录页面
- 找到"导出历史"入口(v1.12.0 起)
- 选择"完整备份"导出 JSON 文件,存到安全位置(比如网盘或电脑)
步骤二:卸载旧版
从系统设置 → 应用 → Seal → 卸载。或者长按桌面图标拖到卸载按钮。
步骤三:安装新版本
用新渠道的 APK 或 F-Droid 客户端安装。
步骤四:(可选)导入历史
新版本安装好后,从下载记录页面找到"导入历史",选择之前导出的 JSON 文件恢复记录。
能不能两个版本并存
安卓允许同一个应用的两个版本并存但需要用不同的签名 + 不同的应用 ID。Seal v2.0 alpha 预览版就是这么做的——使用不同的数据目录,所以可以和稳定版并存安装。
但 F-Droid 版和 GitHub 版包名都是 com.junkfood.seal,不能并存。如果真的想同时装两个渠道的版本看差异,只能靠 v2.0 预览版(数据目录隔离)或用应用分身(但分身出来的 Seal 还是同一个包名,可能也会冲突)。
哪个渠道更好
| 渠道 | 优点 | 缺点 |
|---|---|---|
| F-Droid | 自动更新、签名可信、隐私审计过 | 更新可能比 GitHub Release 慢几周 |
| GitHub | 版本最新、Release 说明详细 | 手动更新、需要自己信开发者签名 |
两个渠道都值得信任——F-Droid 有严格的可重建性审计,GitHub Release 是开发者本人发的。选哪个主要看你习惯用哪个更新通道。