В записи 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.
- Сборка обработана, но отклонена при проверке приложения. Это уже не отказ загрузки инструмента. Смотрите сообщение о ревью и требования к приложению, а не только версию компилятора.
Первый шаг: проверьте фактически использованный 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 показывает результат конкретной отправки;
- форумная публикация показывает опыт автора сообщения, но не политику платформы для всех разработчиков.
Не переносите результат RC на финальную сборку и не переносите единичный отказ на все проекты. Для решения важны фактические данные конкретного Archive и состояние отправки в вашем аккаунте.
Если сообщение повторяется, сузьте область отказа
Повторная отправка имеет смысл не всегда. Сначала установите, что именно менялось между попытками: файл Archive, версия Xcode, SDK, учётная запись, способ загрузки или состояние сервиса. Если вы изменили несколько условий сразу, успешная попытка не покажет, какое изменение помогло; если не изменили ни одного, одинаковый результат лишь подтверждает, что причина остаётся.
Для каждой попытки заведите краткую запись:
- Идентификатор Archive и время его создания.
- Вывод
xcodebuild -versionиxcodebuild -showsdksиз среды сборки. - Значения
DTXcodeBuildиDTSDKName, если они доступны в приложении внутри Archive. - Способ передачи: Organizer, Transporter или автоматизированный сценарий.
- Итоговый статус App Store Connect и полное сообщение отказа.
Повторное создание 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 без отдельного свидетельства, что проблема связана именно с инструментом.
Сравните варианты перед переключением инструментария
Ниже баллы отражают пригодность варианта для текущей диагностики, а не измеренную производительность и не универсальный рейтинг. Оценка показывает, насколько действие помогает отличить проблему среды от состояния отправки; она не заменяет результат проверки в вашем аккаунте.
| Действие | Когда выбирать | Что оно проясняет | Пригодность для текущего отказа |
|---|---|---|---|
| Повторить загрузку того же Archive | Передача прервалась или есть признаки временной сетевой ошибки | Меняется ли результат передачи при сохранении того же файла и инструмента | 4/5 при сетевой ошибке; 1/5 при явном отказе SDK |
| Создать Archive в проверенной версии Xcode | Логи подтверждают, что текущая версия или SDK не соответствуют ожидаемой цепочке | Связан ли отказ с фактически выбранным инструментом | 5/5 при подтверждённом расхождении |
| Переключить все проекты на Xcode 27.2 сразу | Только после проверки на репрезентативном проекте и принятой загрузки | Даёт ли новый инструмент стабильный результат для ваших задач | 2/5 до контрольной проверки; 4/5 после неё |
| Оставить прежнюю цепочку выпуска до уточнения статуса | Причина не подтверждена, а публикация критична | Снижает число переменных и сохраняет воспроизводимый выпуск | 5/5, если прежняя цепочка уже проверена |
Если у вас нет локальной macOS-среды, в которой можно повторить проверку, разумнее сначала оценить отдельный Mac для контрольной сборки, чем менять рабочую цепочку без подтверждений. Локальный Mac предпочтительнее, когда вам нужны постоянные физические подключения и длительная стабильная нагрузка; удалённый Mac может подойти для временной проверки, Archive и отправки, если вы можете контролировать используемый Xcode и сохранять логи. По сравнению с текущей схемой на неподходящем компьютере или случайно выбранной CI-среде такой вариант избавляет от зависимости от локально установленного инструмента, не требует покупать отдельный Mac только ради проверки и позволяет явно фиксировать среду удалённой задачи. При этом аренда не исправит несовместимость SDK и не заменит проверку App Store Connect: рассматривайте её как доступ к macOS-среде для контролируемого теста, а не как гарантию приёма сборки. Условия аренды MACGPU можно сверить на странице стоимости удалённого Mac; переходите на такую схему только если она подходит вашему графику выпуска и требованиям к физическому оборудованию.