Как создать разные сборки для разных версий iOS в Xcode?

«Как создать разные сборки для разных версий iOS в Xcode?» — вопрос из категории DevOps, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, это можно сделать несколькими способами для управления минимальной поддерживаемой версией (Deployment Target) и условной компиляцией.

Основные подходы:

  1. Разные Targets:

    • Создайте отдельный таргет (File → New → Target).
    • Для каждого таргета задайте свой iOS Deployment Target в настройках.
    • Полезно для создания полностью отдельных приложений (например, lite/paid версий) с разной базой кода.
  2. Разные Build Configurations:

    • Используйте существующие (Debug/Release) или создайте кастомные конфигурации.
    • Для каждой конфигурации можно задать разные Preprocessor Macros или Active Compilation Conditions.
    • Условная компиляция в коде:
      #if STAGING_IOS14
      // Код для сборки под iOS 14+
      if #available(iOS 14, *) { ... }
      #elseif PROD_IOS15
      // Код для сборки под iOS 15+
      #endif
  3. xcconfig файлы:

    • Создайте .xcconfig файлы для каждой конфигурации.
    • Укажите в них разные значения для IPHONEOS_DEPLOYMENT_TARGET и других флагов.
    • Это самый чистый и поддерживаемый способ управления настройками.

Важно: Для условного выполнения кода в runtime всегда используйте @available или #available для проверки версии ОС на устройстве.