为什么鸿蒙应用不能像 F-Droid 那样托管
这是整个项目最常被问到的问题。答案不是"我们不愿意托管",而是技术上做不到。
F-Droid 能分发 APK,靠的是用自己的密钥重签名——Android 不要求安装包必须由厂商证书签名,所以任何人都能替换签名。而 HarmonyOS NEXT 要求证书由华为签发,且 Profile 与设备 UDID 一一绑定,一张 Profile 只能装一台机器。
签名体系四要素
理解鸿蒙签名需要先分清这四个概念。
| 概念 | 格式 | 作用 | 谁签发 |
|---|---|---|---|
| 密钥 | .p12 | 非对称加密公私钥对,用于签名 | 你自己生成 |
| 证书 | .cer | 数字证书,证明签名者身份 | 华为 AGC |
| Profile | .p7b | 声明包名、权限、允许安装的设备列表 | 华为签发 |
| 调试证书 | — | 允许安装调试应用 | 向 AGC 申请 |
两个直接后果:
① 无法预签名分发——任何人签好的包只对特定设备有效,换台机器就装不上;
② 无法集中托管——替所有人签名需要为每台设备单独签一份,既不现实也不该做。
三条实际可用的分发路径
并非无路可走,只是每条都有明确门槛。
路径一 · 用户自签本站推荐
上游提供未签名的 .hap(文件名常含 unsigned),用户用自己的华为开发者账号生成证书与 Profile,本地签名安装。
路径二 · 非公开发布
通过 AGC 以"非公开发布"上架应用市场。可通过链接发现,但不出现在分类、推荐、榜单或搜索结果中,同时保留自动升级。
路径三 · 企业应用严格受限
需邮件申请企业应用发布证书。仅支持鸿蒙电脑专业版/企业版擎云系列设备,每账号仅 1 个证书,仅支持 Stage 模型。
安装侧三个必备开关
无论走哪条路径,用户侧都需要完成这三步。
- 开启开发者模式 — 设置 → 关于本机 → 连点版本号 7 次
- 开启 USB 调试 — 设置 → 系统和更新 → 开发者选项
- 注册设备 UDID — 在 AGC 中登记,Profile 才会包含这台设备
第 3 步最常被忽略,导致"签名成功但安装失败"。完整排查表见 故障排查手册。
生态背景
这个项目不是凭空出现的。
| 项目 | 定位 | 现状 |
|---|---|---|
| F-OH(自由开鸿) | OpenHarmony 平台的 FOSS 应用中心,明确以 F-Droid 为 inspiration,client / data / server 三层架构 | 2024-12 停止维护 |
| Obtainium | Android 侧"从源头更新"客户端,产品哲学参考 | 活跃 |
| auto-installer | PC 端侧载签名工具 | 活跃,3000+ stars |
工具在演进,聚合层缺位。本项目补的就是这个位置。
官方参考
文档结论均可回溯到华为官方说明。
- 申请企业应用发布证书 — 企业证书的申请条件与限制
- In-house 应用发布指导和常见问题 — Deeplink 与描述文件规范
- HAP 应用程序包开发与使用 — 多 HAP 场景的签名一致性约束