В записи Apple указано, что Xcode 27.2, сборка 27B52, выпущен 29 октября 2026 года (журнал выпусков Apple). Если App Store Connect отклоняет загрузку, не пересоздавайте Archive и не отправляйте его повторно вслепую: сначала сохраните точное сообщение, установите фактическую версию Xcode и SDK, затем сверьте результат с тем, что принимает платформа. Успех предыдущей загрузки Xcode 27.2 RC не доказывает, что тот же результат будет у финальной версии.

Эта диагностика предназначена независимым разработчикам, которые получили отказ при отправке новой сборки. Она подойдёт командам с несколькими приложениями, которым важно не менять проверенную цепочку выпуска из-за одного сообщения. Если вы публикуете с удалённого Mac, здесь также есть способ проверить, какой Xcode действительно запустила задача.

Последняя проверка: 31 октября 2026 года. Версию и дату выпуска сверяйте с публикациями Apple о выпусках, сведения о совместимости — с системными требованиями Xcode, а состояние конкретной загрузки — с сообщением вашего аккаунта App Store Connect. Эти источники отвечают на разные вопросы: системные требования не подтверждают, что App Store Connect сейчас принимает отправки из конкретной версии Xcode.

Диагностика: отклонена загрузка Xcode 27.2 в App Store

Слово «отклонена» часто объединяет несколько разных событий. Ошибка создания архива, остановка передачи файла, отказ проверки версии инструмента, сбой обработки сборки и отрицательный результат App Review требуют разных действий. Если не определить этап, можно исправлять подпись при проблеме с допустимостью SDK или, наоборот, повторять передачу файла, который платформа уже отклонила по другой причине.

В документации Apple отдельно описаны состояния загрузки и сборки (справочник статусов App Store Connect). Ориентируйтесь на фактический статус в аккаунте, а не только на формулировку из терминала или уведомления CI.

Запишите сообщение целиком, включая код ошибки, если он есть. Сохраните дату и время с часовым поясом, идентификатор сборки, номер версии приложения, имя схемы и способ отправки. Эти сведения позволяют установить, относится ли отказ к одному Archive, к одной попытке передачи или к последующей обработке. Если в логе есть только общая фраза, найдите подробности в журнале задачи, окне Organizer или интерфейсе App Store Connect.

Что именно произошло: сборка, передача, обработка или ревью?

Сначала сопоставьте текст ошибки с этапом:

  • Archive не создан. Ищите сообщения Xcode о компиляции, тестах, настройках схемы и экспорте. App Store Connect ещё не мог отклонить файл, который не был отправлен.
  • Файл не прошёл загрузку. Проверьте, завершилась ли передача и появился ли соответствующий объект в App Store Connect. Ошибка соединения или авторизации сама по себе не означает, что платформа отвергла SDK.
  • Загрузка принята, но обработка завершилась ошибкой. Откройте статус сборки и детали обработки. Сохраните точный текст причины; не подменяйте его предположением по последней строке лога Xcode.
  • Сборка обработана, но отклонена при проверке приложения. Это уже не отказ загрузки инструмента. Смотрите сообщение о ревью и требования к приложению, а не только версию компилятора.
Успешная передача файла не равна готовности сборки к тестированию или публикации. По той же причине отказ App Review не доказывает проблему с Xcode: решение ревью относится к содержимому и соответствию приложения, а не автоматически к совместимости инструментария.

Первый шаг: проверьте фактически использованный Xcode

Наличие Xcode 27.2 на машине не доказывает, что именно он выполнил конкретную задачу. На одном Mac могут быть установлены разные версии, а CI-скрипт, переменная окружения или отдельный пользователь могут выбрать другой Developer Directory. Проверяйте среду выполнения там, где был создан Archive.

В терминале того же пользователя, под которым запускается сборка, выполните:

xcode-select -p
xcodebuild -version
xcodebuild -showsdks

Первая команда показывает выбранный путь к Developer Directory, вторая — версию и номер сборки Xcode, третья — доступные SDK. Сохраните вывод в логе задачи. Если сборка запускается через CI, проверьте конфигурацию конкретного шага и переменную DEVELOPER_DIR: она может переопределять выбор, который показывает интерактивный терминал.

Для уже созданного Archive проверьте метаданные собранного приложения, а не только настройки проекта. Например, после подстановки реального пути к приложению можно запросить сведения из Info.plist:

/usr/libexec/PlistBuddy -c 'Print :DTXcodeBuild' \
  "/путь/к/Archive.xcarchive/Products/Applications/Приложение.app/Info.plist"

/usr/libexec/PlistBuddy -c 'Print :DTSDKName' \
  "/путь/к/Archive.xcarchive/Products/Applications/Приложение.app/Info.plist"

Эти поля помогают сопоставить Archive с инструментом и SDK, записанными при сборке. Если ключ отсутствует или путь отличается от ожидаемого, не делайте вывод только по одной команде: приложите сведения о среде запуска, журнал сборки и данные самого Archive. Ваша цель — подтвердить происхождение конкретного файла, который отправлялся в App Store Connect.

Почему возникает сообщение «Unsupported SDK or Xcode»?

Такое сообщение указывает, что нужно проверить допустимость сочетания Xcode и SDK для отправки, но само по себе не устанавливает, какой именно компонент выбран неверно. Сначала выясните, совпадают ли версия Xcode и SDK в Archive с теми, которые команда считает установленными. Затем проверьте выпуск Xcode в материалах Apple и снова прочитайте статус отправки.

Страница системных требований Apple помогает проверить поддерживаемую macOS и сведения о среде разработки. Однако она не является подтверждением текущего решения App Store Connect принять или отклонить загрузку. Для этого нужны результат фактической отправки и сообщение платформы. Информация о загрузке сборок также описывает процесс передачи, но не заменяет диагностику конкретного отказа в вашем аккаунте.

Не начинайте с изменения сертификатов и provisioning profile, если отказ явно называет SDK или Xcode. Ошибки подписи обычно имеют собственные сообщения и могут возникать на другом этапе. Изменение сертификатов без признаков проблемы с подписью создаёт новый набор переменных и усложняет сравнение попыток.

Xcode 27.2 RC и финальный выпуск — разные основания для решения

Release Candidate и опубликованный финальный выпуск — разные сборки инструмента. Даже если Archive из RC раньше проходил загрузку, это не подтверждает, что App Store Connect принимает финальную версию или что она использует те же идентификаторы сборки и SDK. В записи Apple финальный выпуск указан как Xcode 27.2 с номером сборки 27B52 и датой 29 октября 2026 года; сверяйте именно эти данные с фактическим логом вашего Archive (запись о выпуске).

В обсуждениях разработчиков встречаются сообщения об отказе с формулировкой Unsupported SDK or Xcode. Такие сообщения следует считать отдельными наблюдениями, а не подтверждением общей неисправности или официального решения Apple. Форумный случай может отличаться версией системы, способом загрузки, аккаунтом, содержимым Archive и временем отправки. Если нет официального подтверждения или результата вашей собственной загрузки, не объявляйте финальный Xcode 27.2 ни гарантированно несовместимым, ни гарантированно принятым.

Для проверки соблюдайте разделение источников:

  • публикация Apple подтверждает выпуск и его заявленный номер сборки;
  • системные требования помогают сверить совместимость среды Xcode и macOS;
  • сообщение App Store Connect показывает результат конкретной отправки;
  • форумная публикация показывает опыт автора сообщения, но не политику платформы для всех разработчиков.
Также проверяйте актуальные заметки о выпусках App Store Connect: изменения платформы могут влиять на процесс загрузки, но наличие обновления в заметках не доказывает, что оно исправляет именно ваш отказ ([заметки о выпусках App Store Connect](https://developer.apple.com/help/app-store-connect/release-notes/)).

Не переносите результат RC на финальную сборку и не переносите единичный отказ на все проекты. Для решения важны фактические данные конкретного Archive и состояние отправки в вашем аккаунте.

Если сообщение повторяется, сузьте область отказа

Повторная отправка имеет смысл не всегда. Сначала установите, что именно менялось между попытками: файл Archive, версия Xcode, SDK, учётная запись, способ загрузки или состояние сервиса. Если вы изменили несколько условий сразу, успешная попытка не покажет, какое изменение помогло; если не изменили ни одного, одинаковый результат лишь подтверждает, что причина остаётся.

Для каждой попытки заведите краткую запись:

  1. Идентификатор Archive и время его создания.
  2. Вывод xcodebuild -version и xcodebuild -showsdks из среды сборки.
  3. Значения DTXcodeBuild и DTSDKName, если они доступны в приложении внутри Archive.
  4. Способ передачи: Organizer, Transporter или автоматизированный сценарий.
  5. Итоговый статус App Store Connect и полное сообщение отказа.
Если платформа сообщает о проблеме соединения или прерванной передаче, повтор той же загрузки может быть уместен после проверки авторизации и доступности канала. Если же отказ явно указывает на неподдерживаемый SDK или Xcode и повторяется для того же Archive, многократная отправка не меняет инструмент, которым этот файл был собран. Очистка кеша, повторное подписание и новый Archive не являются универсальным исправлением версии инструментария.

Повторное создание Archive оправдано, когда вы обнаружили неверно выбранный Xcode, неверный SDK, повреждённый артефакт или исправили конкретную проблему проекта. Если причина пока не установлена, сначала сохраните исходный файл и логи, чтобы сравнить попытки. Не удаляйте единственную копию Archive до того, как сможете подтвердить, какой именно артефакт был отправлен и что на него ответил сервис.

Как проверить Xcode на удалённом Mac

У удалённой сборочной машины есть отдельный риск: команда может проверить Xcode в интерактивной сессии, а задача запускается от другого пользователя или через другой скрипт. Чтобы подтвердить фактическую версию, добавьте перечисленные команды в тот же шаг автоматизации, который создаёт Archive, и сохраните вывод вместе с логом сборки. Если между проверкой версии и запуском задачи меняется пользователь, путь DEVELOPER_DIR или конфигурация среды, повторите проверку непосредственно перед xcodebuild archive.

Для удалённого запуска свяжите три группы данных: вывод команд о Xcode и SDK, метаданные созданного Archive, результат загрузки в App Store Connect. Сравнение только с установленными приложениями в Finder недостаточно. В журнале CI отметьте, на каком узле и под какой учётной записью выполнялся шаг, но не записывайте в открытый лог пароли, приватные ключи или секреты авторизации.

Эта процедура устанавливает, какой инструмент был использован; она не подтверждает совместимость сервиса App Store Connect и не обещает, что определённая удалённая конфигурация примет загрузку. Для самого решения всё равно нужен фактический статус отправки. Если вы выбираете удалённую среду для выпуска, сначала изучите руководство по удалённому Mac и оцените, подходит ли такой способ для ваших задач подписи, сборки и загрузки.

Восстановите выпуск по условиям, а не по предположению

Используйте следующий список решений. Переходите к варианту A только при выполнении указанного условия; иначе оставайтесь на проверенной цепочке и собирайте дополнительные доказательства.

  • Если ошибка возникла при компиляции или создании Archive, а в App Store Connect нет соответствующей загрузки, то разбирайте локальный этап: схему, сборку, настройки проекта и среду Xcode.
  • Если передача оборвалась из-за сети или авторизации, а платформа не зарегистрировала отказ по SDK, то после проверки канала можно повторить загрузку того же Archive.
  • Если отказ прямо называет Unsupported SDK or Xcode, то сначала подтвердите версию и SDK в конкретном Archive. Если данные указывают на непринятую версию инструмента, используйте ранее проверенную цепочку выпуска и не рассчитывайте, что повтор той же отправки изменит результат.
  • Если Apple публикует сведения, позволяющие проверить выпуск, и целевой аккаунт фактически принимает контрольную сборку, то переходите на Xcode 27.2 постепенно, сначала проверив репрезентативный проект.
  • Если сообщение относится к обработке или App Review, то устраняйте причину, указанную на этом этапе, и не меняйте Xcode без отдельного свидетельства, что проблема связана именно с инструментом.
Перед сменой инструментария убедитесь, что можете восстановить предыдущую конфигурацию. Сохраните путь к Xcode, настройки CI, параметры подписи и идентификатор последней принятой сборки. После переключения отдельно проверьте компиляцию, Archive, подпись, загрузку и статус обработки; фиксируйте успех каждого этапа отдельно. Принятая загрузка подтверждает передачу и обработку на соответствующем этапе, но не гарантирует прохождение App Review.

Сравните варианты перед переключением инструментария

Ниже баллы отражают пригодность варианта для текущей диагностики, а не измеренную производительность и не универсальный рейтинг. Оценка показывает, насколько действие помогает отличить проблему среды от состояния отправки; она не заменяет результат проверки в вашем аккаунте.

<
ДействиеКогда выбиратьЧто оно проясняетПригодность для текущего отказа
Повторить загрузку того же ArchiveПередача прервалась или есть признаки временной сетевой ошибкиМеняется ли результат передачи при сохранении того же файла и инструмента4/5 при сетевой ошибке; 1/5 при явном отказе SDK
Создать Archive в проверенной версии XcodeЛоги подтверждают, что текущая версия или SDK не соответствуют ожидаемой цепочкеСвязан ли отказ с фактически выбранным инструментом5/5 при подтверждённом расхождении
Переключить все проекты на Xcode 27.2 сразуТолько после проверки на репрезентативном проекте и принятой загрузкиДаёт ли новый инструмент стабильный результат для ваших задач2/5 до контрольной проверки; 4/5 после неё
Оставить прежнюю цепочку выпуска до уточнения статусаПричина не подтверждена, а публикация критичнаСнижает число переменных и сохраняет воспроизводимый выпуск5/5, если прежняя цепочка уже проверена
Сверяйте решение с текущими данными Apple и своим аккаунтом, а не только с датой выхода Xcode. Публикация версии и техническая совместимость системы — необходимые сведения для проверки, но критерием перехода остаётся принятый результат загрузки для нужного проекта и способа отправки.

Если у вас нет локальной macOS-среды, в которой можно повторить проверку, разумнее сначала оценить отдельный Mac для контрольной сборки, чем менять рабочую цепочку без подтверждений. Локальный Mac предпочтительнее, когда вам нужны постоянные физические подключения и длительная стабильная нагрузка; удалённый Mac может подойти для временной проверки, Archive и отправки, если вы можете контролировать используемый Xcode и сохранять логи. По сравнению с текущей схемой на неподходящем компьютере или случайно выбранной CI-среде такой вариант избавляет от зависимости от локально установленного инструмента, не требует покупать отдельный Mac только ради проверки и позволяет явно фиксировать среду удалённой задачи. При этом аренда не исправит несовместимость SDK и не заменит проверку App Store Connect: рассматривайте её как доступ к macOS-среде для контролируемого теста, а не как гарантию приёма сборки. Условия аренды MACGPU можно сверить на странице стоимости удалённого Mac; переходите на такую схему только если она подходит вашему графику выпуска и требованиям к физическому оборудованию.