Стабильный Xcode нужен для рабочих сборок, а Xcode 27 Beta 5 требует отдельной проверки iOS 27 — при этом установка второй версии не должна превращать основной Mac в экспериментальную систему.

Самое быстрое решение: оставьте стабильный Xcode для повседневной работы, установите Beta в отдельный каталог, переключайте developer directory через DEVELOPER_DIR, а Simulator runtime, DerivedData и Archives контролируйте раздельно. На macOS 27 переходить не обязательно: по официальным заметкам Xcode 27 Beta требует macOS Tahoe 26.4 или новее. (developer.apple.com)

Эта инструкция предназначена для независимых разработчиков, которым нужно проверить приложение на iOS 27 и сохранить рабочий проект на стабильном SDK. Она также пригодится iOS-командам, тестировщикам и тем, кто не хочет устанавливать крупные Beta-компоненты на основной компьютер.

Последнее обновление: 11 августа 2026 года. Данные проверены по официальным материалам Apple Developer, включая страницу выпусков, заметки Xcode 27 Beta и документацию по командным инструментам и Simulator. Конкретные исправления Beta 5 следует перепроверять после каждого нового выпуска.

Сначала разделите четыре разных объекта

Главная причина неудачных установок — смешение понятий. «Вторая версия Xcode» — это не один переключатель, а несколько независимых слоёв:

  • приложение Xcode — файл вроде Xcode.app или Xcode-beta.app;
  • активный developer directory, который используют xcrun, xcodebuild, simctl и другие инструменты;
  • SDK и платформенные компоненты, включая iOS 27;
  • Simulator runtime и созданные на его основе виртуальные устройства;
  • пользовательские данные проекта: DerivedData, Archives, индексы, модули и результаты тестов.
Две версии приложения могут находиться рядом, но командная строка всё равно будет использовать только один активный developer directory. Apple прямо указывает, что xcode-select --print-path показывает путь к выбранному каталогу разработчика, а переменная DEVELOPER_DIR позволяет временно переопределить его без прав администратора. ([developer.apple.com](https://developer.apple.com/documentation/xcode/configuring-command-line-tools-settings?changes=_8&utm_source=openai))

Отсюда следует важное различие:

  • не переходить на macOS 27 — возможно, если текущая система не ниже macOS Tahoe 26.4;
  • не обновлять вообще никакие системные компоненты — уже нельзя, если ваш Mac работает на более старой версии macOS;
  • не устанавливать iOS 27 Simulator runtime — можно, но тогда вы не сможете полноценно выполнить Simulator-тесты на новой платформе.
Xcode 27 Beta включает Swift 6.4 и SDK для iOS 27, iPadOS 27, tvOS 27, macOS 27 и visionOS 27. Для запуска требуется Mac с macOS Tahoe 26.4 или новее. Эти требования относятся к Xcode, а не означают автоматическую необходимость установки macOS 27 Beta. ([developer.apple.com](https://developer.apple.com/documentation/xcode-release-notes/xcode-27-release-notes?changes=l_2_3&language=objc&utm_source=openai))

Проверьте, подходит ли ваш Mac до установки Beta

Не начинайте с загрузки большого приложения. Сначала проверьте четыре условия.

1. Версия macOS

Откройте «Системные настройки» и посмотрите номер macOS. Затем сопоставьте его с требованием Xcode 27 Beta — macOS Tahoe 26.4 или новее. Если текущая версия ниже, установка Xcode 27 Beta не решит проблему: сначала потребуется обновить хост-систему или использовать другой Mac.

Для команды это особенно важно, если основной компьютер закреплён за стабильным производственным циклом. Обновление macOS может повлиять не только на Xcode, но и на драйверы, виртуальные машины, VPN, корпоративные агенты, USB-устройства и локальные инструменты сборки.

2. Архитектура процессора

Apple Silicon Mac обычно является предпочтительной средой для новых SDK и современных инструментов Apple. Однако сам факт наличия Apple Silicon не отменяет требования к macOS и свободному месту. Если вы используете старый Intel Mac, не делайте вывод о совместимости по одному названию модели: проверяйте официальное требование конкретной версии Xcode и список поддерживаемых компонентов.

В рабочих задачах полезно отдельно фиксировать:

uname -m
sw_vers
system_profiler SPHardwareDataType

Команды не меняют конфигурацию. Они помогают сохранить в отчёте архитектуру, версию macOS и идентификатор оборудования перед началом теста.

3. Свободное место и учётные права

Xcode, SDK, Simulator runtime, индексы и архивы занимают разные области хранения. Даже если само приложение запускается, сборка может завершиться ошибкой из-за нехватки места при создании DerivedData или распаковке runtime.

Не удаляйте сертификаты, provisioning profiles и все кэши заранее. Сначала определите, где именно возникла проблема:

  • Xcode не запускается;
  • не найден SDK;
  • runtime не отображается;
  • проект не разрешает подпись;
  • скрипт использует другую версию инструментов;
  • сборка падает после смены SDK.
Удаление всего каталога разработчика без диагностики часто уничтожает полезные логи и усложняет восстановление.

4. Что именно вы хотите протестировать

В iOS 27 Simulator удобно проверять интерфейс, навигацию, состояние приложения, часть системных API, локализацию, размеры экранов и базовые сценарии регрессии. Но Simulator не заменяет физическое устройство во всех случаях.

Отдельный Mac и реальный iPhone потребуются, если вы проверяете:

  • поведение камеры, Bluetooth, NFC или других физических компонентов;
  • энергопотребление и тепловое поведение;
  • взаимодействие с аксессуарами;
  • push-уведомления и фоновые режимы в условиях реального устройства;
  • установку подписанного приложения на зарегистрированный телефон;
  • проблемы, зависящие от Developer Mode, профиля или цепочки подписи.
Для установки приложения на физическое устройство Xcode использует подключённый Mac, зарегистрированный аккаунт и соответствующие профили. В официальной документации также указано, что для запуска IPA-based приложения на iOS-устройстве требуется включить Developer Mode. ([developer.apple.com](https://developer.apple.com/documentation/xcode/distributing-your-app-to-registered-devices?changes=_1&utm_source=openai))

Шаг 1: установите приложения с разными именами и путями

Стабильную версию не переименовывайте в Beta и не заменяйте её поверх. Безопасная схема выглядит так:

/Applications/Xcode.app
/Applications/Xcode-beta.app

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

ls -ld /Applications/Xcode*.app

Затем отдельно запросите версию каждой установки:

/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -version

/Applications/Xcode-beta.app/Contents/Developer/usr/bin/xcodebuild -version

Ожидаемый формат вывода:

Xcode <версия>
Build version <номер сборки>

Не подставляйте номер сборки из чужого отчёта: для Beta он имеет значение только вместе с датой загрузки и конкретной записью в Apple Developer Releases. Страница Apple Developer Releases используется как источник актуальных выпусков и ссылок на соответствующие заметки. (developer.apple.com)

Здесь важно не только название приложения. Внутри каждого .app находится собственный каталог Contents/Developer, и именно его следует использовать при точной диагностике.

Шаг 2: выберите developer directory, а не просто откройте нужное окно

Открытие Xcode-beta.app мышью не гарантирует, что терминал, скрипт или CI будут использовать Beta.

Посмотрите текущий выбор:

xcode-select --print-path
xcodebuild -version

Для постоянного переключения на Beta Apple документирует команду:

sudo xcode-select --switch /Applications/Xcode-beta.app

Для возврата к стабильной версии:

sudo xcode-select --switch /Applications/Xcode.app

После каждой операции повторяйте проверку:

xcode-select --print-path
xcodebuild -version

Если вы не хотите менять системный выбор для всех процессов, используйте временный вариант:

env DEVELOPER_DIR="/Applications/Xcode-beta.app" xcodebuild -version

Для сборки проекта:

env DEVELOPER_DIR="/Applications/Xcode-beta.app" \
xcodebuild \
  -workspace MyApp.xcworkspace \
  -scheme MyApp \
  -destination 'platform=iOS Simulator,name=iPhone' \
  build

В этом режиме стабильный Xcode остаётся выбранным по умолчанию, а Beta применяется только к конкретной команде. Для автоматизации это обычно безопаснее, чем постоянно менять системный xcode-select.

В скрипте CI сохраняйте путь к Xcode в одной переменной:

export DEVELOPER_DIR="/Applications/Xcode-beta.app"
xcode-select --print-path
xcodebuild -version
xcodebuild -showsdks

Так в логе будет видно, какой Xcode и какие SDK действительно использовались. Проверяйте не только GUI: ситуация «Beta открыта, но терминал собирает стабильным Xcode» встречается именно из-за отсутствия такой проверки.

Шаг 3: отделите iOS 27 Simulator от самого приложения Xcode

Simulator runtime — это отдельный пакет операционной системы, который загружается виртуальным устройством. Несколько типов устройств могут использовать один и тот же runtime, поэтому удаление виртуального iPhone не обязательно удаляет сам iOS 27 runtime. Apple описывает runtime именно как пакет ОС, который применяется разными Simulator-устройствами. (developer.apple.com)

Проверяйте доступные runtime из терминала:

xcrun simctl list runtimes
xcrun simctl list devices available

Если команда запускается для Beta, задайте нужный developer directory:

env DEVELOPER_DIR="/Applications/Xcode-beta.app" \
xcrun simctl list runtimes

Если iOS 27 не отображается, возможны несколько причин:

  1. runtime ещё не скачан;
  2. загрузка прервалась;
  3. компонент установлен для другой версии Xcode;
  4. Simulator не завершил регистрацию компонента;
  5. в Beta присутствует известная проблема, из-за которой устройство не показывается в интерфейсе.
Компоненты можно установить через Xcode → Settings → Components. Apple также поддерживает загрузку платформ командой xcodebuild -downloadPlatform, а импорт ранее скачанного runtime — через -importPlatform. ([developer.apple.com](https://developer.apple.com/documentation/xcode/downloading-and-installing-additional-xcode-components?changes=_1&utm_source=openai))

Создавайте отдельное виртуальное устройство с понятным именем, например:

iPhone — iOS 27 Beta 5 — regression

Не называйте его просто «iPhone Test». Через несколько недель вы уже не будете помнить, к какому runtime оно привязано.

В заметках Xcode 27 Beta Apple отдельно указывает проблему, при которой из-за timing issue устройства Simulator могут не появляться в Device Hub. Поэтому перед перезапуском сервисов или повторной установкой компонентов сначала проверьте актуальные Release Notes для вашей Beta. (developer.apple.com)

Шаг 4: не смешивайте DerivedData, Archives и данные Simulator

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

Для Beta задайте отдельный DerivedData:

env DEVELOPER_DIR="/Applications/Xcode-beta.app" \
xcodebuild \
  -workspace MyApp.xcworkspace \
  -scheme MyApp \
  -derivedDataPath "$HOME/Library/Developer/Xcode/DerivedData/MyApp-Beta" \
  build

Стабильную сборку направьте в другой каталог:

xcodebuild \
  -workspace MyApp.xcworkspace \
  -scheme MyApp \
  -derivedDataPath "$HOME/Library/Developer/Xcode/DerivedData/MyApp-Stable" \
  build

Это не обязательное условие для каждого локального запуска, но оно снижает риск, что индексы и промежуточные модули одной версии будут ошибочно использованы другой.

Archives также лучше разделять логически. Перед сохранением архива записывайте:

xcodebuild -version
xcodebuild -showsdks
git rev-parse HEAD

Не удаляйте все архивы при первой ошибке подписи. Архив может быть единственным доказательством того, какой SDK и какой commit использовались для конкретной проверки.

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

Шаг 5: проверьте цепочку сборки, подписи и автоматизацию

Минимальный тест перед полноценной регрессией должен подтвердить четыре вещи:

  1. зависимости проекта разрешаются;
  2. выбран правильный Xcode;
  3. тестовая цель компилируется;
  4. приложение запускается на iOS 27 Simulator.
Пример последовательности:
export DEVELOPER_DIR="/Applications/Xcode-beta.app"

xcode-select --print-path
xcodebuild -version
xcodebuild -showsdks

xcodebuild \
  -resolvePackageDependencies \
  -workspace MyApp.xcworkspace \
  -scheme MyApp

xcodebuild \
  -workspace MyApp.xcworkspace \
  -scheme MyApp \
  -destination 'platform=iOS Simulator,name=iPhone' \
  build-for-testing

xcodebuild \
  -workspace MyApp.xcworkspace \
  -scheme MyApp \
  -destination 'platform=iOS Simulator,name=iPhone' \
  test-without-building

Название устройства и схема должны соответствовать вашему проекту. Не копируйте destination из случайного примера: сначала получите список доступных устройств через xcrun simctl list devices available.

Если Beta-сборка не проходит подписью, сначала разделите уровни причины:

  • аккаунт разработчика;
  • связка ключей;
  • сертификат;
  • provisioning profile;
  • bundle identifier;
  • SDK и platform support;
  • настройки проекта;
  • выбранный Xcode.
Удаление сертификатов и профилей — не универсальный способ исправления. Оно может создать новую проблему, особенно если рабочая стабильная сборка использует тот же аккаунт или профиль. Для Simulator часто можно начать с проверки схемы, deployment target и destination, не затрагивая физическую подпись.

Как выбрать между двумя Xcode на одном Mac и отдельной средой

На одном Mac двойная установка быстрее, если вы работаете один, тест длится недолго и вам нужен доступ к подключённому устройству. Но она требует дисциплины: любой скрипт, плагин, кэш или глобальный выбор инструментов может обратиться не к той версии.

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

<
КритерийДве версии на основном MacОтдельный Mac для Beta
Скорость начала тестаВысокая, если система уже подходитЗависит от готовности среды
Риск для рабочего окруженияСредний: пути и кэши нужно контролироватьНиже при полной изоляции
Работа с физическим iPhoneУдобнее, устройства уже рядомНужно отдельно организовать доступ
Совместная работаОграничена одним пользователемУдобнее для команды и очереди тестов
Параллельные проверкиВозможны, но повышают риск путаницыПроще разделять проекты и логи
Сохранение Beta-состоянияЗависит от локальной дисциплиныМожно поддерживать отдельный образ среды
ОткатНужно вручную вернуть developer directory и компонентыДостаточно закрыть или удалить отдельную среду
Оценка для короткой проверки одному разработчику4/53/5
Оценка для команды и длительной регрессии2/55/5
Если ваш основной Mac уже соответствует macOS Tahoe 26.4 или новее, свободного места достаточно, а тест ограничен несколькими Simulator-сценариями, начинайте с локальной изоляции. Если нужен физический девайс, но нет подходящего Mac, проверьте доступность [руководства по работе с Mac-средой](https://macgpu.com/ru/m4-rukovodstvo.html) и заранее определите, кто будет подключать устройство и хранить подписи.

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

Перед завершением теста выполните обратную проверку

Откат — это не удаление Beta-приложения одним движением. Сначала сохраните результаты:

git status
xcodebuild -version
xcodebuild -showsdks
xcrun simctl list runtimes

Затем выполните проверку в таком порядке:

  1. Переключите developer directory на стабильный Xcode:
   sudo xcode-select --switch /Applications/Xcode.app
  1. Убедитесь, что путь и версия изменились:
   xcode-select --print-path
   xcodebuild -version
  1. Откройте стабильный проект и соберите рабочую схему.
  1. Запустите существующие тесты на привычном Simulator runtime.
  1. Проверьте архивирование, если проект готовится к TestFlight или внутреннему распространению.
  1. Только после этого отключайте или удаляйте ненужный iOS 27 runtime.
  1. Удаляйте Beta-приложение лишь после того, как убедились, что стабильный Xcode, скрипты и CI больше его не вызывают.
Важная контрольная точка — терминал по умолчанию. Если после теста xcode-select --print-path всё ещё показывает Beta, следующий рабочий commit может быть собран не тем SDK. Для CI предпочтительнее явный DEVELOPER_DIR, чтобы результат не зависел от глобального состояния машины.

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

Можно ли держать Xcode 27 Beta 5 рядом со стабильным Xcode?

Да, если приложения установлены в отдельные каталоги и имеют различимые имена. Ошибки обычно возникают не из-за совместного хранения .app, а из-за неверно выбранного developer directory, общих кэшей, Simulator runtime и скриптов, которые молча используют системный путь. После установки проверяйте каждую версию отдельным вызовом xcodebuild -version.

Нужно ли переходить на macOS 27 для тестирования iOS 27?

Нет, это не является обязательным условием. Официальное требование Xcode 27 Beta — macOS Tahoe 26.4 или новее. Поэтому вы можете оставить стабильную версию macOS, если она соответствует минимальному уровню. При этом отдельные возможности, физические устройства и дополнительные компоненты всё равно нужно проверять по актуальным заметкам Beta.

Как переключать версии Xcode через xcode-select?

Постоянный выбор выполняется через sudo xcode-select --switch /путь/к/Xcode.app. Для одной команды используйте DEVELOPER_DIR, что не меняет глобальную настройку. После операции всегда выполняйте xcode-select --print-path и xcodebuild -version. Для CI лучше хранить путь к Xcode в переменной окружения и записывать его в лог сборки.

Что выбрать для Beta-тестирования: основной Mac или отдельный Mac?

Основной Mac подходит для короткой индивидуальной проверки, особенно если требуется подключить физический iPhone. Отдельный Mac рациональнее для команды, параллельных тестов, сохранения Beta-состояния и снижения риска для стабильных сертификатов, кэшей и рабочих проектов. При необходимости временной изолированной среды можно изучить доступные варианты MACGPU.

Когда локальная схема уже не лучший вариант

Две версии Xcode на основном Mac хороши только при коротком и контролируемом цикле. Если тестирование растягивается, появляются несколько разработчиков, параллельные ветки, повторные прогоны или необходимость сохранить точное окружение, локальная схема начинает проигрывать: она зависит от ручного xcode-select, оставляет крупные компоненты на рабочем диске и повышает вероятность ошибочного запуска стабильного проекта через Beta или наоборот.

В такой ситуации аренда удалённого Mac через MACGPU может быть практичнее: отдельную среду проще выделить под iOS 27, не менять основной компьютер и освободить её после завершения проверки. Перед выбором уточните реальную доступность Xcode 27 Beta 5, способ подключения, права пользователя, хранение исходников и порядок удаления данных. Если вам нужен именно физический USB-доступ или длительная стабильная нагрузка каждый день, собственный Mac может оказаться разумнее; если же задача временная, командная или связана с изолированным Beta-тестом, отдельная среда обычно лучше соответствует риску и сроку работы.