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?

В этот момент начинается классическая головная боль:

  1. Скачиваешь нужную версию Xcode (8+ гигабайт, спасибо Apple)
  2. Переименовываешь текущий Xcode в Xcode-16.2.app
  3. Переименовываешь новый в Xcode.app
  4. Запускаешь sudo xcode-select --switch /Applications/Xcode.app
  5. Ждёшь, пока Xcode переиндексирует проекты
  6. Молишься, чтобы ничего не сломалось

А через неделю нужно переключиться обратно, и весь этот цирк повторяется. Знакомо? Тогда читайте дальше.

Решение: XVM

XVM — это простая утилита командной строки, которая автоматизирует весь этот процесс. Один раз настроил несколько версий Xcode, и теперь переключаешься между ними одной командой.

Что умеет XVM:

  • Показывает все установленные версии Xcodexvm 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

Ручная установка:

  1. Скачайте последний бинарник из релизов
  2. Сделайте исполняемым: chmod +x xvm-darwin-amd64 (или xvm-darwin-arm64 для Apple Silicon)
  3. Переместите в PATH: sudo mv xvm-darwin-amd64 /usr/local/bin/xvm

Как это работает

XVM управляет версиями Xcode очень элегантно:

  1. Переименовывает текущий активный Xcode (обычно /Applications/Xcode.app) в версионное имя (например, Xcode-16.2.app)
  2. Переименовывает целевой Xcode (например, Xcode-15.4.app) в /Applications/Xcode.app
  3. Обновляет 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

  1. Скачайте версии Xcode с Apple Developer Downloads
  2. Установите каждую версию в /Applications/ с версионным именем:
    • Xcode-16.2.app
    • Xcode-15.4.app
    • Xcode-14.3.1.app
  3. Используйте XVM для переключения между ними

Зачем это нужно?

Для команды разработки:

  • Все работают на одинаковых версиях Xcode
  • Легко переключаться между проектами с разными требованиями
  • Меньше "у меня работает, а у тебя нет"

Для CI/CD:

  • Можно тестировать на разных версиях Xcode
  • Автоматизировать переключение версий в скриптах

Для поддержки legacy проектов:

  • Старые проекты, которые не компилируются на новых версиях
  • Клиенты, которые требуют конкретную версию Xcode

Требования

  • macOS (протестировано на macOS 10.15+)
  • Несколько установок Xcode в директории /Applications/
  • Права администратора для переключения версий (требуется sudo)

Заключение

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

Попробуйте сами и дайте знать, если что-то не работает. Исходный код открыт, баги репортим в GitHub Issues.

P.S. Если у вас есть идеи по улучшению или вы хотите добавить новые функции — welcome to contribute! 🚀

Статья помогла? Подарите мне чашку кофе ☕