Сборка игры для iOS в Unity: полное руководство от А до Я

Создание мобильной игры для iPhone или iPad в Unity — процесс, который требует не только креативного подхода к разработке, но и точного соблюдения технических требований Apple. Даже опытные разработчики иногда сталкиваются с ошибками при сборке под iOS, связанными с настройками проекта, сертификатами или ограничениями платформы. Эта статья поможет разобраться во всех нюансах: от подготовки среды разработки до загрузки готового приложения в App Store Connect.

Важно понимать, что сборка под iOS отличается от Android или PC несколькими ключевыми моментами: обязательной привязкой к Apple Developer Account (стоимостью $99/год), использованием Xcode для финальной компиляции и строгими правилами модерации в App Store. Если вы впервые собираете проект под iOS, будьте готовы к тому, что процесс займёт больше времени, чем для других платформ — но результат того стоит: экосистема Apple предлагает высокую платежеспособность пользователей и стабильную работу устройств.

В этом руководстве мы разберём:

  • 🔧 Как настроить Unity для сборки под iOS (включая модули и плагины)
  • 📱 Требования к устройствам и версиям iOS в 2026 году
  • 🔐 Работа с сертификатами и профилями provisioning в Apple Developer
  • ⚙️ Оптимизация производительности для iPhone и iPad
  • 🚀 Загрузка билда в TestFlight и App Store

Если вы уже пробовали собирать проект и получили ошибку вроде Provisioning profile not found или Missing iOS Distribution signing identity — не закрывайте статью. Мы подробно разберём, как их исправить, а также дадим советы по ускорению сборки и сокращению размера финального .ipa-файла.

1. Подготовка среды разработки: что нужно установить

Прежде чем приступить к сборке, убедитесь, что на вашем Mac (да, без него не обойтись!) установлены все необходимые инструменты. Unity для iOS требует:

  • 🖥️ Mac с macOS 12 Monterey или новее (на Windows собрать .ipa невозможно)
  • 🛠️ Xcode 15+ (скачать бесплатно в Mac App Store)
  • 🔄 Unity Hub и Unity 2022 LTS (или новее) с модулем iOS Build Support
  • 🔑 Аккаунт Apple Developer ($99/год) с активной подпиской

Особое внимание уделите версии Xcode. С 2026 года Apple требует, чтобы все новые приложения собирались на Xcode 15+ с поддержкой SDK для iOS 17+. Если ваш проект использует устаревшие API (например, UIWebView), его просто не примут в App Store. Проверьте совместимость плагинов заранее!

Установите Unity через Unity Hub, выбрав при установке модули:

  • iOS Build Support (обязательно!)
  • MacOS Build Support (Mono) (понадобится для некоторых плагинов)
  • WebGL Build Support (опционально, если тестируете веб-версию)

После установки откройте Xcode и согласитесь с лицензионным соглашением. Это важно: без этого Unity не сможет использовать Xcode для финальной сборки.

📊 Какую версию Unity вы используете для iOS-разработки?
2022 LTS
2023.x
2021 LTS
Другая

2. Настройка проекта Unity для iOS

Откройте свой проект в Unity и перейдите в File → Build Settings. Здесь нужно:

  1. Выбрать платформу iOS и нажать Switch Platform (это может занять несколько минут).
  2. В разделе Player Settings (кнопка внизу окна) настроить параметры для iOS:

Основные настройки, которые нужно проверить:

Параметр Рекомендуемое значение Пояснение
Target Minimum iOS Version 13.0 или выше Слишком старая версия (например, 11.0) может вызвать проблемы с модерацией.
Architecture ARM64 Поддержка 32-битных устройств (ARMv7) официально прекращена.
Scripting Backend IL2CPP Обязательно для iOS! Mono не поддерживается.
Strip Engine Code Включено Уменьшает размер билда, удаляя неиспользуемый код.

Обратите внимание на раздел Resolution and Presentation. Для iPhone рекомендуется:

  • 📱 Default Orientation: Portrait или Landscape Left (в зависимости от игры)
  • 🔄 Allowed Orientations: отметьте только те, которые действительно нужны (лишние ориентации могут вызвать проблемы с модерацией).

☑️ Проверка настроек перед сборкой

Выполнено: 0 / 5

Не забудьте указать уникальный Bundle Identifier в формате com.YourCompany.GameName. Он должен совпадать с тем, что выlater зарегистрируете в Apple Developer Account. Если здесь допустить ошибку, билд не удастся загрузить в TestFlight.

3. Работа с сертификатами и профилями provisioning

Это самый сложный этап для новичков. Apple требует, чтобы каждое приложение было подписано цифровым сертификатом, а устройства для тестирования — зарегистрированы в Apple Developer Portal. Без этого сборка просто не запустится.

Вот пошаговая инструкция:

  1. Создайте App ID:
    • Перейдите в Apple Developer AccountCertificates, Identifiers & Profiles.
    • В разделе Identifiers нажмите + и выберите App IDs.
    • Укажите Bundle ID (должен совпадать с тем, что в Unity) и название приложения.
    • Включите нужные Capabilities (например, Game Center или In-App Purchase).
  2. Сгенерируйте сертификат:
    • В разделе Certificates выберите тип Apple Development (для тестирования) или Apple Distribution (для релиза).
    • Следуйте инструкциям на экране. Потребуется создать Certificate Signing Request (CSR) через Keychain Access на Mac.
  • Создайте Provisioning Profile:
    • В разделе Profiles выберите Development или Distribution.
    • Привяжите профиль к вашему App ID и сертификату.
    • Для Development добавьте UDID тестовых устройств (найти их можно в iTunes или через Xcode).

    Внимание! Если вы используете Unity Cloud Build или CI/CD (например, GitHub Actions), потребуется экспортировать сертификаты в формате .p12 и загрузить их в систему сборки. Без этого автоматическая сборка не сработает.

    Что делать, если Xcode не видит provisioning profile?

    Проверьте, что профиль скачан и установлен в ~/Library/MobileDevice/Provisioning Profiles/. Если папки нет — создайте её вручную. Также убедитесь, что в Xcode выбран правильный аккаунт разработчика в настройках (Xcode → Preferences → Accounts).

    После создания сертификатов и профилей скачайте их и установите на Mac двойным кликом. Unity автоматически обнаружит их при сборке, но иногда приходится указывать путь вручную в Player Settings → Publishing Settings.

    4. Оптимизация производительности для iOS-устройств

    iPhone и iPad имеют разные технические характеристики, и ваша игра должна хорошо работать как на iPhone 15 Pro с чипом A17 Pro, так и на iPhone SE 2020. Вот ключевые моменты оптимизации:

    • 🎮 Графика:
      • Используйте Addressables для динамической загрузки текстур (экономит память).
      • Для 2D-игр отключите Mipmaps для спрайтов, если они не нужны.
      • Настройте Quality Settings в Unity под разные устройства (например, уменьшайте разрешение теней на слабых девайсах).
    • 🔋 Производительность:
      • Включите Multithreaded Rendering в Player Settings (ускоряет рендеринг на многоядерных чипах).
      • Ограничьте FPS до 60 или 30 (в зависимости от жанра игры) с помощью Application.targetFrameRate.
      • Используйте Object Pooling вместо постоянного создания/уничтожения объектов.

    Критическая ошибка многих новичков: игнорирование Metal API. С 2020 года Apple требует, чтобы все игры на iOS использовали Metal вместо OpenGL ES. В Unity это настраивается автоматически при выборе IL2CPP, но если вы используете кастомные шейдеры, проверьте их совместимость!

    Для тестирования производительности:

    1. Соберите билд в режиме Development Build (галочка в Build Settings).
    2. Подключите iPhone к Mac и запустите игру через Xcode (так вы увидите логи в реальном времени).
    3. Используйте Unity Profiler для анализа загрузки CPU/GPU и памяти.

    {

    QualitySettings.SetQualityLevel(2, true); // Средние настройки для A11 (iPhone 8/X)

    }-->

    5. Сборка и тестирование на устройстве

    Когда проект настроен, пора собирать первый билд. Вот пошаговая инструкция:

    1. Подключите iPhone или iPad к Mac через USB (разблокируйте устройство и подтвердите доверие компьютеру).
    2. В Unity откройте Build Settings и нажмите Build (или Build And Run для автоматического запуска).
    3. Выберите папку для сохранения .xcodeproj-файла (например, Builds/iOS).
    4. После сборки Unity откроет проект в Xcode. Здесь нужно:
    • 🔧 Выбрать целевое устройство в верхнем меню (рядом с кнопкой Play).
    • 📱 Убедиться, что в Signing & Capabilities указан правильный Team и Bundle Identifier.
    • 🔄 Нажать Build (или Cmd+B) для компиляции.

    Если сборка прошла успешно, игра установится на устройство. Типичные ошибки на этом этапе:

    • No signing certificate found → проверьте сертификаты в Keychain Access.
    • Provisioning profile doesn't match bundle identifier → исправьте Bundle ID в Unity и Apple Developer Portal.
    • Missing entitlements → добавьте недостающие Capabilities в Xcode (например, Keychain Sharing для сохранений).

    Для ускорения тестирования используйте TestFlight:

    1. Соберите билд в режиме ReleaseBuild Settings снимите галочку Development Build).
    2. В Xcode выберите Generic iOS Device и архивируйте проект (Product → Archive).
    3. В открывшемся окне нажмите Distribute AppTestFlight & App Store и загрузите архив.

    6. Загрузка в App Store: требования и лайфхаки

    Перед отправкой в App Store убедитесь, что ваше приложение соответствует правилам Apple. Вот ключевые моменты для игр:

    • 📋 Метadata:
      • Название игры — до 30 символов (в App Store Connect).
      • Описание — минимум 2-3 абзаца, с ключевыми словами (но без спама!).
      • Скриншоты: 6.5" (iPhone), 5.5" (старые iPhone), 12.9" (iPad Pro).
      • Превью (видео) — до 30 секунд, показывающее геймплей.
    • 🎯 Технические требования:
      • Поддержка Dark Mode (обязательно с 2023 года).
      • Нет жёсткой привязки к разрешению экрана (игра должна адаптироваться под iPhone 15 и iPad Mini).
      • Если есть покупки — тестовые аккаунты для Sandbox (настраивается в App Store Connect).

    Процесс загрузки:

    1. Архивируйте проект в Xcode (Product → Archive).
    2. В окне Organizer выберите Distribute AppApp Store Connect.
    3. После загрузки перейдите в App Store Connect, выберите приложение и заполните все поля (включая цену, категорию, возрастной рейтинг).
    4. Отправьте на ревью. Срок проверки — от 24 часов до 3 дней (иногда дольше).

    Внимание! Если ваша игра использует Unity IAP для покупок, убедитесь, что:

    • В App Store Connect добавлены все In-App Purchases (с теми же Product ID, что и в коде).
    • Покупки протестированы в Sandbox (используйте тестовые аккаунты, не основной Apple ID!).
    • Отключена опция Cleared for Sale до одобрения приложения.

    После одобрения вы сможете выпустить игру вручную или настроить автоматический релиз. Не забывайте следить за отзывами и метриками в App Store ConnectApple может заблокировать приложение, если пользователи жалуются на баги или мошенничество.

    7. Распространённые ошибки и их решения

    Даже опытные разработчики сталкиваются с проблемами при сборке под iOS. Вот топ-5 ошибок и способы их исправления:

    Ошибка Причина Решение
    ITMS-90023: Missing Info.plist key Не хватает обязательных ключей в Info.plist (например, для доступа к камере). Добавьте недостающие Usage Description в Player Settings → iOS → Info.plist.
    LD: library not found for -lz Проблема с линковкой библиотек при использовании IL2CPP. Проверьте, что в Xcode в Build Settings → Library Search Paths указан путь к SDK.
    Failed to load 'Data/Managed/Metadata/global-metadata.dat' Повреждённые данные при сборке с IL2CPP. Удалите папку Library в проекте и пересоберите.
    This app cannot be installed because its integrity could not be verified Проблема с сертификатами или Provisioning Profile. Проверьте, что устройство добавлено в Apple Developer Portal и профиль обновлён.
    UnityException: Unable to convert classes into the required format Конфликт версий .NET или плагинов. Обновите Unity и плагины до последних версий.

    Если вы видите ошибку, которой нет в таблице, попробуйте:

    1. Поискать решение на официальном форуме Unity (используйте фильтр по тегу ios).
    2. Проверьте логи в Xcode (View → Navigators → Show Report Navigator).
    3. Соберите проект с флагом Development Build и проанализируйте ошибки в Unity Profiler.

    Некоторые ошибки связаны с конкретными плагинами. Например, Firebase или Facebook SDK могут конфликтовать с настройками Unity. В таком случае:

    • Проверьте документацию плагина на предмет совместимости с вашей версией Unity и iOS.
    • Обновите плагин до последней версии.
    • Если проблема остаётся — обратитесь в поддержку плагина (многие разработчики быстро отвечают на GitHub Issues).

    8. Автоматизация сборки: CI/CD для iOS в Unity

    Если вы работаете в команде или часто обновляете игру, ручная сборка становится утомительной. Автоматизировать процесс можно с помощью:

    • 🤖 Unity Cloud Build:
      • Интегрируется с Apple Developer Account.
      • Поддерживает автоматическую загрузку в TestFlight.
      • Платный сервис (бесплатный тариф ограничен 1 сборкой в месяц).
    • 🔄 GitHub Actions:
      • Бесплатно для публичных репозиториев.
      • Требует настройки yaml-конфига для сборки iOS.
      • Пример конфига можно найти в Marketplace.
    • 🏗️ Jenkins или Bitrise:
      • Более гибкие решения для крупных проектов.
      • Позволяют тестировать билд на нескольких устройствах одновременно.

    Для настройки CI/CD потребуется:

    1. Экспортировать сертификаты и Provisioning Profiles в формате .p12 и .mobileprovision.
    2. Зашифровать их и добавить в репозиторий (или использовать Secrets в GitHub Actions).
    3. Написать скрипт для автоматической подстановки сертификатов в Xcode проект.

    Пример базового скрипта для GitHub Actions:

    name: Build iOS
    
    

    on:

    push:

    branches: [ main ]

    jobs:

    build:

    runs-on: macos-latest

    steps:

    - uses: actions/checkout@v2

    - uses: game.ci/unity-builder@v2

    with:

    targetPlatform: iOS

    - name: Decrypt certificates

    run: |

    openssl aes-256-cbc -d -in certs.p12.enc -out certs.p12 -k ${{ secrets.CERTS_PASSWORD }}

    openssl aes-256-cbc -d -in profile.mobileprovision.enc -out profile.mobileprovision -k ${{ secrets.PROFILE_PASSWORD }}

    - name: Build Xcode project

    run: |

    xcodebuild -project Builds/iOS/Unity-iPhone.xcodeproj -scheme Unity-iPhone -configuration Release

    Автоматизация экономит время, но требует начальных затрат на настройку. Если у вас небольшой проект — возможно, проще собирать вручную.

    FAQ: Частые вопросы по сборке iOS в Unity

    Можно ли собирать iOS-билд на Windows?

    Нет. Apple требует, чтобы финальная сборка проходила на Mac с установленным Xcode. Вы можете разрабатывать проект на Windows, но для билда придётся перенести его на Mac или использовать облачные сервисы вроде MacStadium.

    Сколько стоит публикация игры в App Store?

    $99 в год за Apple Developer Program. Это обязательная плата, без неё вы не сможете загрузить игру в TestFlight или App Store. Для предприятий (25+ сотрудников) есть Apple Developer Enterprise Program за $299/год.

    Как уменьшить размер .ipa-файла?

    Несколько способов:

    • Включите Strip Engine Code в Player Settings.
    • Используйте сжатие текстур (ASTC для iOS).
    • Удалите неиспользуемые ассеты с помощью Unity Resource Checker.
    • Для звуков используйте формат .ogg вместо .wav.

    Оптимальный размер для казуальной игры — 50-150 МБ. Если больше 200 МБ, Apple может потребовать объяснений.

    Что делать, если App Store отклонил мою игру?

    Частые причины отклонения:

    • 🔗 Ссылки на внешние платежные системы (нарушение правила 3.1.1).
    • 📱 Неоптимизированный интерфейс для iPad или новых iPhone.
    • 🔞 Отсутствие возрастного рейтинга или неправильная категория.
    • 🛠️ Краши при тестировании (проверяйте логи из TestFlight).

    Apple всегда указывает причину в письме об отклонении. Исправьте проблему и отправьте обновлённую версию. Если не согласны с решением — можно обжаловать через Resolution Center в App Store Connect.

    Как тестировать In-App Purchases без публикации в App Store?

    Используйте Sandbox-режим:

    1. Создайте тестовые аккаунты в App Store Connect (Users and Access → Sandbox Testers).
    2. В коде игры убедитесь, что покупки тестируются в песочнице (для Unity IAP это настраивается автоматически).
    3. Соберите билд и загрузите в TestFlight.
    4. При тестировании покупок используйте тестовый аккаунт (не ваш основной Apple ID!).

    В Sandbox покупки не списывают реальные деньги, но симулируют весь процесс (включая уведомления об успешной оплате).