Стабильный 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, индексы, модули и результаты тестов.
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-тесты на новой платформе.
Проверьте, подходит ли ваш 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, профиля или цепочки подписи.
Шаг 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 не отображается, возможны несколько причин:
- runtime ещё не скачан;
- загрузка прервалась;
- компонент установлен для другой версии Xcode;
- Simulator не завершил регистрацию компонента;
- в Beta присутствует известная проблема, из-за которой устройство не показывается в интерфейсе.
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: проверьте цепочку сборки, подписи и автоматизацию
Минимальный тест перед полноценной регрессией должен подтвердить четыре вещи:
- зависимости проекта разрешаются;
- выбран правильный Xcode;
- тестовая цель компилируется;
- приложение запускается на 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.
Как выбрать между двумя Xcode на одном Mac и отдельной средой
На одном Mac двойная установка быстрее, если вы работаете один, тест длится недолго и вам нужен доступ к подключённому устройству. Но она требует дисциплины: любой скрипт, плагин, кэш или глобальный выбор инструментов может обратиться не к той версии.
Отдельный Mac полезнее, когда среда должна жить дольше одного тестового цикла, использоваться несколькими людьми или восстанавливаться после неудачного эксперимента. Особенно это заметно при проверке нескольких веток, параллельных Simulator-прогонов и сохранении воспроизводимого окружения.
| Критерий | Две версии на основном Mac | Отдельный Mac для Beta |
|---|---|---|
| Скорость начала теста | Высокая, если система уже подходит | Зависит от готовности среды |
| Риск для рабочего окружения | Средний: пути и кэши нужно контролировать | Ниже при полной изоляции |
| Работа с физическим iPhone | Удобнее, устройства уже рядом | Нужно отдельно организовать доступ |
| Совместная работа | Ограничена одним пользователем | Удобнее для команды и очереди тестов |
| Параллельные проверки | Возможны, но повышают риск путаницы | Проще разделять проекты и логи |
| Сохранение Beta-состояния | Зависит от локальной дисциплины | Можно поддерживать отдельный образ среды |
| Откат | Нужно вручную вернуть developer directory и компоненты | Достаточно закрыть или удалить отдельную среду |
| Оценка для короткой проверки одному разработчику | 4/5 | 3/5 |
| Оценка для команды и длительной регрессии | 2/5 | 5/5 |
Если тестирование должно быть командным, удалённым или повторяемым, сравните его с отдельной арендованной средой через условия аренды Mac. Не переносите в решение непроверенные обещания о конкретной конфигурации или сроке доставки: эти параметры нужно подтверждать перед началом проекта.
Перед завершением теста выполните обратную проверку
Откат — это не удаление Beta-приложения одним движением. Сначала сохраните результаты:
git status
xcodebuild -version
xcodebuild -showsdks
xcrun simctl list runtimes
Затем выполните проверку в таком порядке:
- Переключите developer directory на стабильный Xcode:
sudo xcode-select --switch /Applications/Xcode.app
- Убедитесь, что путь и версия изменились:
xcode-select --print-path
xcodebuild -version
- Откройте стабильный проект и соберите рабочую схему.
- Запустите существующие тесты на привычном Simulator runtime.
- Проверьте архивирование, если проект готовится к TestFlight или внутреннему распространению.
- Только после этого отключайте или удаляйте ненужный iOS 27 runtime.
- Удаляйте 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-тестом, отдельная среда обычно лучше соответствует риску и сроку работы.