概要
Fastlane での Android 登録確認を upload や promotion lane の直前に置き、未登録と証明書不一致を検出します。
対象: Fastlane supply、gradle、独自 lane を使うモバイル リリース チーム。
確認手順
- lane と同じ設定からリリース application ID を読む。
- lane が作った署名済み APK から証明書フィンガープリントを抽出する。
- 保護された Status API を呼び、安定した state を解析する。
- NOT_REGISTERED または不一致なら lane を止め、対応ガイドを示す。
要点
再試行はネットワークまたは割り当てエラーだけに使います。fastlane の sh は既定でコマンドと出力を記録するため、資格情報を含む呼び出しは log: false または保護されたヘルパーを使い、ログを再度有効にする --troubleshoot を併用しないでください。
詳しい解説
署名後に照会を置く
Fastlane lane は、これから昇格するアーティファクトから ID を取り出すべきです。早い段階で照会すると、違う flavor、パッケージ接尾辞、証明書を検査するおそれがあります。
sh または小さな Ruby action で公式 API を呼び、JSON を解析し、安定した登録エラーには明確な UI.user_error! を出します。下のコードは構造例であり、そのままでは API キーを含むコマンドがログに出ます。実装時は log: false の sh または資格情報を隠すヘルパーで包んでください。
- 先にビルドと署名を行う。
- 本番 application ID を照会する。
- 失敗メッセージから対応ガイドへ案内する。
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 で再試行すべきですか?
いいえ。調査が必要な安定した ID の結果であり、同じ入力を繰り返しても解決しません。
公開フィンガープリントをログに出せますか?
秘密鍵ではありませんが、ログを最小化し、管理されたリリース証拠だけに保存する運用も選べます。
出典と更新情報
最終確認日: