Building and signing game builds for App Store

Our video game development company runs independent projects, jointly creates games with the client and provides additional operational services. Expertise of our team allows us to cover all gaming platforms and develop an amazing product that matches the customer’s vision and players preferences.
Showing 1 of 1 servicesAll 242 services
Building and signing game builds for App Store
Medium
~1 business day
FAQ
Our competencies
What are the stages of Game Development?
Latest works
  • image_games_mortal_motors_495_0.webp
    Game development for Mortal Motors
    670
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    A turn-based strategy game set in a fantasy setting, With Fire and Sword
    860
  • image_games_second_team_604_0.webp
    Game development for the company Second term
    490
  • image_games_phoenix_ii_606_0.webp
    3D animation - teaser for the game Phoenix 2.
    533

App Store Game Build Signing

Xcode Organizer shows "Upload Successful" — and App Store Connect sends letter: "Missing required icon," although icons are in Assets.xcassets. Or build accepted, but TestFlight-build crashes on startup with SIGABRT because in Release configuration flag Enable Bitcode = NO not set for one plugin. iOS build for App Store is managed process with dozen failure points.

What breaks without properly structured pipeline

Code signing chaos. Average Unity-project with 15+ plugins has multiple provisioning profiles, manual cert management for Developer and Distribution, tangled Capabilities (Push Notifications, In-App Purchase, Game Center, Sign in with Apple). On CI-machine without Keychain with needed certs get No signing certificate "iOS Distribution" found. Fastlane Match solves this systematically: certificates and profiles stored in git-repo (encrypted), CI retrieves them via match(type: "appstore") — no manual export of .p12.

Entitlements. Unity generates Unity-iPhone.entitlements on Xcode-project export. If Automatically Sign enabled at wrong moment — Xcode overwrites entitlements, removing manually added capabilities. PBXProject API in Unity (via UnityEditor.iOS.Xcode) allows programmatically adding entitlements in post-build script — more reliable than manual editing.

Incrementing build number. App Store Connect doesn't accept build with same CFBundleVersion as previous — even if CFBundleShortVersionString changed. Manual build forgets this about 30% of time. Automation via Fastlane: increment_build_number(build_number: latest_testflight_build_number + 1).

How we build the process

Base tool — Fastlane with Gymfile for iOS. Unity specifics: before calling gym need build step via command line:

Unity.exe -batchmode -executeMethod BuildScript.BuildiOS -projectPath . -logFile build.log -quit

BuildScript.BuildiOS via BuildPlayerOptions sets BuildTarget.iOS, BuildOptions.Il2CPP, configures PlayerSettings for specific build (bundle ID, version, icons).

After Xcode-project export — post-build processing via PostProcessBuild attribute: add needed frameworks, fix Info.plist (NSPhotoLibraryUsageDescription, Privacy manifest for iOS 17), configure linker flags for plugins with Objective-C categories.

Signing and archiving via xcodebuild archive, then xcodebuild -exportArchive with .plist ExportOptions configuration (signing method app-store, correct provisioning profile by bundle ID, bitcode inclusion if needed).

Upload to App Store Connect via xcrun altool --upload-app or Fastlane deliver/pilot. pilot for TestFlight allows immediately assigning tester groups and setting release notes.

Automation on CI/CD

For game studios optimal — GameCI (GitHub Actions + Unity). Workflow: trigger on push to release branch → Unity build → Fastlane signing → TestFlight upload → Slack notification.

Secrets (certificates, Apple ID credentials, App Store Connect API key) stored in GitHub Secrets or Vault. Apple recommends moving from username/password to App Store Connect API Key (JWT) — more reliable and doesn't require two-factor auth in CI.

Timeline

Task Duration
One-time build and TestFlight upload 0.5–1 day
Setup Fastlane Match + initial signing config 1–2 days
Full CI/CD pipeline (GameCI + Fastlane + TestFlight) 3–7 days

Cost determined after audit of current CI infrastructure and certificate/profile state.