第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から審査へ進む
- 処理が完了したビルドをInternal Testingへ追加する。
- チームの実機でログイン、保存、購入や広告、削除を確認する。
- 必要ならExternal Testingへ進み、Beta App Reviewに必要な情報を出す。
- App Storeのバージョンへ確認済みビルドを選ぶ。
- App Privacyなどの申告と審査メモを確認して提出する。
- 承認後は手動、日時指定、自動の公開方法から選ぶ。
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をリリース記録に残してください。