指南摘要
接入 Fastlane Android 注册检查,在正式签名后读取包名和证书,保护 API 凭据,并让未注册或不匹配结果阻止发布。
适合人群: 使用 Fastlane 自动构建、签名和推广 Android 版本的移动端团队。
发布检查步骤
- 构建并签署目标正式产物。
- 读取其 applicationId 与公开证书 SHA-256。
- 从受保护的环境变量取 API 密钥,调用官方状态接口并解析 JSON。
- 用清晰错误终止未解决的业务状态;仅对临时网络或配额故障有限重试。
关键事实
执行时机正式签名之后
输出可追溯的状态与检查时间
禁止记录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 密钥、密码和私钥则不能进入日志,尤其要检查命令回显及错误输出路径。
来源与审核
最后审核: