capacitor-app-store について
capacitor-app-storeは、CapacitorアプリのApp StoreとGoogle Playへの公開準備を支援する開発スキルです。バージョン管理、SDK要件、プライバシーマニフェスト、ストア素材、提出手順、アップロード時の問題を扱います。
主な機能
- 01Capacitorとネイティブ公開設定の確認
- 02バージョンとビルド番号の更新案内
- 03SDKとターゲットAPI要件の確認
- 04ストア素材とメタデータの準備
- 05アップロードと処理エラーの調査
活用シーン
- 01アプリの初回公開や更新の準備
- 02ストアのアップロードやバージョンエラーの解決
- 03プライバシーマニフェストとターゲットAPIの確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cap-go/ capgo-skills --skill capacitor-app-storeインストール後、Claude Code で/capacitor-app-storeを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
metadata.jsonreferences/android-submission.mdassets-and-metadata.mdios-submission.md詳細
Capacitor アプリをストアに公開する
避けられるアップロードエラーや審査の不合格を防ぎながら、Capacitor のビルドを「自分のデバイスで動く」状態から「両方のストアで公開中」の状態にします。
使用するタイミング
次の場合に使用します:
- ユーザーが App Store Connect または Google Play Console で初回リリースやアップデートを準備している。
- アップロードや処理に失敗する(ITMS エラー、Play Console のバージョン/対象 API エラー)。
- ユーザーがスクリーンショットのサイズ、アイコンの要件、ストア掲載情報の項目、プライバシーフォーム、または段階的な公開オプションを必要としている。
- ユーザーが、現在ストアで求められている Xcode/SDK または対象 API レベルを尋ねている。
次の場合は使用しないでください:
- アプリが App Review ガイドラインに準拠しているか監査する、または却下への対応をする ->
capacitor-apple-review-preflight。 - GitHub Actions/GitLab/Fastlane のパイプラインを作成する ->
capacitor-ci-cd。 - Capgo Cloud でビルド/署名する ->
capgo-native-builds。 - 承認後にウェブのみの修正を配信する ->
capgo-live-updates。
ライブプロジェクトのスナップショット
Capacitor パッケージとバージョン:
!node -e "const fs=require('fs');if(!fs.existsSync('package.json'))process.exit(0);const pkg=JSON.parse(fs.readFileSync('package.json','utf8'));const out=['version='+(pkg.version||'')];for(const section of ['dependencies','devDependencies']){for(const [name,version] of Object.entries(pkg[section]||{})){if(name.startsWith('@capacitor/')||name==='@capgo/capacitor-updater'||name==='@capacitor/assets')out.push(section+'.'+name+'='+version)}}console.log(out.join('\n'))"
ネイティブリリースファイル:
!find . -maxdepth 5 -not -path '*/node_modules/*' \( -name 'Info.plist' -o -name 'PrivacyInfo.xcprivacy' -o -name '*.entitlements' -o -name 'SceneDelegate.swift' -o -name 'variables.gradle' -o -name 'build.gradle' -o -name 'ExportOptions.plist' -o -path './fastlane' \)
現在のストア要件(2026年10月)
| 要件 | 詳細 | Capacitor への影響 |
|---|---|---|
| Apple SDK の最低要件 | 2026年4月28日以降:Xcode 26 以降および iOS 26 SDK でビルドする必要があります。2027年4月から:iOS 27 SDK(Xcode 27)が必要です | Capacitor 8 は Xcode 26 でビルドできます。Xcode 27 には Capacitor 8.5 以降のプロジェクト変更が必要です |
| UIScene ライフサイクル | Xcode 27/iOS 27 SDK でのビルドにはシーンライフサイクルが必要です | Capacitor 8.5 以降:SceneDelegate.swift、UIApplicationSceneManifest、AppDelegate の configurationForConnecting を追加します(capacitor-app-upgrades を参照) |
| プライバシーマニフェスト | 必須理由 API を宣言する必要があります。指定されたサードパーティ SDK には、それぞれ署名済みのマニフェストが必要です | Capacitor コアとメンテナンスされているプラグインにはマニフェストが含まれていますが、アプリ独自の PrivacyInfo.xcprivacy も必要です |
| Apple の年齢制限指定 | 13+、16+、18+ の区分を含む新しい質問票です。回答期限は2026年1月31日で、未回答の場合はアップデートがブロックされます | App Store Connect -> App Information -> Age Ratings で回答します |
| Play の対象 API | 2026年8月31日以降、新規アプリとアップデートは API 36 を対象にする必要があります(申請により2026年11月1日まで延長可能)。API 35 未満の既存アプリは、新しいデバイスの新規ユーザーに届かなくなります | Capacitor 8 のテンプレートは compile/target 36 を使用し、Capacitor 9 は 37 を使用します |
| Play の形式 | 新規アプリは Play App Signing を利用した AAB をアップロードする必要があります | ./gradlew bundleRelease |
| 16 KB ページサイズ | Android 15 以降を対象とするアプリでネイティブ .so ライブラリを使用する場合は、16 KB にアラインする必要があります | SQLCipher、ML、メディア、分析 SDK を確認してください |
| Play のクローズドテスト | 2023年11月13日以降に作成された個人アカウントでは、本番公開の前に、オプトインしたテスター12人以上による14日間連続のクローズドテストが必要です | テストは早めに開始してください |
期限が近づいたら日付を再確認してください。Apple は developer.apple.com/news/upcoming-requirements、Google は developer.android.com/google/play/requirements/target-sdk に掲載しています。
手順
- スナップショットを確認します。Capacitor のバージョン、iOS のシーンライフサイクル(
SceneDelegate.swiftの有無を確認)、variables.gradleの SDK 値、プライバシーマニフェストの有無を確認します。 - ユーザーとリリース方法を決めます。手動(Xcode Organizer + Play Console)、CLI/CI(
capacitor-ci-cd)、または Capgo Cloud Build(capgo-native-builds)から選びます。 - バージョンを更新します。ユーザーに表示されるバージョンは両方のプラットフォームで一致させ、ビルド番号はアップロードのたびに必ず増やします。
- iOS:Xcode のターゲットのビルド設定で、
MARKETING_VERSION(CFBundleShortVersionString)とCURRENT_PROJECT_VERSION(CFBundleVersion)を設定します。通常、Info.plistは$(MARKETING_VERSION)/$(CURRENT_PROJECT_VERSION)を参照します。plist の値ではなく、ビルド設定を編集してください。 - Android:
android/app/build.gradleのversionNameとversionCodeを設定します(versionCodeの上限は 2100000000 です)。
- iOS:Xcode のターゲットのビルド設定で、
- Web アセットをビルドして同期します:
npm run build && npx cap sync。 - プラットフォームのリファレンスを読み込み、その手順に従います:
references/ios-submission.md、references/android-submission.md。 references/assets-and-metadata.mdを使って、ストア掲載用のアセットを準備します。- iOS で送信ボタンを押す前に、軽微な更新以外の場合は
capacitor-apple-review-preflightを実行します。 - 段階的に公開します:iOS は段階的リリース(7 日間、途中停止可能)、Play は段階的なロールアウト率を設定します。公開範囲を広げる前にクラッシュ率を確認します。
検証
- iOS:Xcode Organizer のアーカイブ検証(「Validate App」)でエラーが発生しないこと。処理後に TestFlight にビルドが表示されること。実機に TestFlight からインストールし、重要なフローを実行します。
- Android:
bundletoolまたは Play の内部テストでインストールできること。Play Console のリリース前レポートにクラッシュがないこと。aapt2 dump badging app-release.aabまたは Play Console で、想定どおりのversionCodeとtargetSdkVersionが表示されること。 - 両方:デバッグビルドではなく、ストア用ビルドからアプリをコールドスタートできること。レビュー担当者用のデモアカウントでログインできること。リリース署名でディープリンクとプッシュ通知が機能すること。
エラー処理
| エラー | 修正方法 |
|---|---|
| ITMS-4238 "Redundant Binary Upload"(ビルド番号がすでに使用されています) | CURRENT_PROJECT_VERSIONを増やします |
ITMS-90062 CFBundleShortVersionString must be higher than the previously approved version | MARKETING_VERSIONを増やします |
| ITMS-90186 "Invalid Pre-Release Train"(バージョンのリリース系列が終了しています) | マーケティングバージョンはすでにリリースされています。MARKETING_VERSIONを増やします |
| ITMS-90725 "SDK Version Issue"(古い SDK でビルドされています) | 要件を満たす Xcode/SDK(現時点では Xcode 26 以降、2027 年 4 月からは Xcode 27)でビルドします |
| ITMS-91053 "Missing API declaration" | 必要な理由を要する API カテゴリと理由コードをPrivacyInfo.xcprivacyに追加します |
| ITMS-91061 名前が指定された SDK の "Missing privacy manifest" | プライバシーマニフェストが同梱されるバージョンに、その SDK/プラグインを更新します。SDK のプライバシー慣行をアプリのマニフェストにコピーしないでください |
| ITMS-90683 "Missing purpose string in Info.plist" | 用途を具体的に記述した、名前が示すNS...UsageDescriptionを追加します |
| Xcode 27 でビルドすると、アプリが黒い画面のまま、または起動しない | UIScene ライフサイクルが未対応です。Capacitor 8.5 以降にアップグレードし、8.5 のプロジェクト変更を適用します |
| Play:「Version code 45 has already been used. Try another version code.」 | versionCodeを増やします |
| Play:アップロード時のターゲット API レベルエラー | variables.gradleのtargetSdkVersion/compileSdkVersionを、必要なレベルまで引き上げます |
| Play:「You uploaded an APK or Android App Bundle that was signed in debug mode」 | アップロードキーを使ってbundleReleaseをビルドします |
| Play:「Your Android App Bundle is signed with the wrong key」 | 登録済みのアップロードキーで署名するか、Play Console でアップロードキーのリセットを申請します |
| Play:製品版トラックを利用できない | 12 人のテスターによる 14 日間のクローズドテストを完了します(個人アカウントの場合) |
参考資料
references/ios-submission.md- 署名、アーカイブ、アップロード方法、TestFlight、App Privacy、輸出コンプライアンス、審査メモ、段階的リリース。references/android-submission.md- リリース署名、AAB、Play App Signing、トラック、Data safety、ターゲット API と 16 KB のチェック、段階的ロールアウト。references/assets-and-metadata.md- アイコンの生成、スクリーンショットのサイズ、両ストアのテキストフィールドの上限。
関連スキル:capacitor-apple-review-preflight、capacitor-ci-cd、capgo-native-builds、capacitor-app-upgrades、capgo-live-updates。