Руководство

Собираем iOS-приложение из Windows, фреймворк за фреймворком

Приложение на Flutter, React Native, Unity, Godot или MAUI можно писать на Windows. Только сборка под iOS требует Mac. Все эти инструменты отдают последний шаг Xcode. На этой странице перечислено, что нужно запустить на Mac для каждого фреймворка. Там же показано, как загрузить результат.

Что требует Mac в каждом фреймворке

Вот что пишет документация каждого проекта. Мы читали её 18 октября 2026 года.

  • Flutter: в руководстве по релизу для iOS сказано, что нужен Xcode и устройство на macOS. Код на Dart и сборки для Android могут оставаться на Windows или Linux.
  • React Native: в руководстве по App Store релизная сборка делается в Xcode. Работа с JavaScript и тесты Jest идут на любой системе.
  • Expo: EAS Build собирает iOS на машинах с macOS в облаке Expo, так что свой Mac может вообще не понадобиться.
  • Unity: редактор создаёт проект Xcode, а Xcode собирает из него приложение. По словам Unity, для локальной сборки под iOS нужна macOS.
  • Godot: в документации сказано, что экспорт для iOS делается только с компьютера на macOS с установленным Xcode. Так что на Mac переезжает даже экспорт.
  • .NET MAUI: Visual Studio на Windows подключается к Mac по SSH, а Mac компилирует и подписывает приложение.

Общий случай описан в двух прежних руководствах. Прочитайте публикацию без Mac про API-ключи, подпись и TestFlight. Прочитайте Xcode на Windows про удалённый экран и клавиатуру. Здесь мы говорим только о командах.

Перед началом: аккаунт и подпись

  • Нужно платное членство в Apple Developer Program. Оно стоит 99 USD в год.
  • Создайте запись приложения в App Store Connect. Это работает из любого браузера.
  • Добавьте свой Apple Account в Xcode на Mac, затем выберите команду в разделе Signing and Capabilities.
  • Оставьте включённым Automatically manage signing. Тогда Xcode сам создаст сертификат и профиль.

Flutter: flutter build ipa

Установите Flutter на Mac и склонируйте туда репозиторий. Затем запустите одну команду в папке проекта:

flutter build ipa

По документации Flutter, она создаёт .xcarchive в build/ios/archive и .ipa в build/ios/ipa. Версию задают флаги --build-name и --build-number. Flutter описывает три способа загрузить результат. Можно перетащить .ipa в приложение Transporter от Apple на Mac. Можно открыть архив в Xcode и нажать Distribute App. Или можно загрузить из терминала с ключом App Store Connect API:

xcrun altool --upload-app --type ios -f build/ios/ipa/*.ipa \
  --apiKey your_api_key --apiIssuer your_issuer_id

React Native: архив в Xcode

Руководство React Native делает релиз в окне Xcode. Сначала установите pods, затем откройте workspace:

cd ios
bundle exec pod install
open MyApp.xcworkspace
  • В Product, Scheme, Edit Scheme выберите для Run конфигурацию сборки Release.
  • Выберите устройство Any iOS Device (arm64), затем Product, затем Archive.
  • В окне архива нажмите Distribute App, затем App Store Connect, затем Upload.

После этого сборка появится в App Store Connect в разделе TestFlight. Чтобы выпускать релиз из терминала, используйте xcodebuild archive и -exportArchive с флагами из нашего руководства по публикации. Полный процесс для Windows и Linux описан в статье сборка React Native под iOS без Mac.

С Expo можно собирать без Mac. Запустите это из Windows, и сборка пройдёт на раннерах macOS в облаке Expo:

eas build --platform ios

Mac всё равно нужен, если вам нужен симулятор или отладчик Xcode.

Unity: сборка на Windows, архив на Mac

В Build Settings выберите iOS и нажмите Build. Unity создаст папку с проектом Xcode. Пункт Run in Xcode есть только на macOS, поэтому на Windows вы на этом останавливаетесь. Скопируйте папку на Mac по SSH:

scp -r Builds/iOS you@your-mac:~/MyGame-iOS

На Mac откройте .xcodeproj внутри этой папки. Выберите схему Unity-iPhone. Это цель запуска, которая запускает UnityFramework. Выберите устройство Any iOS Device, затем Product, затем Archive. Дальше распространяйте его из окна Organizer, как любое другое iOS-приложение.

Большая игра даёт большую папку, так что время копирования зависит от скорости вашей отдачи. У Unity есть и Build Automation, которая собирает игру в облаке Unity.

Godot: экспорт на Mac

Экспорт Godot для iOS работает только на macOS. Установите на Mac Godot и шаблоны экспорта, затем откройте там свой проект.

  • Откройте Project, затем Export, нажмите Add и выберите iOS.
  • Заполните App Store Team ID и Bundle Identifier. Без них экспорт не работает.
  • Team ID это код из 10 символов, а не ваше имя, как его показывает Xcode.
  • Нажмите Export Project и выберите пустую папку для файлов.
  • Откройте созданный .xcodeproj, затем выберите Product, затем Archive.

.NET MAUI: подключите Visual Studio к Mac

Функция Pair to Mac от Microsoft выполняет сборки на Mac по SSH, поэтому Remote Login должен быть включён. Xcode нужно установить вручную и один раз открыть. Ещё Microsoft просит установить Mono, а на Apple silicon и Rosetta. В Visual Studio откройте Tools, iOS, Pair to Mac. Если Mac нет в списке, добавьте его по адресу.

Публиковать можно и из командной строки Windows. Это пример Microsoft для Visual Studio 2026, только без пароля:

dotnet publish -f net8.0-ios -c Release -p:ArchiveOnBuild=true \
  -p:RuntimeIdentifier=ios-arm64 \
  -p:CodesignKey="Apple Distribution: John Smith (AY2GDE9QM7)" \
  -p:CodesignProvision="MyMauiApp" \
  -p:ServerAddress={macOS build host IP address} \
  -p:ServerUser={macOS username} -p:TcpPort=58181 \
  -p:_DotNetRootRemoteDirectory=/Users/{macOS username}/Library/Caches/maui/PairToMac/SDKs/dotnet/

Замените net8.0-ios на свой целевой фреймворк. Без флага пароля Pair to Mac использует SSH-ключи, сохранённые при первом подключении. Подписанный .ipa появится в bin\Release на вашем PC. Для загрузки Microsoft советует Transporter.

Загрузка: что Apple предлагает сегодня

На странице загрузки Apple названы четыре инструмента: Xcode, Swift Playground, altool и Transporter. Там сказано, что Transporter и altool поддерживают все типы целей. Дата отключения altool не указана. Transporter это приложение для macOS, но его версия для командной строки работает и на Windows, с некоторыми ограничениями. Эти ограничения описаны в нашем руководстве по публикации.

Облачная сборка или арендованный Mac?

Начните с того, что вам нужно. Если .ipa нужен лишь время от времени, облачной сборки может хватить. Codemagic, EAS Build и раннеры macOS в GitHub Actions умеют собирать iOS-приложения. Одна такая настройка показана в нашем руководстве по GitHub Actions.

Арендованный Mac подходит для других задач. Вам может понадобиться симулятор, чтобы проверить экран, или отладчик Xcode для разбора сбоя. Ошибку подписи проще исправить в окне Xcode. А некоторые команды хотят видеть каждый шаг релиза своими глазами.

День релиза на Mac за $15

Многие приложения выходят всего несколько раз в год. Для этого дневной пропуск MacRun стоит $15, оплата один раз, без продления. Неделя стоит $59. Этого хватит, чтобы успеть исправить что-то после проверки. Если вы выпускаете обновления каждые несколько недель, месячные тарифы начинаются от $139.

  • Вы получаете выделенный Mac mini, а не общий, с правами администратора.
  • Xcode 27.1 выбран по умолчанию, а для старых проектов установлен Xcode 26.6.
  • Симулятор iOS 27.1, включая iPhone Duo, уже установлен.
  • Mac готов к работе меньше чем за 5 минут.
  • SSH и демонстрация экрана работают через частную сеть Tailscale с Windows или Linux.

Когда пропуск закончится, Mac очищается. До этого отправьте код в репозиторий и скопируйте файлы подписи.

Частые вопросы

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

+

Писать его на Windows можно. Для сборки под iOS нужен Xcode, а он работает только на macOS. Для этого шага используйте арендованный Mac, CI-раннер или облачный сервис сборки.

Может ли Flutter собрать iOS на Windows?

+

Нет. В руководстве Flutter по релизу для iOS сказано, что для этого шага нужно устройство на macOS. Запустите flutter build ipa на Mac, затем загрузите .ipa через Transporter, altool или Xcode.

Можно ли собрать React Native приложение под iOS без Mac?

+

С Expo можно, потому что EAS Build собирает iOS на машинах с macOS в облаке Expo. Без Expo нужен Mac, чтобы создать архив приложения в Xcode.

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

+

Unity создаёт проект Xcode. Потом Xcode собирает приложение, а Xcode работает только на macOS. Скопируйте проект на Mac и сделайте архив там, или используйте Unity Build Automation.

Как загрузить iOS-приложение с Windows?

+

Инструмент командной строки Transporter от Apple работает на Windows. Но ему нужен файл, который Xcode экспортирует вместе со сборкой. Так что сама сборка всё равно делается на Mac.

Похожие руководства