Apple официально запрещает загружать приложения, собранные бета-версиями Xcode. И это логично: бета: значит нестабильная, никто не гарантирует, что бинарник будет корректно работать на продакшене.
Что обычно делают: откатываются на стабильную macOS и Xcode. Теряют день на переустановку, теряют бета-фичи, бесятся.
Решение проще, чем кажется: виртуальная машина с macOS 26 + Xcode 26 стабильным на том же компьютере.
Как это работает
- Собираем билд на виртуалке Xcode 26 стабильный, Apple его принимает
- Переносим архив (.xcarchive) на основной Mac
- Отправляем в App Store из Xcode 27 beta - да, это легально!
App Store Connect проверяет бинарник (то, что внутри .xcarchive), а не версию Xcode, из которой вы нажали кнопку «Distribute». Бинарник собран стабильным компилятором. А учётка Apple Developer на основном Mac уже авторизована, проблем с аутентификацией нет.
Конкретные шаги
Шаг 1: Виртуалка (macOS 26, Xcode 26):
| Код |
|---|
Product → Archive Organizer → правый клик по архиву → Show in Finder Копируем .xcarchive в общую папку (или кидаем по AirDrop) |
Шаг 2: Основной Mac (macOS 27 beta, Xcode 27 beta):
| Код |
|---|
Двойной клик по .xcarchive → открывается в Organizer Distribute App → App Store Connect → готово |
Никакого Transporter, никаких altool, никаких плясок с app-specific password.
Почему это работает
- Компилятор: бинарник собран Swift/Clang из Xcode 26 → проходит проверку App Store
- Подпись: сертификаты разработчика привязаны к Apple ID, а не к версии Xcode
- objectVersion: что 26, что 27 используют совместимый формат .xcodeproj (objectVersion 56)
- Загрузка: Organizer в Xcode 27 прекрасно читает архивы, собранные в Xcode 26
Альтернативы
- Transporter.app из Mac App Store умеет загружать IPA независимо от Xcode
- xcrun altool - командная строка, не требует GUI Xcode
- Xcode Cloud - но стоит денег
Но схема «собрал в 26, залил из 27» самая простая и бесплатная.