Safe Haven 中文文档 下载 App

Safe Haven 开发者入门,注册应用、放 .safehaven 文件完成验证

为什么要注册

在 Safe Haven 目录里,一个应用条目的来源有三种:

作为开发者,自己在 Safe Haven 注册应用的好处:

第一步:Web 门户注册

打开 store.colourswift.com,登录(Safe Haven 自己的账号系统,不依赖 GitHub / Google),然后点"新建应用"。

需要填写的内容:

字段类型说明
显示名(Name)必填用户在详情页看到的名字
简短描述(Summary)必填一句话介绍,客户端列表卡片上显示
完整描述(Description)必填完整功能说明,支持 Markdown
包名可选不知道可以留空占位,扫描管线从 manifest 里提取真实包名后自动替换
源码仓库地址必填GitHub / GitLab / Codeberg
分类必填十个固定分类之一
标签(Keywords)可选搜索关键词
应用图标可选1 个,PNG / JPEG / WebP,≤ 2 MB
截图可选最多 6 张,同上格式约束

填完点"创建条目",Safe Haven 生成一个唯一的仓库验证 token——复制保存,第二步要用。

第二步:放 .safehaven 文件

Safe Haven 怎么知道你给的仓库地址真的归你管?

在你的源码仓库根目录(不是 app/ 子目录)创建一个叫 .safehaven 的文件(无扩展名),文件内容就是第一步 Safe Haven 给你的那个 token。

GitHub 上直接创建:

  1. 仓库主页点 "Add file" → "Create new file"
  2. 文件名输入 .safehaven
  3. 文件内容粘贴 token(没有换行、没有多余字符)
  4. 点 "Commit changes" 提交

本地创建后推送(推荐,不容易出错):

# Linux / macOS 终端
echo "SAFEHAVEN_TOKEN_GOES_HERE" > .safehaven
git add .safehaven
git commit -m "Add Safe Haven verification file"
git push
# Windows PowerShell
Set-Content -Path .safehaven -Value "SAFEHAVEN_TOKEN_GOES_HERE" -NoNewline
git add .safehaven
git commit -m "Add Safe Haven verification file"
git push

重要:文件名必须是 .safehaven(没有 .txt 或其他后缀),必须放在仓库根目录,默认分支名如果是 master 而不是 main,Safe Haven 后台用的是 main——这种情况你可能需要改一下默认分支或等 Safe Haven 侧适配。

第三步:上传 APK 走扫描管线

创建条目并通过验证握手后,有两种方式上传 APK:

方式 A:自动提交(推荐)

在管理门户的应用设置里开启自动提交。Safe Haven 的统一 Poller 会每 6 小时检查你的上游仓库(GitHub Release / GitLab Tags / Codeberg Releases):

方式 B:手动提交

如果你的发布节奏需要手动控制:

  1. 关闭自动提交模式
  2. 管理门户点"上传新版本"
  3. Safe Haven 生成一个 presigned PUT URL(AWS Signature Version 4,有效期 15 分钟)
  4. 用 PUT 请求把 APK 上传到这个 URL

上传工具可以用任何 HTTP 客户端。命令行示例:用 curl 发 PUT 请求,-T 后面指定 APK 文件路径,URI 填 Safe Haven 后台生成的 presigned URL(形如 在线存储桶域名/staging/包名/versionCode/app.apk + AWS Signature 参数)。Windows PowerShell 可以用 Invoke-WebRequest,Method 指定 PUT,InFile 填 APK 路径,Uri 填 presigned URL。或者用 Postman / Insomnia 等图形化工具,Body 选 Binary,选择 APK 文件,URI 填 URL。

上传完成后,扫描管线自动开始处理。

扫描管线会做什么

上传的 APK 会依次经过:

  1. pending_upload → pending_scan:文件到达 staging
  2. scanning:扫描器拉取 APK
  1. 通过 → pending_review → live(自动批准,通常几小时内)
  2. 未通过 → rejected(查看具体拒绝原因,修正后重新提交)

提交成功了吗怎么看

回到 store.colourswift.com 的开发者后台,你的应用条目会显示当前状态和历史版本。状态是 live 就说明进公开目录了,客户端下次同步时能看到。

进目录后,Store 前端的公开页面格式为:在线商店域名 + /app/ + 包名。徽章图片地址:在线商店域名/badge.svg。

常见坑

.safehaven 文件放错位置

很多开发者第一次会把 .safehaven 放在 app/ 或 android/ 子目录下——Safe Haven 只查仓库根目录,子目录下的不算。确认路径:仓库根/.safehaven。

默认分支不是 main

Safe Haven 后台用 raw.githubusercontent.com 的 main 分支 URL 去抓 .safehaven。如果你的仓库默认分支叫 master,Safe Haven 可能抓不到文件。解决办法:在 GitHub 设置里把默认分支改成 main,或在 Safe Haven 后台反馈这个问题。

versionCode 没递增

扫描管线会用 manifest 里的 versionCode 做去重检查。如果你提交新版本但 manifest 里的 versionCode 和已有的一样,会触发"versionCode 重复"自动拒绝。每次提交新版本必须递增 versionCode。

APK 太大

单 APK 上限 100 MB。超过的会被扫描管线直接跳过。大应用可以:

x86 构建被排除

Safe Haven 只收 arm64-v8a 和 armeabi-v7a,x86 构建直接排除。如果你只发布 x86 版本(模拟器专用),Safe Haven 不会收录。