Создание мобильной игры для 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 для финальной сборки.
2. Настройка проекта Unity для iOS
Откройте свой проект в Unity и перейдите в File → Build Settings. Здесь нужно:
- Выбрать платформу iOS и нажать
Switch Platform(это может занять несколько минут). - В разделе
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: отметьте только те, которые действительно нужны (лишние ориентации могут вызвать проблемы с модерацией).
☑️ Проверка настроек перед сборкой
Не забудьте указать уникальный Bundle Identifier в формате com.YourCompany.GameName. Он должен совпадать с тем, что выlater зарегистрируете в Apple Developer Account. Если здесь допустить ошибку, билд не удастся загрузить в TestFlight.
3. Работа с сертификатами и профилями provisioning
Это самый сложный этап для новичков. Apple требует, чтобы каждое приложение было подписано цифровым сертификатом, а устройства для тестирования — зарегистрированы в Apple Developer Portal. Без этого сборка просто не запустится.
Вот пошаговая инструкция:
- Создайте App ID:
- Перейдите в Apple Developer Account →
Certificates, Identifiers & Profiles. - В разделе
Identifiersнажмите+и выберитеApp IDs. - Укажите
Bundle ID(должен совпадать с тем, что в Unity) и название приложения. - Включите нужные
Capabilities(например,Game CenterилиIn-App Purchase).
- Перейдите в Apple Developer Account →
- Сгенерируйте сертификат:
- В разделе
Certificatesвыберите типApple Development(для тестирования) илиApple Distribution(для релиза). - Следуйте инструкциям на экране. Потребуется создать
Certificate Signing Request (CSR)через Keychain Access на Mac.
- В разделе
- В разделе
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, но если вы используете кастомные шейдеры, проверьте их совместимость!
Для тестирования производительности:
- Соберите билд в режиме
Development Build(галочка вBuild Settings). - Подключите iPhone к Mac и запустите игру через Xcode (так вы увидите логи в реальном времени).
- Используйте
Unity Profilerдля анализа загрузки CPU/GPU и памяти.
{
QualitySettings.SetQualityLevel(2, true); // Средние настройки для A11 (iPhone 8/X)
}-->
5. Сборка и тестирование на устройстве
Когда проект настроен, пора собирать первый билд. Вот пошаговая инструкция:
- Подключите iPhone или iPad к Mac через USB (разблокируйте устройство и подтвердите доверие компьютеру).
- В Unity откройте
Build Settingsи нажмитеBuild(илиBuild And Runдля автоматического запуска). - Выберите папку для сохранения
.xcodeproj-файла (например,Builds/iOS). - После сборки 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:
- Соберите билд в режиме
Release(вBuild Settingsснимите галочкуDevelopment Build). - В Xcode выберите
Generic iOS Deviceи архивируйте проект (Product → Archive). - В открывшемся окне нажмите
Distribute App→TestFlight & 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).
Процесс загрузки:
- Архивируйте проект в Xcode (
Product → Archive). - В окне Organizer выберите
Distribute App→App Store Connect. - После загрузки перейдите в App Store Connect, выберите приложение и заполните все поля (включая цену, категорию, возрастной рейтинг).
- Отправьте на ревью. Срок проверки — от 24 часов до 3 дней (иногда дольше).
Внимание! Если ваша игра использует Unity IAP для покупок, убедитесь, что:
- В App Store Connect добавлены все
In-App Purchases(с теми жеProduct ID, что и в коде). - Покупки протестированы в Sandbox (используйте тестовые аккаунты, не основной Apple ID!).
- Отключена опция
Cleared for Saleдо одобрения приложения.
После одобрения вы сможете выпустить игру вручную или настроить автоматический релиз. Не забывайте следить за отзывами и метриками в App Store Connect — Apple может заблокировать приложение, если пользователи жалуются на баги или мошенничество.
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 и плагины до последних версий. |
Если вы видите ошибку, которой нет в таблице, попробуйте:
- Поискать решение на официальном форуме Unity (используйте фильтр по тегу
ios). - Проверьте логи в Xcode (
View → Navigators → Show Report Navigator). - Соберите проект с флагом
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 потребуется:
- Экспортировать сертификаты и
Provisioning Profilesв формате.p12и.mobileprovision. - Зашифровать их и добавить в репозиторий (или использовать Secrets в GitHub Actions).
- Написать скрипт для автоматической подстановки сертификатов в 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-режим:
- Создайте тестовые аккаунты в App Store Connect (
Users and Access → Sandbox Testers). - В коде игры убедитесь, что покупки тестируются в песочнице (для Unity IAP это настраивается автоматически).
- Соберите билд и загрузите в TestFlight.
- При тестировании покупок используйте тестовый аккаунт (не ваш основной Apple ID!).
В Sandbox покупки не списывают реальные деньги, но симулируют весь процесс (включая уведомления об успешной оплате).