Не запускается вопрос не в коде: вы видите проект в симуляторе, но не знаете, какой файл сдавать преподавателю. Быстрое решение: сначала проверьте проект, затем создайте Archive, а после этого экспортируйте результат или загрузите его для TestFlight согласно цели курса.

Эта инструкция для вас, если вы только закончили первый проект на SwiftUI и хотите передать рабочую версию преподавателю или однокурсникам. Она также подходит студентам на Windows или Chromebook, которым нужно завершить сборку через удалённый Mac, и новичкам, которые путают Debug, Archive, экспортируемый файл и TestFlight.

Сначала определите, какой результат вам действительно нужен

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

<
Цель студентаЧто выполнитьЧто получитсяКогда остановиться
Показать работу на урокеНажать Run и запустить проект в симулятореЗапущенное приложение в среде разработкиКогда достаточно демонстрации экрана
Сдать исходный кодСохранить проект, зависимости и инструкциюПапка или архив с исходникамиКогда проверять будут код и структуру проекта
Передать тестовую сборкуСоздать Archive и выбрать распространение для зарегистрированных устройствЭкспортированный файл для разрешённого тестированияКогда тестировщик получил инструкцию и файл
Подготовить TestFlightСоздать Archive и загрузить сборку в App Store ConnectВерсия для бета-тестирования через TestFlightКогда загрузка завершена и версия обрабатывается
Run — это скорее черновик для проверки идеи. Archive — сохранённый результат сборки, который можно использовать дальше для распространения. Официальная документация Apple отдельно описывает подготовку приложения к распространению и работу с архивом в Organizer: [инструкция по подготовке приложения к распространению](https://developer.apple.com/documentation/Xcode/preparing-your-app-for-distribution).

Если в задании написано «прикрепить проект», не тратьте время на публикацию. Если сказано «дать возможность установить приложение», уточните, на каком устройстве и каким способом это должно происходить. Не называйте запуск в симуляторе готовой установкой на iPhone: это разные результаты.

Шаг 1. Подготовьте проект до запуска Archive

Перед упаковкой сохраните рабочее состояние. Сделайте копию проекта или создайте отдельную запись в системе контроля версий. Это нужно не для формальности: исправление настроек подписи иногда сопровождается изменениями, которые затрудняют возврат к версии, уже показанной на занятии.

Проверьте проект в таком порядке:

  1. Откройте нужный файл проекта или рабочую область в Xcode 27.
  2. Убедитесь, что подключены все Swift Package и локальные зависимости.
  3. В верхней панели выберите правильную Scheme — набор правил, определяющий, какой проект и с какими настройками собирается.
  4. Запустите приложение через Run и дождитесь окончания компиляции.
  5. Исправьте ошибки кода, отсутствующие ресурсы и проблемы с зависимостями.
  6. Проверьте имя приложения, Bundle Identifier, номер версии и номер сборки.
  7. Откройте настройки цели и убедитесь, что иконки и необходимые ресурсы входят в проект.
  8. Сохраните изменения и повторно запустите приложение после исправлений.
Bundle Identifier — уникальное имя приложения в системе. Для учебного проекта оно особенно важно: случайное изменение идентификатора может привести к конфликту с уже созданной записью или настройками подписи. Не копируйте чужой идентификатор и не используйте чужие сертификаты.

Scheme можно настроить отдельно для разных вариантов сборки. О том, какие параметры входят в схему и как Xcode использует их при сборке, рассказывает официальное описание Build Scheme.

Важно: успешный запуск в симуляторе подтверждает только то, что текущая конфигурация может запустить приложение в выбранной среде. Он не подтверждает готовность подписи, экспорта, установки на физическое устройство или загрузки в TestFlight.

Как Xcode 27 отличает Run от Archive

Для новичка удобно использовать аналогию с курсовой работой. Run показывает черновик на вашем рабочем столе. Archive создаёт сохранённую версию, которую можно передать на следующий этап — экспорт, тестирование или загрузку.

При обычном Run Xcode может использовать симулятор и отладочную конфигурацию Debug. Такая сборка удобна для просмотра экранов, проверки навигации и поиска ошибок в коде. Она не предназначена автоматически для передачи другому человеку.

Archive требует выбрать устройство общего назначения, а не конкретный симулятор. Названия некоторых элементов интерфейса могут зависеть от версии Xcode и языка среды, поэтому перед выполнением задания проверьте текущие команды в установленном Xcode 27. Общая логика остаётся такой:

  1. Выберите нужную Scheme.
  2. В качестве цели выберите общее устройство или вариант, разрешающий архивирование.
  3. Откройте меню Product.
  4. Выберите Archive.
  5. Дождитесь завершения сборки.
  6. Проверьте, открылся ли Organizer с новым архивом.
Если пункт Archive недоступен, не переходите к случайному изменению сертификатов. Сначала проверьте выбранную цель, активную Scheme и наличие ошибок сборки. Apple перечисляет типичные причины проблем с архивированием в [официальной технической заметке по ошибкам Archive](https://developer.apple.com/documentation/technotes/tn3109-resolving-common-archiving-issues).

Шаг 2. Создайте Archive и проверьте результат

После запуска Archive Xcode собирает приложение и сохраняет результат в Organizer. Этот архив — не обязательно файл, который нужно сразу отправить преподавателю. Это промежуточный пакет, из которого можно выбрать подходящий способ дальнейшего распространения.

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

Проверьте три поля:

  • название приложения соответствует учебному проекту;
  • номер версии совпадает с тем, который вы указали в отчёте;
  • номер сборки не перепутан с номером версии.
Номер версии сообщает пользователю, какую редакцию приложения он устанавливает. Номер сборки помогает отличать внутренние варианты одной версии. Не меняйте их в последний момент без записи нового значения в инструкции для преподавателя. <
Проверка архиваУспешный признакЕсли проверка не пройдена
СборкаOrganizer получил новую запись без ошибкиВернитесь к первой ошибке журнала
SchemeАрхив относится к нужной цели приложенияПроверьте выбранную Scheme и рабочую область
РесурсыВ проект включены иконки и используемые файлыПроверьте Target Membership и имена ресурсов
ИдентификаторBundle Identifier соответствует вашему проектуСверьте настройки цели и записи приложения
ВерсияНомер версии и сборки совпадает с отчётомЗафиксируйте значения до повторного Archive
Не удаляйте удачный архив, пока не проверили экспорт. Если следующий вариант окажется неудачным, сохранённая запись позволит вернуться к рабочей сборке без повторного поиска ошибки.

Шаг 3. Выберите способ экспорта под учебную задачу

В Organizer выберите архив и откройте действие Distribute App. Дальше Xcode предложит варианты, доступность которых зависит от цели, настроек проекта и прав вашей учётной записи разработчика. Не выбирайте публикацию в магазине только потому, что она выглядит как самый «полный» вариант.

Для передачи на зарегистрированные устройства Apple описывает отдельные требования к устройствам и процессу экспорта в документации по распространению на зарегистрированные устройства. Если устройство не зарегистрировано или у учётной записи нет нужных прав, файл может не установиться, даже если Archive создан успешно.

Разделите действия так:

  • Только исходники. Передайте папку проекта, зависимости и короткую инструкцию запуска. Archive в этом случае можно сохранить как резервную копию, но не обязательно отправлять.
  • Тестирование на устройствах. Уточните, зарегистрированы ли устройства тестировщиков. Экспорт выполняйте только после проверки требований к подписи.
  • TestFlight. Сначала должна существовать запись приложения в App Store Connect. Её создание описано в официальной справке по добавлению приложения. После загрузки версия проходит обработку, а тестирование настраивается отдельно.
  • Будущая публикация. Для учебной работы этот путь обычно избыточен. Не создавайте публичную публикацию, если задание этого не требует.
Сертификат — это не универсальный файл для обмена между студентами. Он связан с правами и подписью приложения. В [обзоре типов сертификатов разработчика](https://developer.apple.com/help/account/create-certificates/certificates-overview) указано, для каких задач применяются разные виды сертификатов. Не просите у однокурсника закрытый ключ, не загружайте его в общий чат и не используйте общую учётную запись Apple.

Если собственного Mac нет: рабочая последовательность

Код и материалы можно готовить на Windows или Chromebook, но финальный iOS App нужно открыть, собрать и архивировать в совместимой среде Xcode на настоящем Mac. Удалённое подключение не превращает Windows в Mac и не заменяет Xcode: оно лишь даёт доступ к среде, где выполняется сборка.

Разделите работу на две части.

На своём компьютере:

  1. Сохраните исходники проекта в отдельной папке.
  2. Запишите используемую версию Swift и список зависимостей.
  3. Подготовьте изображения, текст задания и инструкцию для проверяющего.
  4. Создайте резервную копию до передачи проекта.
  5. Проверьте, что в архив не попали пароли, приватные ключи и личные данные.
**На удалённом Mac:**
  1. Подключитесь через удалённый рабочий стол или веб-консоль для графической работы.
  2. Передайте проект безопасным способом.
  3. Откройте его в совместимой версии Xcode 27.
  4. Выполните Run и убедитесь, что проект действительно открывается.
  5. Исправьте только подтверждённые ошибки зависимостей или настроек.
  6. Запустите Archive.
  7. Сохраните архив и экспортированный результат отдельно.
  8. Передайте себе только нужные файлы и удалите временные секреты из рабочей среды.
SSH полезен для проверки файлов и выполнения коротких контролируемых команд, но через SSH нельзя заменить графические действия Xcode, связанные с Organizer, выбором способа распространения и визуальной проверкой проекта. Если вы впервые арендуете удалённый Mac, сначала изучите [руководство по работе с Mac в удалённом формате](https://macgpu.com/ru/m4-rukovodstvo.html), а затем сравните [варианты аренды Mac для учебной задачи](https://macgpu.com/ru/m4-tseny-arendy.html). Проведите короткую проверку: открыть проект — запустить сборку — создать Archive.

При выборе среды отдельно учитывайте совместимость версии macOS и Xcode. Актуальные ограничения нужно сверять с официальной страницей системных требований Xcode, а не с сообщением пользователя на форуме.

Финальная приёмка перед отправкой преподавателю

Сдача считается подготовленной только тогда, когда другой человек понимает, что именно ему открыть и как проверить. Сам факт, что приложение запускается на вашем компьютере, ещё не доказывает, что однокурсник сможет его установить.

  • [ ] Сохранена копия исходного проекта до изменений подписи.
  • [ ] Выбрана правильная Scheme.
  • [ ] Проект запускается в симуляторе без известных ошибок.
  • [ ] Bundle Identifier записан в отчёте и не перепутан с названием приложения.
  • [ ] Номер версии и номер сборки проверены.
  • [ ] Archive создан и виден в Organizer.
  • [ ] Экспортированный файл соответствует цели курса.
  • [ ] Для TestFlight создана запись приложения, если этот путь действительно нужен.
  • [ ] Для установки на устройство проверены регистрация устройства и права учётной записи.
  • [ ] Исходный код, ресурсы и инструкция переданы отдельно от временных файлов.
  • [ ] В инструкции указано, требуется ли реальный iPhone, симулятор или TestFlight.
  • [ ] Преподавателю сообщены ограничения: например, «проверено только в симуляторе».
Официальное описание TestFlight объясняет, что это отдельный процесс бета-тестирования, а не синоним локального запуска: [обзор TestFlight](https://developer.apple.com/help/app-store-connect/test-a-beta-version/testflight-overview/). Поэтому в отчёте используйте точную формулировку: «проверено в симуляторе», «экспортировано для зарегистрированного устройства» или «загружено в TestFlight».

Частые вопросы новичков

Как получить архив iOS-проекта в Xcode 27?

Выберите нужную Scheme, цель общего назначения и откройте Product → Archive. До этого проект должен успешно собираться, а выбранная цель не должна быть симулятором. После завершения проверьте запись в Organizer. Если Archive завершается ошибкой, сохраните журнал и исправляйте первую содержательную ошибку, а не повторяйте команду без изменения условий.

Как передать SwiftUI-проект преподавателю для проверки?

Сначала выясните, нужен ли исходный код или устанавливаемая версия. Для исходников передайте проект, зависимости и инструкцию запуска. Для установки потребуется Archive и подходящий способ распространения, а иногда — зарегистрированное устройство и права разработчика. Не включайте в архив сертификаты, закрытые ключи, пароли и чужие учётные данные.

Можно ли собрать iOS App без собственного Mac?

Подготовить SwiftUI-код и материалы можно на Windows или Chromebook, но финальная iOS-сборка и Archive выполняются в совместимом Xcode на настоящем Mac. Удалённый Mac подходит для временной учебной задачи: подключитесь графически, откройте проект, выполните Run, затем Archive. Перед арендой проверьте совместимость версии Xcode и способ передачи файлов.

Чем Archive отличается от обычного запуска Run?

Run запускает текущую отладочную сборку в симуляторе или на подключённом устройстве. Archive сохраняет отдельный результат сборки в Organizer и подготавливает его к экспорту или распространению. Поэтому проект может успешно запускаться через Run, но не проходить Archive из-за Bundle Identifier, подписи, ресурсов или настроек выбранной цели.

Что нужно сделать студенту для сдачи учебного проекта?

Определите требуемый результат, сохраните исходники, проверьте Scheme и запустите проект. Если нужна устанавливаемая версия, создайте Archive, проверьте номер версии, выберите экспорт и опишите способ установки. Если нужен TestFlight, отдельно подготовьте запись приложения и загрузку. В любом случае приложите инструкцию, чтобы преподаватель не принимал симуляторный запуск за готовую установку.

Если сравнивать текущий подход с покупкой собственного Mac, у покупки есть три очевидных минуса для разовой учебной задачи: заметные первоначальные расходы, необходимость самостоятельно поддерживать совместимость macOS и Xcode, а также простой устройства после сдачи проекта. Локальный компьютер лучше для постоянной разработки и работы с физическими интерфейсами, но для одной контрольной или первого Archive это может быть избыточно.

Если проект уже открывается, компилируется и создаёт Archive, вы можете рассмотреть аренду удалённого Mac через MACGPU: это позволяет временно получить настоящую macOS-среду с Xcode, не передавая кому-либо свои сертификаты и не устанавливая сомнительные сборки. Перед оплатой проверьте способ подключения, правила хранения файлов и соответствие среды требованиям вашего проекта. Для постоянной тяжёлой разработки или работы с подключёнными устройствами собственный Mac всё же будет практичнее.