第9章

iOS版をビルドしてApp Storeへ公開する

Appleのチーム権限、Bundle ID、署名、IPA、TestFlightからApp Store審査までを学びます。

この章で学ぶこと

  • Apple DeveloperのチームとXcodeの署名設定を確認する
  • FlutterからarchiveとIPAを作る
  • TestFlightで確認してApp Store審査へ提出する

前提

iOSのreleaseビルドと提出にはmacOSとXcodeが必要です。Apple Developer Programへ登録し、App Store Connectで必要な役割を招待されたApple Accountを使います。Account HolderのID・パスワードを共有しません。

flutter doctor
open ios/Runner.xcworkspace

XcodeのSettings > Accountsへ自分のApple Accountを追加し、招待されたTeamが見えることを確認します。

1. 識別情報と署名を確認する

XcodeでRunner targetのSigning & Capabilitiesを開き、次を確認します。

  • Teamが本番公開する組織になっている。
  • Bundle IdentifierがApp Store ConnectのApp IDと一致する。
  • Automatically manage signingを使うか、手動署名の担当と手順が決まっている。
  • Push Notifications、Sign in with Appleなど、実装したCapabilityだけが有効になっている。
  • Firebaseへ同じBundle IDのiOSアプリを登録している。

Bundle IDも公開後に変えると別アプリになります。開発用と本番用を別アプリとして扱う場合は、たとえば.devを付けた別Bundle IDと、対応するFirebase iOS Appを用意します。

2. App Store Connectにアプリを作る

権限のあるメンバーがApp Store ConnectのMy Appsから新しいアプリを作り、名前、主要言語、Bundle ID、SKUを登録します。

次の情報も準備します。

  • 説明、キーワード、カテゴリ、サポートURL
  • スクリーンショット、アイコン
  • プライバシーポリシーURLとApp Privacy
  • 年齢区分、暗号化の申告、広告識別子の利用
  • 審査担当がログインするためのデモアカウントと説明
  • 価格、公開地域、著作権表記

審査用アカウントには実データや管理者権限を与えず、審査に必要な機能だけを確認できる状態にします。

3. バージョンを決めてビルドする

pubspec.yamlのversionとbuild numberを更新します。

version: 1.0.0+1

テスト後、production指定でIPAを作ります。

flutter clean
flutter pub get
flutter test
flutter build ipa --release --dart-define=APP_ENV=prod

通常、archiveとIPAは次へ作られます。

build/ios/archive/
build/ios/ipa/

Flutter公式のiOS公開ガイドでは、flutter build ipa、XcodeのOrganizer、Transporterなどによるアップロード方法を確認できます。署名方法やCIによりコマンドは変わります。

4. App Store Connectへアップロードする

次のいずれかの方法を使います。

  • Xcode OrganizerでarchiveをValidateし、Distribute Appを実行する。
  • AppleのTransporterでIPAをアップロードする。
  • CIからApp Store Connect APIを使う。

API鍵を使う場合、.p8秘密鍵をGit、チャット、生成AIへ渡しません。発行者、Key ID、役割、有効なCIだけに範囲を限定し、不要になった鍵を失効させます。

同じversionへ新しいビルドを追加するときも、build numberは一意になるよう増やします。

5. TestFlightから審査へ進む

  1. 処理が完了したビルドをInternal Testingへ追加する。
  2. チームの実機でログイン、保存、購入や広告、削除を確認する。
  3. 必要ならExternal Testingへ進み、Beta App Reviewに必要な情報を出す。
  4. App Storeのバージョンへ確認済みビルドを選ぶ。
  5. App Privacyなどの申告と審査メモを確認して提出する。
  6. 承認後は手動、日時指定、自動の公開方法から選ぶ。

Apple Developer Programの役割と権限は公式の役割一覧で確認してください。契約更新や新しい規約への同意はAccount Holderが必要になる場合があります。

うまくいかないとき

症状 確認すること
Teamが選べない 招待承認、Apple Account、役割、契約状態
Provisioning profileエラー Bundle ID、Team、Capability、署名設定
ビルド済みだがアップロード不可 version/build、証明書、配布方式
Google/Appleログインが失敗 Bundle ID、URL Scheme、Capability、Firebase設定
審査でログインできない デモアカウント、地域制限、審査メモ、バックエンド稼働
プライバシー申告の警告 SDKのPrivacy Manifestと実際のデータ利用

やってみよう

TestFlightで、App Store Connectから配られたビルドを別のメンバーの実機へ入れます。ビルド番号、Team、Bundle ID、Firebase Project IDをリリース記録に残してください。