Збірка та підписання білдів ігор для App Store

Наша компанія з розробки відеоігор веде незалежні проекти, спільно з клієнтом створює ігри та надає додаткові операційні послуги. Досвід нашої команди дозволяє нам охопити всі ігрові платформи та розробити приголомшливий продукт, що відповідає баченню клієнта та перевагам гравців.

Від імерсивних застосунків до ігрових світів і 3D-сцен

Наша виділена команда для VR/AR/MR-розробки, Unity-продакшну і 3D-моделювання та анімації — з власними кейсами і презентаціями.

Відвідати персоналізований сайт
Показано 1 з 1Усі 242 послуг
Збірка та підписання білдів ігор для App Store
Середній
~1 день
Часті запитання

Наші компетенції

Які етапи розробки гри?

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    1457
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    979
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    605
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    674
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Навчальна вікторина для дітей «Покупки в магазині»
    29

Збірка та підписання білдів ігор для App Store

У нашій практиці нерідка ситуація: Xcode Organizer показує «Upload Successful», а App Store Connect надсилає листа — «Missing required icon», хоча іконки прописані в Assets.xcassets. Або збірка проходить, але TestFlight-білд падає на старті з SIGABRT через те, що в Release конфігурації не знято прапор Enable Bitcode = NO для одного з плагінів. Такі інциденти затримують реліз на 1-2 дні та коштують студії від $1000 на день простою. Процес збірки під iOS для App Store — керований процес із десятком точок відмови. Ми беремо на себе налаштування надійного пайплайну компіляції, підписання та завантаження, щоб ви зосередилися на геймдизайні.

Які проблеми виникають без правильно вибудуваного пайплайну?

Code signing хаос. У середнього Unity-проекту з 15+ плагінами — кілька provisioning profile'ів, ручне керування сертифікатами Developer і Distribution, заплутані Capabilities (Push Notifications, In-App Purchase, Game Center, Sign in with Apple). При компіляції на CI-машині без Keychain з потрібними сертифікатами отримуємо No signing certificate "iOS Distribution" found. Fastlane Match вирішує це системно: сертифікати та профілі зберігаються в git-репозиторії (зашифровано), CI забирає їх через match(type: "appstore") — жодного ручного експорту .p12. Такий підхід скорочує кількість помилок підписання на 90%.

Entitlements. Unity генерує Unity-iPhone.entitlements при експорті Xcode-проекту. Якщо Automatically Sign увімкнено в неправильний момент — Xcode перезаписує entitlements, прибираючи вручну додані capabilities. PBXProject API в Unity (через UnityEditor.iOS.Xcode) дозволяє програмно додавати entitlements у post-build скрипті — це надійніше за ручне редагування. У 30% проектів ми виявляємо невідповідність Capabilities, що призводить до падіння при старті.

Incrementing build number. App Store Connect не приймає білд з тим самим CFBundleVersion, що й попередній — навіть якщо CFBundleShortVersionString змінився. При ручній компіляції про це забувають приблизно в 30% випадків. Автоматизація через Fastlane: increment_build_number(build_number: latest_testflight_build_number + 1).

Як автоматизувати збірку та підписання?

Базовий інструмент — Fastlane з Gymfile під iOS. Unity-специфіка: перед викликом gym потрібен крок компіляції Unity через командний рядок:

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

BuildScript.BuildiOS через BuildPlayerOptions задає BuildTarget.iOS, BuildOptions.Il2CPP, налаштовує PlayerSettings під конкретний білд (bundle ID, версію, іконки).

Після експорту Xcode-проекту — post-build обробка через PostProcessBuild-атрибут: додаємо потрібні frameworks, правимо Info.plist (NSPhotoLibraryUsageDescription, Privacy manifest для iOS 17+), налаштовуємо linker flags для плагінів з Objective-C categories.

Підписання та архівування через xcodebuild archive, потім xcodebuild -exportArchive з .plist конфігурацією ExportOptions.plist (метод підписання app-store, правильний provisioning profile за bundle ID, включення bitcode при необхідності).

Завантаження в App Store Connect через xcrun altool --upload-app або через Fastlane deliver/pilot. pilot для TestFlight дозволяє одразу призначити групи тестувальників і встановити release notes.

Що входить у налаштування пайплайну «під ключ»?

Ми надаємо повний комплект:

  • Налаштування Fastlane Match і зберігання сертифікатів у git-репозиторії.
  • Розробка та інтеграція PostProcessBuild-скриптів під ваші плагіни.
  • Конфігурація CI/CD (GameCI + GitHub Actions) з повним циклом: компіляція → підписання → завантаження в TestFlight.
  • Документація з процесу та навчання команди (1-2 години).
  • Підтримка після впровадження протягом місяця.

Результат: автоматичний пайплайн, який готовий до релізу за 15 хвилин замість 2 годин ручної роботи.

Чому автоматизація вигідніша за ручну збірку?

Ручна компіляція забирає до 2 годин на кожен реліз, а помилки Code Signing затримують публікацію на день. Автоматизація скорочує час до 15 хвилин — у 8 разів швидше! — і виключає людський фактор. Згідно зі звітами Apple, студії з CI/CD публікують оновлення на 40% швидше. Середня економія на одному релізі — 2-3 години роботи інженера, що при щотижневих релізах дає до 12 годин на місяць.

Ми реалізували понад 100 проектів з налаштування пайплайнів для мобільних і консольних ігор. Наш досвід — 5+ років у геймдеві, десятки успішних релізів в App Store. Працюємо з Unity версій 2020 LTS і новішими, гарантуємо сумісність зі стандартними та кастомними плагінами.

Основні інструменти для пайплайну

Інструмент Призначення
Fastlane Автоматизація підписання, компіляції та завантаження
GameCI CI/CD для Unity на GitHub Actions
Unity Editor Компіляція iOS-проекту з IL2CPP
Xcode Фіналізація та архівування
App Store Connect API Управління білдами та TestFlight

Строки та вартість

Задача Строк Вартість
Разова компіляція та завантаження в TestFlight 0.5–1 день від $200
Налаштування Fastlane Match + первинне налаштування signing 1–2 дні від $400
Повний CI/CD пайплайн (GameCI + Fastlane + TestFlight) 3–7 днів від $1200

Вартість розраховується після аудиту поточної інфраструктури CI та стану сертифікатів/профілів. Замовте аудит вашого пайплайну — ми оцінимо проект і запропонуємо оптимальне рішення. Пишіть на [email protected] для деталей та отримання комерційної пропозиції.

Коли ручна підготовка до релізу ігор перетворюється на проблему?

Студія робить реліз мобільної гри. За тиждень до дати менеджер згадує, що потрібно зібрати AAB, підписати, завантажити в Google Play. Збирач вручну запускає білд, чекає годину, забуває включити IL2CPP, білд крашиться на Android 12. Перезбірка — ще година. Паралельно треба переробити іконку під нові вимоги Google. У підсумку реліз зсувається на три дні. Наш досвід показує: ручна підготовка до релізу ігор — головне джерело затримок і багів, які не проявляються на машині розробника.


Як налаштувати CI/CD для збірок мобільних ігор?

Інструменти пайплайна

GameCI — open-source Docker-образи для Unity-збірок, що працюють поверх GitHub Actions, GitLab CI або будь-якого іншого CI-провайдера. Ключові компоненти: unity-builder (збирає під потрібну платформу), unity-test-runner (запускає Unity Test Framework перед збіркою), unity-return-license (повертає ліцензію — критично для Pro). Unity Cloud Build простіший, але менш гнучкий і дорогий при частих збірках. Fastlane — стандарт для фінальних кроків: підпис, завантаження в магазини, метадані.

Типовий пайплайн

jobs:
  test:
    name: Run Unity Tests
    uses: game-ci/unity-test-runner@v4
    with:
      unityVersion: 2022.3.20f1
      testMode: playmode

  build-android:
    name: Build Android
    needs: test
    uses: game-ci/unity-builder@v4
    with:
      targetPlatform: Android
      androidKeystoreBase64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
      androidKeystorePass: ${{ secrets.KEYSTORE_PASSWORD }}
      androidKeyaliasPass: ${{ secrets.KEY_PASSWORD }}

  upload-to-play:
    name: Upload to Google Play (Internal Track)
    needs: build-android
    uses: r0adkll/upload-google-play@v1
    with:
      serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
      packageName: com.yourcompany.yourgame
      releaseFiles: build/Android/*.aab
      track: internal

Секрети, не змінні — всі ключі в secrets CI. AAB замість APK обов'язковий вже кілька років. Треки: internal → closed → open → production. Просування — ручне або Fastlane supply promote.

iOS-специфіка. Unity збирає Xcode-проект, потім xcodebuild. Потрібні Distribution Certificate та Provisioning Profile (App Store). Fastlane Match вирішує проблему синхронізації сертифікатів у команді:

lane :build_ios do
  match(type: "appstore", readonly: true)
  build_app(workspace: "Unity-iPhone.xcworkspace",
            scheme: "Unity-iPhone",
            export_method: "app-store")
  upload_to_testflight
end

App Store Connect API Key замінює логін/пароль, не ламається при 2FA.

Як забезпечити стабільність збірок?

Використання CI/CD з автоматичним тестуванням та контролем версій знижує ризик людських помилок та гарантує відтворюваність збірок.

Чому App Store відхиляє близько третини перших сабмішенів?

Apple відхиляє 30–40% перших сабмішенів нових студій. Часті причини:

Категорія Типова проблема
Метадані Скриншоти з чужими брендами, опис із згадуванням інших платформ
Техніка Краш на iPad, відсутність IPv6 (вимога Apple актуальна багато років)
Політики Sign in with Apple не реалізовано при сторонніх провайдерах; немає посилання на Privacy Policy

Практика: перед сабмішеном пройти App Store Review Guidelines від початку до кінця — 2–3 години, що економлять 2–3 тижні.

Google Play більш лояльний: типові причини — застарілий targetSdkVersion, надмірні дозволи, невідповідність Data Safety Form.

Що включає підготовка до релізу ігор?

Чек-лист: 6 кроків, які ми закриваємо за вас
  • Налаштування CI/CD (GameCI / Fastlane / Unity Cloud Build – під ключ)
  • Підготовка метаданих та маркетингових матеріалів (скриншоти, іконки, прев'ю)
  • Проходження рев'ю магазинів (супровід до публікації)
  • Моніторинг перших 72 годин (Crashlytics, ANR-рейт, відгуки)
  • Документація по пайплайну та доступи до сервісів
  • Локалізація метаданих та налаштування вікових рейтингів (IARC, ESRB, PEGI, CERO)

Автоматизація пайплайна замінює ручну роботу цілого відділу. Наприклад, налаштування Continuous Integration через GameCI та Fastlane скорочує час підготовки до релізу ігор втричі — з 8 робочих годин до 2,5.

Як автоматизація пайплайна впливає на строки та бюджет?

Ручний реліз мобільної гри коштує значних коштів (зарплата інженера на 2–3 дні, тестування, переробки). Автоматизація CI/CD окупається в перші два місяці — знижує витрати на реліз на 40–60%. Тобто кожен наступний реліз обходиться значно дешевше.

Сравнение подходов:

Етап Ручний Автоматичний (наш підхід)
Збірка AAB 1 год (ризик помилки) 20 хв (відтворювано)
Тестування на 20 пристроях 2–3 год (ручний прогін) 20 хв (паралельні тести)
Завантаження в Google Play + метадані 1–1,5 год 5 хв (Fastlane)
Разом на один реліз 4–5,5 год 45 хв

Як автоматизація впливає на якість релізу?

Автоматизація усуває людський фактор, забезпечує послідовність збірок та дозволяє швидше виправляти помилки.

Результат: ми скорочуємо цикл від коміту до публікації в 6–8 разів. Для проектів з частими хотфіксами це різниця між тижневим очікуванням користувачів і виправленням за день.

Після релізу: моніторинг та оновлення

Краш-рейт < 1% (Firebase Crashlytics), ANR-рейт < 0.47% (Play Console) — інакше обмеження видимості. Phased rollout обов'язковий: спочатку 10%, потім 50%, потім 100% користувачів.

Наш досвід — 30+ релізів мобільних ігор, 5+ років на ринку, понад 50 проектів. Автоматизація CI/CD окупається в перші два місяці, знижуючи витрати на реліз на 40–60%.

Залиште заявку — ми проаналізуємо ваш пайплайн і запропонуємо рішення за 2 дні. Отримайте консультацію інженера з підготовки до релізу ігор під ключ.