XVM: Управление версиями Xcode без головной боли | Xcode Version Manager
Опубликовано 05 октября 2025 AntonSeagull — 1 min
XVM: Когда выходит новый Xcode, всё идёт наперекосяк
Сегодня расскажу вам о утилите XVM (Xcode Version Manager) и почему она должна быть в арсенале каждого iOS-разработчика.
Проблема, которая знакома каждому
Вы знаете этот момент, когда Apple выпускает новый Xcode, а у вас в проекте всё ещё используется старая версия iOS SDK? Или когда клиент просит собрать проект на Xcode 15.4, а у вас уже стоит 16.2?
В этот момент начинается классическая головная боль:
- Скачиваешь нужную версию Xcode (8+ гигабайт, спасибо Apple)
- Переименовываешь текущий Xcode в
Xcode-16.2.app
- Переименовываешь новый в
Xcode.app
- Запускаешь
sudo xcode-select --switch /Applications/Xcode.app
- Ждёшь, пока Xcode переиндексирует проекты
- Молишься, чтобы ничего не сломалось
А через неделю нужно переключиться обратно, и весь этот цирк повторяется. Знакомо? Тогда читайте дальше.
Решение: XVM
XVM — это простая утилита командной строки, которая автоматизирует весь этот процесс. Один раз настроил несколько версий Xcode, и теперь переключаешься между ними одной командой.
Что умеет XVM:
- Показывает все установленные версии Xcode —
xvm list
- Показывает текущую активную версию —
xvm current
- Переключается между версиями —
sudo xvm switch 15.4
- Режим предварительного просмотра —
xvm switch 15.4 --dry-run
- Двуязычный интерфейс — работает на русском и английском
Установка
Быстрая установка (рекомендуется):
curl -sSL https://raw.githubusercontent.com/AntonSeagull/xcode-version-manager/main/install-xvm.sh | bash
Ручная установка:
- Скачайте последний бинарник из релизов
- Сделайте исполняемым:
chmod +x xvm-darwin-amd64
(илиxvm-darwin-arm64
для Apple Silicon) - Переместите в PATH:
sudo mv xvm-darwin-amd64 /usr/local/bin/xvm
Как это работает
XVM управляет версиями Xcode очень элегантно:
- Переименовывает текущий активный Xcode (обычно
/Applications/Xcode.app
) в версионное имя (например,Xcode-16.2.app
) - Переименовывает целевой Xcode (например,
Xcode-15.4.app
) в/Applications/Xcode.app
- Обновляет xcode-select для указания на новую активную версию
Всё просто и понятно. Никакой магии, только здравый смысл.
Примеры использования
# Посмотреть все версии
xvm list
# Активная / Active: /Applications/Xcode.app (16.2)
#
# Найдено / Found in /Applications:
# * /Applications/Xcode.app (16.2)
# /Applications/Xcode-15.4.app (15.4)
# /Applications/Xcode-14.3.1.app (14.3.1)
# Переключиться на Xcode 15.4
sudo xvm switch 15.4
# Предварительный просмотр переключения
xvm switch 14.3.1 --dry-run
Настройка нескольких версий Xcode
- Скачайте версии Xcode с Apple Developer Downloads
- Установите каждую версию в
/Applications/
с версионным именем:Xcode-16.2.app
Xcode-15.4.app
Xcode-14.3.1.app
- Используйте XVM для переключения между ними
Зачем это нужно?
Для команды разработки:
- Все работают на одинаковых версиях Xcode
- Легко переключаться между проектами с разными требованиями
- Меньше "у меня работает, а у тебя нет"
Для CI/CD:
- Можно тестировать на разных версиях Xcode
- Автоматизировать переключение версий в скриптах
Для поддержки legacy проектов:
- Старые проекты, которые не компилируются на новых версиях
- Клиенты, которые требуют конкретную версию Xcode
Требования
- macOS (протестировано на macOS 10.15+)
- Несколько установок Xcode в директории
/Applications/
- Права администратора для переключения версий (требуется sudo)
Заключение
XVM решает реальную проблему, с которой сталкивается каждый iOS-разработчик. Больше никаких танцев с бубном при переключении версий Xcode. Одна команда — и готово.
Попробуйте сами и дайте знать, если что-то не работает. Исходный код открыт, баги репортим в GitHub Issues.
P.S. Если у вас есть идеи по улучшению или вы хотите добавить новые функции — welcome to contribute! 🚀