Godot 4.3 で作ったゲームを App Store に出すまでを、Xcode の画面をほぼ開かずコマンドラインで回した。
結論から言うと通るが、Godot 固有の罠が多い。特に端末ファミリーの設定値は Godot 独自の意味を持っていて、間違えると審査提出の段階で詰まる。
実際にストアまで出した手順と、ハマった順に罠を書く。
Godot 4.3 で作ったゲームを App Store に出すまでを、Xcode の画面をほぼ開かずコマンドラインで回した。実際にストアまで出した手順と、ハマった順に罠を書く。
基本の流れ
export_presets.cfgを整備Godot --headless --export-release "iOS"で Xcode プロジェクトを書き出しxcodebuild archive→xcodebuild -exportArchive(method=app-store)altool --upload-appでアップロード
罠 1: targeted_device_family は Godot 独自の値
export_presets.cfg の targeted_device_family は 0=iPhone / 1=iPad / 2=両方。Apple の UIDeviceFamily の感覚で 1 を入れると iPad 専用ビルドになり、App Store Connect が iPad Pro 12.9 のスクリーンショットを必須にしてきて提出が 409 で詰まる。
iPhone 縦持ちゲームなら 0。書き出し後に Info.plist の UIDeviceFamily が [1] になっているか確認するのが確実。
罠 2: 自動署名のままでは配布 archive が絶対に作れない
CODE_SIGN_STYLE が Automatic のまま archive すると conflicting provisioning で必ず落ちる。配布は手動署名をフラグで明示する:
CODE_SIGN_STYLE=ManualCODE_SIGN_IDENTITY="Apple Distribution"PROVISIONING_PROFILE_SPECIFIER="<配布用プロファイル名>"
別の作品では署名を全部切って素ビルドし (CODE_SIGNING_ALLOWED=NO)、後から codesign を手で当てる方式でも通った。
罠 3: レンダラーは gl_compatibility
Forward+ (Vulkan) は Intel Mac のシミュレータで起動すらしない。モバイル向けは gl_compatibility にしておくと手元の確認が楽。シミュレータ向けビルドは -arch x86_64 を明示しないとインストールに失敗する環境があった。
罠 4: 書き出すたびに Info.plist の掃除が要る
Godot の書き出しは、使っていない権限の UsageDescription を空文字で入れてくる。空のまま提出すると審査で落ちる要因になるので、書き出しのたびに除去をやり直す。スクリプト化しておかないと忘れる。
罠 5: 再アップロードは CFBundleVersion を上げる
同じ版番号で altool に投げると拒否される。再提出のたびに CFBundleVersion を +1。これも書き出しスクリプトに焼き込んでおくと事故らない。
まとめ
- 端末ファミリーは 0=iPhone。書き出し後に UIDeviceFamily を確認
- 配布 archive は手動署名の 3 点セットをフラグで明示
- レンダラーは gl_compatibility、sim は x86_64 明示
- UsageDescription の掃除と版番号 +1 はスクリプトに焼き込む
一度通せば 2 回目からは全部コマンド一発で回る。
コメント (0)
まだコメントなし。