На Runner выбран нужный Xcode, но целевого iOS Simulator нет в списке доступных устройств — сборка остановлена до запуска тестов.
Быстрое решение: загрузите среду выполнения на Mac с доступом к сети поддерживаемой командой xcodebuild, перенесите пакет на целевой Mac и импортируйте его. Затем проверьте результат именно с выбранным Xcode и запустите проектный тест: успешный импорт ещё не означает, что macOS CI готов.
Для инженеров CI, обслуживающих Runner за межсетевым экраном или с ограниченным доступом к сети.
Для команд, которые распространяют компоненты по нескольким Mac и должны учитывать версии Xcode.
Для разработчиков, которым нужен iOS Simulator на удалённом Mac и подтверждение работоспособности через тест проекта.
Последнее обновление: 29 октября 2026 года. Сведения сверены с публикацией Apple о Xcode 27.2 RC, примечаниями к выпуску, документацией по системным требованиям Xcode и загрузке дополнительных компонентов.
Сначала определите, что именно мешает запуску
Не готовьте офлайн-пакет, пока не выяснена причина сбоя. Отсутствующая среда выполнения — только один из возможных вариантов. Похожее сообщение может появиться, когда Runner использует другой экземпляр Xcode, устройство недоступно для выбранного набора компонентов или проект не собирается для нужной цели.
Разделите диагностику на три вопроса:
- Установлена ли нужная среда симулятора на целевом Mac?
- Может ли выбранный Xcode распознать её и предоставить подходящее устройство?
- Проходит ли сборка и тестирование именно проекта, который должен работать в CI?
Для первичной проверки соберите данные с самого Runner:
xcodebuild -version
xcode-select -p
xcrun simctl list runtimes
xcrun simctl list devices available
Команды покажут версию активного Xcode, путь к выбранным инструментам и сведения о средах и доступных устройствах. Если среда отсутствует в выводе или нужного устройства нет в перечне, это ещё не доказывает, что скачанный пакет несовместим. Сначала нужно проверить, какой Xcode выбран, а затем повторить перечисление сред и устройств. Для параметров xcodebuild сверяйтесь с официальным справочником командной строки Xcode.
Зачем скачивать симуляторный пакет заранее? Это полезно, если целевой Runner не может получить компонент напрямую, а отдельный Mac с доступом к сети может подготовить его для переноса. Такой процесс устраняет зависимость от загрузки на каждом ограниченном хосте, но не заменяет импорт, проверку совместимости и тестирование на месте.
Когда офлайн-перенос не решит проблему? Если тест падает из-за ошибки проекта, недостающих секретов, неверного назначения сборки или проблем с запуском приложения, установка среды сама по себе не устранит причину. Сначала прочитайте лог сборки и убедитесь, что сбой действительно связан с отсутствующей средой либо устройством симулятора.
Xcode 27.2 RC: офлайн-установка среды выполнения симулятора
Apple указывает Xcode 27.2 RC в списке выпусков. Наличие этой записи не гарантирует, что любой интересующий компонент можно загрузить для любой комбинации инструментов. Проверяйте актуальные варианты средствами установленного Xcode и сопоставляйте их с примечаниями именно к этому выпуску.
Как подготовить пакет для iOS Simulator? На подключённом к сети Mac сначала выберите экземпляр Xcode, который будет использоваться для подготовки. Затем посмотрите параметры загрузки в локальном справочнике xcodebuild -help. Если справка выбранной версии поддерживает нужные операции, команда загрузки выглядит так:
xcodebuild -downloadPlatform iOS -exportPath "/путь/к/каталогу"
Путь в примере замените на каталог, доступный пользователю, от имени которого выполняется загрузка. Не считайте пример гарантией доступности конкретной среды или версии: результат зависит от того, что предлагает выбранный Xcode и поддерживает ли он нужную комбинацию. Документация Apple описывает загрузку и импорт дополнительных компонентов, но перед запуском сверяйте форму команды с локальной справкой и актуальной инструкцией Apple.
После завершения проверьте, что в указанном каталоге появился ожидаемый результат загрузки. Сохраните его в контролируемом месте, доступном для переноса. Не переименовывайте и не распаковывайте содержимое, если это не требуется официальным процессом: произвольная обработка может усложнить разбор ошибок импорта.
Перед передачей запишите источник пакета, использованный Xcode и сведения о том, завершилась ли загрузка без ошибки. Это не формальность: если Runner не увидит среду, команде понадобится отличить повреждённый или неполный пакет от несовпадения версий и ошибки выбора инструментов.
Для CI-инженера: перенос и импорт на Runner
На целевом Mac выберите Xcode, под которым должен выполняться CI. Проверьте, что путь, показанный xcode-select -p, соответствует ожидаемому экземпляру. Если на машине установлено несколько Xcode, не полагайтесь на имя приложения в интерфейсе или на то, какой инструмент использовался последним: фактическое состояние командной строки имеет значение.
Перенесите подготовленный пакет способом, разрешённым политиками вашей инфраструктуры. Это может быть внутреннее хранилище артефактов или контролируемая передача между хостами. Учитывайте права чтения, свободное место и ограничения на перемещение компонентов. Не предполагайте, что пакет можно без изменений использовать на любом Mac, если ещё не проверены выбранный Xcode и обнаружение среды на целевом хосте.
Для импорта используйте предусмотренную Apple операцию с xcodebuild, если она доступна в выбранной версии:
xcodebuild -importPlatform "/путь/к/пакету"
Подставьте фактический путь, который соответствует результату загрузки. Поскольку поддерживаемые параметры могут зависеть от версии Xcode, сначала проверьте xcodebuild -help и официальную документацию по загрузке и установке компонентов. Если команда завершается ошибкой, сохраните полный вывод и не переходите сразу к повторной установке: сначала подтвердите, что импорт выполняется тем Xcode, который предназначен для Runner.
После импорта заново выполните xcrun simctl list runtimes и xcrun simctl list devices available. Затем проверьте, что нужный вариант среды отображается и доступно подходящее устройство. Сведения о том, как запустить приложение в симуляторе, приведены в документации Apple по запуску на виртуальных и физических устройствах.
Как проверить, что среда уже годится для CI? Не ограничивайтесь наличием компонента в каталоге или строкой в списке сред. Запустите тот же процесс сборки и тестирования, который использует Runner: с тем же Xcode, проектом, схемой и конфигурацией. Приёмка — это успешная работа целевого теста, а не только завершение команды импорта.
Для владельца парка Mac: повторное использование без ложной гарантии
Предварительная загрузка может уменьшить число повторных обращений к внешней сети: один подготовленный пакет можно доставить нескольким хостам, если каждый из них отдельно прошёл проверку. Но это не универсальный кэш для любых выпусков Xcode и не подтверждение совместимости со всеми конфигурациями.
Если Xcode обновился, поменялся выбранный экземпляр инструментов или изменились требования к компонентам, повторно проверьте фактическое состояние Runner. Apple публикует системные требования Xcode, а заметки к выпуску описывают особенности конкретной версии. Ни расположение файлов, ни успешный импорт на другом хосте не доказывают, что текущая машина сможет запустить нужный тест.
Можно ли использовать одну среду с разными версиями Xcode? Не принимайте это как данность. Сначала установите, какая версия Xcode активна на каждой машине, затем проверьте, видит ли она импортированную среду и предоставляет ли требуемое устройство. Если вариант отсутствует или помечен как недоступный, сверяйтесь с официальной информацией и результатом команд на целевом хосте, прежде чем менять набор инструментов.
Храните записи по каждой машине отдельно. Минимально полезные поля: источник пакета, версия и путь выбранного Xcode, результат импорта, вывод списка сред и устройств, итог проектной проверки. Такая запись ускоряет восстановление, если один Runner ведёт себя иначе, чем остальные, и не позволяет принять разовое успешное тестирование за обещание общей совместимости.
Командам, которым параллельно нужно выстроить управление версиями Xcode и инструментами, пригодится каталог руководств DebugMac. А перед распределением задач между хостами полезно отдельно проверить, подходит ли вашей схеме удалённый Mac; описание доступного размещения можно посмотреть на странице развёртывания в Силиконовой долине.
Для ответственного за безопасность и эксплуатацию: контролируемая приёмка
Офлайн-доставка добавляет собственные операционные риски. Пакет должен поступить из известного источника, быть передан по разрешённому каналу и импортирован с корректными правами. Компонент, который никто не проверил, не следует автоматически включать в производственный Runner только потому, что его получилось скопировать на диск.
Разделяйте обработку ошибки на этапы:
- Загрузка: проверьте вывод команды и наличие ожидаемого результата.
- Передача: убедитесь, что пакет доставлен в согласованный каталог, а доступ к нему есть у пользователя, выполняющего импорт.
- Выбор инструментов: подтвердите путь активного Xcode и повторите проверку локальной справки.
- Импорт: сохраните полный вывод операции, включая сообщения об ошибках.
- Обнаружение: проверьте списки сред и доступных устройств.
- Проектная приёмка: выполните сборку и тесты, соответствующие реальному заданию Runner.
Если среда не отображается, возвращайтесь к проверке выбранного Xcode и результата импорта. Если среда отображается, но нужного устройства нет, проверьте список доступных устройств и настройки назначения теста. Если устройство запускается, но проект падает, изучайте лог сборки и тестирования: это уже может быть проблема проекта, а не офлайн-доставки.
В журнал изменений окружения фиксируйте не только успешные обновления, но и неудачные попытки с диагностическим выводом. Не удаляйте старые компоненты, пока не подтверждено, что все назначенные Runner используют новый набор и проходят свои проверки. Удаление, выполненное без инвентаризации зависимостей, способно превратить локальную уборку в остановку CI.
Проверка перед вводом Runner в работу
Перед тем как считать окружение готовым, отметьте каждый пункт. Если хотя бы один из пунктов проверки Xcode или проектного теста не выполнен, оставьте Runner вне производственного потока до выяснения причины.
- [ ] Зафиксировано, какой именно Xcode должен обслуживать сборку.
- [ ] На подключённом Mac проверена локальная справка
xcodebuildи доступность требуемой операции. - [ ] Пакет загружен поддерживаемым выбранной версией способом; результат загрузки сохранён для передачи.
- [ ] На целевом Mac выбран ожидаемый Xcode, а путь проверен командой
xcode-select -p. - [ ] Импорт выполнен в соответствии с локальной справкой и документацией Apple.
- [ ] После импорта среда видна в
xcrun simctl list runtimes, а требуемое устройство доступно. - [ ] Целевой проект собран и проверен на Runner с конфигурацией, предназначенной для CI.
- [ ] Источник пакета, выбранный Xcode, итог импорта и результат проверки внесены в журнал изменений.
Где расходятся локальная подготовка и успешный CI
Таблица ниже нужна, чтобы не смешивать разные уровни готовности. Наличие среды отвечает на вопрос о компоненте, а прохождение проекта — на вопрос о пригодности конкретного Runner.
| Проверка | Что она подтверждает | Чего она не подтверждает |
|---|---|---|
| Пакет загружен на подключённом Mac | Компонент удалось получить выбранным инструментом | Что он импортируется на целевой машине |
| Импорт завершился без ошибки | Операция установки прошла на этом хосте | Что целевой Xcode предоставляет подходящее устройство |
| Среда видна в списке | Xcode обнаруживает среду выполнения | Что проект собирается и тестируется |
| Устройство доступно | Симулятор можно выбрать для запуска | Что схема, тесты и настройки CI корректны |
| Проектный тест прошёл на Runner | Проверен реальный сценарий этой конфигурации | Что другие Runner и версии Xcode ведут себя так же |
Диагностика: перенос пакета или повторная загрузка
Повторная загрузка может быть уместна, если результат передачи неполный или происхождение пакета нельзя подтвердить. Если загрузка завершилась, но цель не видит среду, сначала перепроверьте активный Xcode, локальный вывод xcodebuild -help, сообщения импорта и списки сред с устройств. Повторять всю процедуру без локализации причины — значит затруднить сравнение результатов и расходовать время на ту же неопределённость.
| Наблюдение на Runner | Что проверить в первую очередь | Следующее действие |
|---|---|---|
| Среды нет в списке | Выбранный Xcode и результат импорта | Сверить команду, путь пакета и вывод ошибки |
| Среда отображается, устройства нет | Перечень доступных устройств и цель теста | Проверить, подходит ли выбранная среда для нужного устройства |
| Устройство доступно, сборка падает | Схему, параметры сборки и журнал проекта | Диагностировать ошибку проекта отдельно от установки |
| Импорт не проходит | Права, путь, содержимое передачи и локальную справку | Сохранить лог и повторить процедуру после проверки пакета |
| На разных Mac разные результаты | Выбранный Xcode и записи по каждому хосту | Сравнить фактические состояния, а не только имя пакета |
Когда перейти от ручной загрузки к удалённому Mac
Если проект постоянно требует симуляторных тестов на macOS, ручной перенос остаётся лишь способом подготовить компонент, а не заменой управляемого окружения. У схемы с локальными Windows- или Linux-машинами есть реальные ограничения: они не запускают macOS-инструменты для симулятора, зависят от отдельного Mac для загрузки и проверки, а состояние Xcode и среды приходится согласовывать между узлами. Собственный Mac решает вопрос доступа к оборудованию, но требует покупки, обслуживания и контроля обновлений.
Поэтому сначала завершите проверку версии, импорта и проектного теста. Если после этого команде нужна временная или постоянно доступная macOS-среда для CI, можно изучить варианты удалённого Mac от DebugMac и оценить их под свою схему работы. Для разовой проверки может быть достаточно подготовленного собственного Mac; если же тесты должны выполняться на удалённом хосте, выбирайте среду после проверки доступа, выбранного Xcode и требований к проекту.
Читайте также
Подготовьте удалённый Mac для сборок и тестов
DebugMac предоставляет выделенный физический Mac Mini M4 для работы с проектами, сборки и проверки среды симулятора.
