发布流水线

Fastlane Android 注册检查:签名后核对身份再发布

Fastlane 的注册检查应放在正式构建和签名之后、商店发布之前。先从即将推广的产物读取身份,再调用官方 API;过早执行会误查另一变体、包名后缀或调试证书。

指南摘要

接入 Fastlane Android 注册检查,在正式签名后读取包名和证书,保护 API 凭据,并让未注册或不匹配结果阻止发布。

适合人群: 使用 Fastlane 自动构建、签名和推广 Android 版本的移动端团队。

发布检查步骤

  1. 构建并签署目标正式产物。
  2. 读取其 applicationId 与公开证书 SHA-256。
  3. 从受保护的环境变量取 API 密钥,调用官方状态接口并解析 JSON。
  4. 用清晰错误终止未解决的业务状态;仅对临时网络或配额故障有限重试。

关键事实

执行时机正式签名之后
输出可追溯的状态与检查时间
禁止记录API 凭据与私有签名材料
注意事项

证书不匹配不会通过不断重复请求自行修复。先定位身份差异,再在官方流程完成处理后复查。

详细说明

把状态判断接到签名后的 lane

通过 sh 或小型 Ruby action 调用 API,解析 state 后用 UI.user_error! 报告未注册或签名不匹配。endpoint 需按实际包名构造;要验证证书,应同时包含正式指纹参数。

下面是状态判断片段,不包含完整的构建、endpoint 构造或重试流程。生产使用前要为 sh 设置 log: false 或改用受保护的辅助脚本,并禁止带密钥运行 --troubleshoot,因为它会强制开启日志。不要原样使用默认会回显命令的片段。

将临时网络错误与正常返回的业务状态分开,让错误信息链接到对应整改说明。发布记录保留状态、时间和产物,不需要暴露私钥或密钥库密码。

  • 先构建并签名,再读取身份。
  • 核对生产 applicationId,保留 flavor 后缀。
  • 有限重试不得掩盖持续签名不匹配。
Fastlane 状态判断片段
status = sh("curl --fail --silent -H 'X-Goog-Api-Key: #{ENV.fetch('ANDROID_DEVELOPER_ID_API_KEY')}' '#{endpoint}' | jq -r .state").strip
UI.user_error!("Android package is #{status}") unless status == "REGISTERED"

填入正式包名;要核对实际 APK 的签名,再补充该产物的公开证书 SHA-256。查询用于发现登记问题,不能代替商店审核。

运行状态检测 →

常见问题

证书不匹配时,lane 要自动重试吗?

不应连续重试。这是需要核对输入、登记或签名流程的业务结果。将失败反馈给发布负责人,保存查询依据;确认整改完成后再启动检查。

公开指纹可以进入日志吗?

它不是私钥,但仍可按团队策略减少输出,仅在受控发布记录中保存。API 密钥、密码和私钥则不能进入日志,尤其要检查命令回显及错误输出路径。

来源与审核

最后审核: