Unity 6.3 LTS iOS-сборка: как упаковать в Windows в 2026 году?
Руководство предназначено для разработчиков, которые создают Unity-проект в Windows, но должны завершить выпуск iOS-версии в macOS. В статье разделены экспорт проекта, компиляция Xcode, подпись, Archive и загрузка в TestFlight, а также показано, когда достаточно временного удалённого Mac, а когда лучше поддерживать постоянную сборочную среду.
Проект в Windows уже экспортирован в Xcode, но IPA для TestFlight получить не удаётся.
Быстрое решение: Windows оставьте для разработки и экспорта Xcode-проекта, а Archive, кодовую подпись и загрузку в App Store Connect выполняйте на macOS. При редких релизах передавайте готовый проект на временный удалённый Mac; при частых публикациях синхронизируйте исходники с постоянным удалённым Mac и автоматизируйте экспорт Unity и сборку Xcode.
Последняя проверка: 29 августа 2026 года. Данные сверены с документацией Unity по выпуску Unity 6, процессу iOS-сборки и системным требованиям, а также с руководствами Apple по распространению приложений и загрузке сборок.
Эта статья предназначена:
- независимым разработчикам, которые ведут основную работу в Windows и впервые готовят Unity-игру или приложение для iOS;
- небольшим командам, которым нужно регулярно получать сборки для TestFlight без покупки и обслуживания отдельного Mac;
- владельцам Unity-проектов, переводящим ручной экспорт в повторяемый удалённый процесс.
01 До начала: разделите экспорт Unity и выпуск iOS
Главная ошибка в таком проекте — считать экспорт Xcode-проекта готовой iOS-сборкой. Unity описывает процесс как последовательность из генерации проекта и последующей сборки приложения средствами Xcode. Официальная схема Unity для iOS-сборки прямо разделяет эти этапы.
Windows может использоваться для разработки, импорта ассетов, запуска тестов Unity и генерации Xcode-проекта. Однако финальный этап требует macOS, поскольку именно Xcode компилирует нативную часть, применяет подпись и формирует архив для распространения. Описание Unity о способе построения iOS-приложений следует воспринимать как ограничение архитектуры процесса, а не как недостаток конкретного проекта.
До передачи проекта на удалённую машину подготовьте:
- действующую учётную запись Apple Developer с правами, достаточными для создания или использования идентификатора приложения, сертификатов и профилей;
- точный Bundle ID, Team ID и название записи приложения в App Store Connect;
- версионирование исходников, включая
Packages/manifest.json,Packages/packages-lock.json, настройки проекта и нативные плагины; - безопасный способ передачи сертификата с закрытым ключом и профиля подписи;
- список переменных, которые не должны попадать в репозиторий: пароли, токены, API Key и содержимое закрытых ключей.
Регистрация учётной записи здесь не рассматривается: задача этого руководства — не оформление доступа, а контроль границ между Windows, Unity, Xcode и App Store Connect.
02 В первый час зафиксируйте версии и окружение
Unity 6.3 LTS — обозначение долгосрочно поддерживаемой ветки, а выпуск редактора 6000.3.0f1 опубликован на официальной странице релиза Unity. Это не означает, что любая комбинация редактора, модулей и Xcode будет взаимозаменяемой: требования к поддерживаемой версии Xcode, SDK и плагинам могут меняться вместе с обновлениями Apple и Unity.
Сначала зафиксируйте рабочую пару, а не обновляйте всё до последней доступной версии:
- версию Unity 6.3 LTS и точный номер редактора;
- наличие модуля
iOS Build Supportв редакторе Windows; - архитектуру удалённого Mac и установленную версию Xcode;
- путь, который используется командами
xcodebuildиxcrun; - целевую конфигурацию
Release, имя схемы и папку для архива; - состояние пакетов Unity и версии CocoaPods, если проект использует pods;
- версии нативных SDK, плагинов и скриптов
PostProcessBuild.
Примечания к выпуску Unity 6000.3.0f1 помогают проверить саму ветку Unity 6.3, а системные требования Unity 6 — не перепутать требования редактора Windows с требованиями финального macOS-этапа.
Затем создайте минимальный пустой проект и проверьте цепочку отдельно от коммерческой игры. В Windows экспортируйте простой Xcode-проект. На удалённом Mac откройте его, выберите схему, выполните команду проверки Xcode и только затем переходите к исходному проекту. Такой тест не доказывает работоспособность всех плагинов, но быстро отделяет проблему доступа к Xcode от проблемы конкретной игры.
xcode-select --print-path
xcodebuild -version
xcodebuild -list -project "/ПУТЬ/К/EXPORTED_PROJECT/Unity-iPhone.xcodeproj"
Пути, названия проекта и версии в примере замените на реальные значения. Не встраивайте их в скрипт без проверки: пробелы в путях, неправильная схема или выбранный каталог Xcode часто выглядят как ошибка Unity.
03 Первый экспорт: передайте проект или исходный код
Выбор способа зависит не от удобства, а от частоты сборок и состава проекта.
| Критерий | Передача готового Xcode-проекта | Экспорт Unity на удалённом Mac |
|---|---|---|
| Когда использовать | Редкие релизы и разовая публикация | Частые сборки, TestFlight и CI |
| Что передаётся | Весь результат экспорта вместе с библиотеками и настройками | Исходники Unity, пакеты, плагины и параметры экспорта |
| Сильная сторона | На удалённой машине не требуется полный Unity-процесс экспорта | Процесс легче повторить после изменения исходников |
| Основной риск | Неполная передача каталога или ручные изменения проекта | Несовпадение редактора, модулей и зависимостей |
| Граница совместимости | Нативные плагины должны уже корректно попасть в экспорт | Все плагины и PostProcessBuild должны работать в удалённом Unity |
| Подход к восстановлению | Повторно передать чистый экспорт | Повторно запустить отдельный этап из исходников |
Вариант A: экспорт в Windows и передача Xcode-проекта
Этот путь подходит, когда релиз выполняется время от времени и проект не меняется между экспортом и подписью. В Unity выберите платформу iOS, дождитесь завершения импорта и создайте новый каталог Xcode-проекта. Передавайте не отдельный файл .xcodeproj, а весь каталог результата.
Проверьте, что в архив попали:
- каталог проекта Unity и связанные библиотеки;
- сгенерированные исходники и данные IL2CPP;
- фреймворки, статические библиотеки и встроенные пакеты;
- файлы конфигурации, созданные скриптами постобработки;
- ресурсы нативных плагинов;
- символы и настройки, необходимые для диагностики сбоя.
После копирования на удалённый Mac не редактируйте одну и ту же сгенерированную настройку параллельно в Windows и Xcode. При следующем экспорте Unity может перезаписать ручное изменение. Если исправление действительно нужно, закрепите его в настройках Unity или в PostProcessBuild, а не только в открытом проекте Xcode.
Вариант B: исходники на удалённом Mac
При частых публикациях лучше передавать исходники через систему контроля версий, а не пересылать каждый сгенерированный каталог. На удалённом Mac устанавливаются совместимые Unity Editor и iOS Build Support, после чего экспорт запускается в командной строке или через заранее проверенный скрипт.
Пример вызова должен содержать явные заполнители:
"/ПУТЬ/К/UNITY" \
-batchmode \
-quit \
-projectPath "/ПУТЬ/К/UNITY_PROJECT" \
-executeMethod <ИМЯ_КЛАССА>.<ИМЯ_МЕТОДА> \
-buildTarget iOS \
-logFile "/ПУТЬ/К/LOGS/unity-export.log"
Класс и метод экспорта должны существовать в проекте. Не подставляйте в команду настоящий пароль, сертификат или API Key. Секреты передавайте через защищённое хранилище среды сборки, а не через аргументы командной строки, которые могут попасть в историю процессов или логи.
Полный Unity Editor на удалённом Mac нужен, если именно эта машина должна заново экспортировать проект из исходников. Для пути с уже созданным Xcode-проектом полный редактор обычно не является обязательным этапом: Mac должен иметь совместимый Xcode, проектные зависимости и средства подписи. Но это не отменяет необходимости проверить нативные плагины и скрипты, которые могли выполняться только во время экспорта.
04 Первый Archive: сначала компиляция, затем подпись
Не начинайте с сертификатов, если сам экспортированный проект не компилируется. Последовательность диагностики должна быть такой:
- Откройте проект или workspace на удалённом Mac.
- Убедитесь, что выбрана нужная схема и конфигурация.
- Проверьте
Team, Bundle ID и минимальную версию iOS. - Выполните сборку без распространения и сохраните полный лог.
- Исправьте ошибки CocoaPods, нативных библиотек и
PostProcessBuild. - Только после успешной компиляции настройте подпись и создайте Archive.
Apple в руководстве по подготовке приложения к распространению рассматривает идентификатор приложения, команду разработчика, подпись и настройки распространения как отдельные элементы подготовки. Поэтому ошибка в Bundle ID не должна маскироваться заменой сертификата, а конфликт entitlement — повторным экспортом Unity.
Проверьте следующие поля:
PRODUCT_BUNDLE_IDENTIFIERсовпадает с зарегистрированным идентификатором;- выбран правильный
Team; - entitlements соответствуют реально включённым возможностям;
- provisioning profile предназначен для этого приложения и типа распространения;
- сертификат содержит закрытый ключ и доступен процессу Xcode;
- нативные плагины не подключают несовместимые фреймворки;
- CocoaPods устанавливаются из зафиксированного состояния зависимостей.
Затем выполните Archive через Xcode или автоматизированную команду. Результатом должен быть архив, который Xcode может проверить перед экспортом. Документация Apple о тестировании release-сборки полезна для отделения ошибок конфигурации от ошибок подписи и поведения приложения в релизном режиме.
Сохраните название схемы, параметры экспорта, commit исходников и лог. Это не бюрократия: без этих данных повторная сборка после изменения плагина превращается в ручное угадывание.
05 Первый TestFlight: разделите четыре статуса
После создания Archive не называйте проект опубликованным автоматически. Здесь есть как минимум четыре независимых результата:
- Unity успешно экспортировал Xcode-проект.
- Xcode успешно собрал и подписал Archive.
- Archive успешно прошёл проверку и был передан в App Store Connect.
- App Store Connect завершил обработку загруженной сборки.
Для передачи используйте Organizer в Xcode или предусмотренный Apple инструмент загрузки. Инструкция Apple по распространению тестовых и релизных сборок описывает этапы проверки и загрузки, а справка по загрузке сборок в App Store Connect помогает сверить допустимый способ передачи.
До запуска загрузки проверьте:
- запись приложения уже создана в App Store Connect;
- Bundle ID связан с правильной записью;
- версия и build number увеличены по правилам проекта;
- выбран нужный тип распространения;
- команда и сертификат относятся к одной Apple Developer-команде.
Если сборка не появилась сразу, не создавайте новый архив вслепую и не меняйте сертификат без причины. Сначала проверьте статусы загрузки и обработки сборок, журнал доставки и сообщения в App Store Connect. Ошибка передачи, ожидание обработки и отклонение проверки требуют разных действий.
06 Первая неделя: превратите ручной процесс в восстановимый
После первого успешного TestFlight-сценария разделите pipeline на независимые стадии:
- экспорт Unity;
- установка или восстановление зависимостей;
- компиляция Xcode;
- Archive;
- подпись и экспорт распространяемого пакета;
- загрузка;
- проверка статуса обработки.
Каждая стадия должна иметь собственный лог, код завершения и понятный каталог результата. Не удаляйте все данные после ошибки: промежуточный лог и архив часто позволяют понять, на каком именно переходе произошёл сбой. Одновременно не храните бесконечный кэш без политики очистки, поскольку старые библиотеки могут скрыть проблему несовместимости.
Проведите три имитации восстановления:
- изменение исходного скрипта или сцены;
- обновление нативного плагина;
- недоступность сертификата или API Key.
В первом случае должна повториться генерация проекта. Во втором — зависимость должна быть установлена явно и зафиксирована. В третьем — процесс должен завершиться контролируемой ошибкой без вывода секрета в лог.
Для постоянной среды документируйте, где находятся исходники, какой Unity Editor запускается, какой путь выбран через xcode-select, как очищаются Derived Data и где сохраняются архивы. Материалы Unity по iOS Build Automation следует сверять при изменении версии редактора, потому что старые предположения о поддержке Xcode нельзя считать постоянным правилом.
Чек-лист перед первым реальным релизом
- [ ] Unity 6.3 LTS и номер редактора записаны.
- [ ]
iOS Build Supportпроверен в нужной установке Unity. - [ ] Версия Xcode на удалённом Mac зафиксирована и проверена по актуальным требованиям.
- [ ] Экспорт пустого проекта проходит до этапа Xcode.
- [ ] Передан весь каталог Xcode-проекта, а не только файл проекта.
- [ ] Bundle ID, Team ID и запись App Store Connect совпадают.
- [ ] Сертификат импортирован вместе с закрытым ключом.
- [ ] Entitlements и provisioning profile проверены.
- [ ] CocoaPods и нативные плагины воспроизводимо устанавливаются.
- [ ] Archive создаётся без ручного исправления сгенерированных файлов.
- [ ] Логи Unity, Xcode и загрузчика сохраняются отдельно.
- [ ] Ошибка обработки в App Store Connect проверяется по статусу, а не повторной случайной сборкой.
07 Какой удалённый Mac выбрать для этого процесса
Если публикация происходит редко, рационально арендовать удалённый Mac только на период экспорта, Archive и загрузки. Сначала завершите работу в Windows, затем передайте чистый Xcode-проект и оплатите среду на срок, достаточный для проверки всей цепочки. Такой вариант не требует держать отдельную машину включённой между релизами.
Если TestFlight-сборки создаются постоянно, временная передача каталога начинает создавать скрытые расходы: повторное копирование библиотек, ручное восстановление изменений, расхождения между локальным экспортом и удалённой подписью, а также более сложный поиск ошибки в плагине. В этом случае постоянный удалённый Mac с исходниками и автоматизированным экспортом обычно даёт более предсказуемый процесс.
На странице вариантов аренды Mac для удалённой сборки сравните доступные условия с реальной частотой релизов, требуемым временем доступа и необходимостью хранить рабочее окружение. Для команды с распределёнными участниками важны не только вычислительные ресурсы, но и стабильность подключения, права администратора, способ передачи файлов и возможность безопасно удалить секреты после сборки. Если проект обслуживается из азиатского региона, можно отдельно оценить доступный вариант удалённого Mac в Японии, но окончательное решение принимайте по задержке, правилам доступа и тестовой сборке, а не по названию региона.
Windows остаётся удобным местом для Unity-разработки, однако он не закрывает финальную часть iOS-релиза. По сравнению с постоянным локальным Mac ручной экспорт из Windows добавляет передачу больших каталогов, риск потерять нативные библиотеки и зависимость от разовых исправлений в Xcode; отдельный купленный Mac, в свою очередь, требует первоначальных затрат, обновлений и самостоятельного обслуживания. Поэтому для редкого выпуска разумнее сначала проверить реальный проект на временном удалённом Mac, а для регулярного TestFlight выбрать постоянную среду JEXCLOUD и постепенно превратить экспорт, Archive и загрузку в восстанавливаемый процесс. Начните с одного полного цикла — от Unity-экспорта до обработанной сборки в App Store Connect — и только после этого определяйте срок аренды.
Завершите iOS-сборку Unity на удалённом Mac от JEXCLOUD
Подключитесь к удалённому Mac из Windows и выполните компиляцию, подпись и подготовку проекта к выпуску.
Перенесите экспортированный проект Unity в готовую среду macOS без покупки собственного устройства.
Арендовать сейчас