Как собрать игру на Unity под iOS из Windows
Unity на Windows умеет нацеливаться на iOS, но останавливается на полпути. Он создаёт проект Xcode, и превратить его в приложение может только Xcode на Mac. Здесь показано, как перенести проект на Mac и собрать архив. Ещё здесь описаны облачные сборки Unity, которым Mac вообще не нужен.
Что Unity делает на Windows, а что требует Mac
На странице Unity про настройку iOS сказано, что Xcode есть только для macOS. Так что если на вашем компьютере нет macOS, собрать приложение локально нельзя. Unity собирает iOS в два шага. Сначала Unity создаёт проект Xcode, потом Xcode собирает из него приложение.
На Windows вы получаете только первый шаг. Опция Run in Xcode видна, только когда Unity работает на macOS. Второй шаг делает настоящую работу. По документации Unity, там Xcode запускает IL2CPP, который компилирует C++ из ваших скриптов в libGameAssembly.a.
Шаг 1: экспорт проекта Xcode на Windows
- Добавьте модуль iOS Build Support к своему редактору в Unity Hub.
- Откройте File, затем Build Profiles, и сделайте iOS активной платформой.
- Нажмите Build и выберите пустую папку, например Builds/iOS.
В папке лежит Unity-iPhone.xcodeproj. Документация Unity описывает внутри две цели. Unity-iPhone это тонкий запускающий слой, а UnityFramework содержит среду выполнения и ваш код. Не трогайте папки Data и Libraries, потому что Unity обновляет их при каждой сборке.
Шаг 2: копирование на Mac
В Windows есть tar начиная с Windows 10 build 17063. Клиент scp входит в OpenSSH for Windows, необязательный компонент начиная с build 1809. Если scp нет, добавьте OpenSSH Client в разделе Optional features. Упакуйте папку, скопируйте её через Tailscale и распакуйте на Mac:
cd Builds tar -czf ios-build.tgz iOS scp ios-build.tgz you@your-mac:~/ ssh you@your-mac "mkdir -p ~/MyGame && tar -xzf ~/ios-build.tgz -C ~/MyGame"
Из Linux или WSL rsync отправляет только то, что изменилось с прошлого копирования. Это помогает после мелких правок в большой игре.
rsync -az --delete Builds/iOS/ you@your-mac:~/MyGame/iOS/
Git тоже подходит, но полный экспорт большой и меняется при каждой сборке. Большинство команд копируют экспорт, а git оставляют для проекта Unity.
Шаг 3: архив на Mac
Можно открыть .xcodeproj в Xcode через экран Mac. Выберите схему Unity-iPhone и Any iOS Device, затем Product, затем Archive. Или оставайтесь в терминале по SSH. Сначала посмотрите список целей и схем:
cd ~/MyGame/iOS xcodebuild -list -project Unity-iPhone.xcodeproj
Потом соберите архив со схемой запускающего слоя. CODE_SIGNING_ALLOWED=NO делает тестовый архив без сертификата. Это доказывает, что проект компилируется.
xcodebuild -project Unity-iPhone.xcodeproj -scheme Unity-iPhone \ -configuration Release -destination 'generic/platform=iOS' \ -archivePath build/Game.xcarchive archive \ CODE_SIGNING_ALLOWED=NO
Чтобы выпустить игру, уберите этот флаг и подпишите сборку своей командой. Потом экспортируйте через -exportArchive и ExportOptions.plist с методом app-store-connect. В нашем руководстве по публикации есть все команды подписи и загрузки.
Некоторые игры используют External Dependency Manager от Google для SDK под iOS. Он создаёт Podfile и запускает CocoaPods после сборки. Если в экспорте есть Podfile, выполните pod install на Mac. Потом собирайте .xcworkspace вместо .xcodeproj. CocoaPods заранее не установлен, поставьте его командой brew install cocoapods.
Что мы проверили, а что нет
Unity не запускается в CI без лицензии, поэтому настоящую игру на Unity мы не экспортировали. Вместо этого мы проверили половину на Mac на замещающем проекте той же формы: цель с запускающим приложением и цель с фреймворком. 19 октября 2026 года раннер GitHub macos-26 собрал его архив в Xcode 26.6. Потом раннер Windows упаковал его через tar из Windows. Второй Mac распаковал эту копию и снова собрал архив.
Xcode 26.6
Build version 17F113
Schemes:
Game-iPhone
GameFramework
** BUILD SUCCEEDED **
** ARCHIVE SUCCEEDED **
scp.exe C:\Windows\System32\OpenSSH\scp.exe
OpenSSH_for_Windows_9.5p2, LibreSSL 3.8.2
** ARCHIVE SUCCEEDED **Настоящая игра собирается гораздо дольше, потому что Mac компилирует весь код IL2CPP. Если сборка падает с Permission denied на файле .sh, при копировании пропал бит исполнения. Выполните chmod +x для этого файла и соберите снова.
Облачный вариант: Unity Build Automation
Документация Unity советует Build Automation всем, у кого нет Mac. Она собирает игру на серверах Unity. С 1 марта 2026 года Unity включает 100 минут сборки на Mac в месяц. Дальше стандартная машина Mac стоит $0.07 за минуту сборки, по статье Unity о платежах DevOps.
Кому не стоит арендовать для этого Mac
- Несколько сборок в месяц. Бесплатных 100 минут на Mac в Unity Build Automation может хватить, и Mac вообще не нужен.
- Сборка на каждый коммит. Сервис CI или свой раннер macOS подходит лучше, чем копировать папки руками.
- Работа с iOS каждый день. Если вы работаете на Mac каждый день, купить свой за год может выйти дешевле.
Когда подходит арендованный Mac
Некоторые проблемы требуют открытого Xcode. Ошибки подписи, ошибки линковки плагинов и сбои в симуляторе проще исправить руками. Суточный доступ MacRun это выделенный Mac mini на M6 за $15, а неделя стоит $59. Xcode 27.1 стоит по умолчанию, Xcode 26.6 тоже установлен. Вы подключаетесь из Windows через Tailscale и любой VNC-клиент.
Когда доступ заканчивается, Mac очищается. До этого скачайте .ipa и отправьте изменения в репозиторий. На настоящий iPhone отправляйте сборку через TestFlight, потому что удалённый Mac не видит телефон, подключённый к вашему PC. Наше руководство по сборке iOS-приложений на Windows сравнивает Unity с другими движками.
Частые вопросы
Может ли Unity собрать iOS-приложение на Windows?
+
Только наполовину. Unity на Windows создаёт проект Xcode. В документации Unity сказано, что Xcode есть только для macOS, поэтому само приложение собирается на Mac или в Unity Build Automation.
Как собрать проект Xcode из Unity в командной строке?
+
На Mac выполните xcodebuild -list, чтобы увидеть схемы. Потом выполните xcodebuild archive со схемой Unity-iPhone и общим назначением iOS. Экспортируйте архив через -exportArchive, чтобы получить .ipa.
Какая версия Xcode нужна Unity?
+
Документация Unity 6.6 рекомендует Xcode 16 или новее и поддерживает iOS 15 и выше. На Mac от MacRun по умолчанию стоит Xcode 27.1, и Xcode 26.6 тоже установлен.
Сколько стоит Unity Build Automation для iOS?
+
Статья Unity о платежах DevOps, действующая с 1 марта 2026 года, включает 100 минут сборки на Mac в месяц. Дальше стандартная машина Mac стоит $0.07 за минуту сборки.
Как скопировать сборку Unity для iOS с Windows на Mac?
+
Упакуйте папку экспорта через tar, который есть в Windows начиная с Windows 10 build 17063. Скопируйте её через scp и распакуйте на Mac. Из Linux или WSL rsync отправляет только изменения.
Можно ли проверить сборку Unity для iOS на iPhone с удалённого Mac?
+
Не по USB, потому что удалённый Mac не видит телефон, подключённый к вашему PC. Загрузите сборку в TestFlight и поставьте её на телефон оттуда.