Если при попытке собрать приложение для iPhone вы получаете на выходе только файл .app вместо установочного пакета, значит проект не был заархивирован — IPA-файл создаётся исключительно через механизм Archive в Xcode с выбранным способом дистрибуции. Именно этот шаг отличает отладочную сборку от готового установочного пакета, который можно передать тестировщикам или загрузить в App Store Connect.
Формат IPA (iOS App Store Package) — это по сути ZIP-архив, внутри которого лежит скомпилированное приложение, ресурсы и данные о подписи. Без корректной подписи сертификатом и provisioning-профилем такой файл не установится ни на одно устройство. Ниже разберём все этапы: от подготовки проекта до экспорта готового пакета, а также типичные ошибки, из-за которых кнопка архивации оказывается неактивной.
Что такое IPA и когда он нужен
IPA-файл — это финальный артефакт сборки iOS-приложения, предназначенный для установки на устройство вне среды разработки. Внутри архива находится папка Payload с бандлом .app, иконки для отображения в iTunes/Finder и метаданные о подписи.
Создавать установочный пакет требуется в нескольких ситуациях:
- 📲 Тестирование — передача сборки тестировщикам через Ad Hoc-дистрибуцию или TestFlight;
- 🏪 Публикация — загрузка приложения в App Store Connect;
- 🏢 Корпоративное распространение — установка внутри компании через Enterprise-программу Apple;
- 💾 Архивация версий — сохранение конкретной сборки для отката или аудита.
Для запуска на собственном устройстве через кабель IPA не обязателен — Xcode устанавливает приложение напрямую. Но как только нужно передать сборку другому человеку, без экспорта пакета не обойтись.
Что потребуется перед сборкой
Для создания подписанного IPA недостаточно одного проекта — Apple требует связку из сертификата разработчика и профиля подготовки (provisioning profile). Оба элемента создаются в аккаунте Apple Developer.
Минимальный набор выглядит так:
- 🖥️ Mac с установленным Xcode актуальной версии;
- 🔑 Действующая учётная запись разработчика — для Ad Hoc и App Store нужна платная программа Apple Developer Program, для теста на своём устройстве достаточно бесплатного Apple ID;
- 📜 Сертификат подписи (Apple Development или Apple Distribution);
- 📋 Provisioning-профиль, привязанный к App ID и целевым устройствам.
⚠️ Внимание: при экспорте Ad Hoc-сборки IPA установится только на устройства, чьи UDID добавлены в профиль подготовки. Если телефон тестировщика не внесён в список, установка завершится ошибкой без объяснения причины — проверяйте состав устройств в профиле заранее.
Подготовка проекта в Xcode
Откройте проект и перейдите в настройки таргета на вкладку Signing & Capabilities. Убедитесь, что выбрана команда (Team) и отсутствуют красные предупреждения о проблемах с профилем. Если статус отображает ошибку, архивация либо не запустится, либо завершится неудачей на этапе подписи.
Далее проверьте версию и номер сборки: поля Version и Build находятся на вкладке General. Для каждой новой загрузки в App Store Connect номер сборки обязан увеличиваться — повторная отправка с тем же значением будет отклонена.
Важный нюанс: архивация доступна только при выбранной схеме сборки для реального устройства или варианта Any iOS Device. Если в панели выбора цели стоит симулятор, пункт меню Product → Archive будет неактивен. Это самая частая причина, по которой кнопка архивации «не работает».
Архивация проекта: пошаговый процесс
Когда подготовка завершена, переходите к самой архивации. В меню выберите Product → Archive и дождитесь завершения компиляции — для крупного проекта это может занять заметное время. Ход процесса отображается в верхней панели Xcode.
По окончании автоматически откроется окно Organizer со списком всех архивов. Если оно не появилось, вызовите его вручную через Window → Organizer. Свежий архив будет первым в списке с указанием версии и даты.
☑️ Проверка перед архивацией
Если архивация прервалась с ошибкой компиляции, исправьте её и запустите процесс заново — частичный архив не создаётся, поэтому потери данных не произойдёт.
Экспорт IPA из архива
Выделите нужный архив в Organizer и нажмите кнопку Distribute App. Мастер экспорта предложит выбрать метод дистрибуции — от этого выбора зависит, куда и как можно будет установить полученный файл.
| Метод дистрибуции | Назначение | Ограничения |
|---|---|---|
| App Store Connect | Публикация и TestFlight | Требуется платный аккаунт разработчика |
| Ad Hoc | Установка на конкретные устройства | Только устройства из профиля |
| Enterprise | Внутреннее распространение в компании | Нужна программа Apple Developer Enterprise |
| Development | Отладочная установка | Ограниченный срок действия профиля |
После выбора метода мастер предложит параметры подписи — в большинстве случаев оставьте автоматический режим. На финальном шаге укажите папку для сохранения, и Xcode сформирует готовый IPA-файл вместе с манифестом DistributionSummary. Именно этот файл передаётся тестировщикам или загружается через Transporter.
Альтернативные способы получения IPA
Стандартный путь через Organizer — не единственный. Разработчики, работающие с CI/CD, часто используют консольную утилиту xcodebuild. Команда архивации и экспорта выглядит примерно так:
xcodebuild -scheme MyApp -archivePath build/MyApp.xcarchive archive
xcodebuild -exportArchive -archivePath build/MyApp.xcarchive -exportPath build -exportOptionsPlist ExportOptions.plist
Файл ExportOptions.plist задаёт метод дистрибуции и параметры подписи. Этот подход требует аккуратной настройки, но позволяет автоматизировать сборку на сервере без участия графического интерфейса.
Существует и ручной приём: скомпилированный .app помещается в папку с именем Payload, после чего каталог сжимается в ZIP и переименовывается в .ipa. Такой файл структурно корректен, однако без действующей подписи и профиля он не установится на устройство штатными средствами — метод годится лишь для отдельных сценариев вроде джейлбрейк-окружений.
Как проверить содержимое IPA-файла
Переименуйте расширение .ipa в .zip и распакуйте архив. Внутри окажется папка Payload с бандлом .app. Открыв бандл как пакет, можно увидеть исполняемый файл, ресурсы, embedded.mobileprovision и файл подписи _CodeSignature. Это удобный способ убедиться, что в сборку попал правильный профиль.
Типичные ошибки и их решение
Чаще всего процесс ломается на этапе подписи. Сообщение вида «No matching provisioning profiles found» означает, что для текущего Bundle ID нет подходящего профиля — создайте его в кабинете разработчика или включите автоматическое управление подписью.
Вторая распространённая ситуация — неактивный пункт Archive в меню. Как уже отмечалось, причина почти всегда в выбранном симуляторе в качестве цели сборки. Переключите схему на Any iOS Device, и пункт станет доступен.
⚠️ Внимание: сертификаты подписи имеют ограниченный срок действия. Если ранее рабочая сборка внезапно перестала архивироваться с ошибкой подписи, проверьте в связке ключей (Keychain Access), не истёк ли сертификат, и при необходимости пересоздайте его в аккаунте разработчика.
Если экспортированный IPA не устанавливается на устройство тестировщика, первым делом сверьте UDID аппарата со списком в профиле. Возможная причина также в том, что устройство пытаются накатить на версию iOS ниже минимальной, заданной в настройках проекта (Minimum Deployments).
Установка готового IPA на устройство
Полученный пакет можно установить несколькими способами. На Mac с актуальной версией macOS подключите iPhone кабелем, откройте его в Finder и перетащите IPA в окно устройства — установка начнётся автоматически при условии совместимости профиля.
Для массового тестирования удобнее TestFlight: архив загружается в App Store Connect, а тестировщики получают приглашение по почте и ставят сборку через фирменное приложение. Этот путь избавляет от ручной возни с UDID, хотя и требует прохождения базовой проверки Apple.
Часто задаваемые вопросы
Можно ли создать IPA без платного аккаунта разработчика?
С бесплатным Apple ID доступна только отладочная установка на собственное устройство через Xcode, причём такой профиль имеет короткий срок действия. Полноценный экспорт Ad Hoc или App Store IPA требует участия в платной программе Apple Developer Program.
Почему пункт Archive неактивен в меню Product?
Почти всегда причина в том, что целью сборки выбран симулятор. Переключите схему на подключённое устройство или вариант Any iOS Device — пункт архивации станет доступен.
Чем IPA отличается от файла .app?
.app — это бандл приложения, который используется внутри среды разработки и симулятора. IPA — упакованный и подписанный архив, содержащий тот же бандл в папке Payload, предназначенный для установки на реальные устройства.
Почему IPA не устанавливается на iPhone тестировщика?
Наиболее вероятная причина — UDID устройства не добавлен в provisioning-профиль, которым подписана сборка. Также проверьте срок действия профиля и минимальную версию iOS, указанную в настройках проекта.
Можно ли собрать IPA без Mac?
Официальный инструментарий Xcode работает только на macOS. Обходные варианты — облачные Mac-сервисы или CI-системы с macOS-раннерами, но в любом случае сборка выполняется в среде Apple с действующим сертификатом разработчика.