IPA: що це, структура файлу та принцип роботи

Автор: IT Sectr Опубліковано: 2026-04-15 Час читання: 8 хв

IPA (iOS App Store Package) — це формат архівного файлу для розповсюдження додатків на iOS. Кожен додаток, який потрапляє до App Store, проходить через формат IPA: розробник збирає проєкт, підписує та завантажує IPA в App Store Connect. Згідно з Apple Developer Documentation, 2026, формат IPA базується на ZIP і містить виконуваний Mach-O файл, ресурси та метадані підпису.

Головне

  • IPA — формат архіву для розповсюдження iOS-додатків через App Store та ad-hoc встановлення.
  • Структура включає підписаний виконуваний файл Mach-O, ресурси та Provisioning Profile.
  • Підпис — обов'язковий: без коректного сертифіката та профілю IPA не встановлюється.
  • Збірка виконується через Xcode з підтримкою різних схем: Debug, Release, Ad-hoc, Enterprise.
  • Архітектури — сучасні IPA містять бінарники для arm64, без підтримки 32-бітних пристроїв.

Що таке IPA і для чого він використовується

IPA (iOS App Store Package) — це формат пакета для розповсюдження додатків на платформі Apple. Як і APK, технічно IPA — це ZIP-архів, але з власною структурою, продиктованою вимогами iOS до безпеки та підпису.

Історія формату

Формат IPA з'явився разом з iPhone OS 2.0 у 2008 році та App Store. За основу було взято пакетний формат .app з macOS, упакований у ZIP для зменшення розміру під час передачі. З тих пір структура IPA не зазнала кардинальних змін — змінювалися лише схеми підпису та метадані.

Сценарії використання

App Store — основний канал. Ad-hoc розповсюдження — для тестування на обмеженій кількості пристроїв (до 100). Enterprise-розповсюдження — для корпоративних додатків без публікації в магазині. Розробники також використовують IPA для тестування на реальних пристроях через Xcode.

Структура IPA-файлу зсередини

Внутрішня структура IPA являє собою ZIP-архів, що містить папку Payload з .app-бандлом і метадані.

Файл/директоріяПризначення
Payload/Коренева папка з .app бандлом
Payload/App.app/Бандл додатка: виконуваний файл, ресурси, nib/storyboard
Payload/App.app/Info.plistМетадані: bundle ID, версії, дозволи
Payload/App.app/embedded.mobileprovisionProvisioning Profile для встановлення
iTunesMetadata.plistМетадані для iTunes (опціонально)
META-INF/Підписи та хеші для верифікації

Бандл .app

Всередині папки Payload знаходиться бандл додатка з розширенням .app. Це не файл, а директорія, яку iOS розпізнає як додаток. Всередині — виконуваний Mach-O файл (ім'я збігається з іменем бандла), Info.plist, ресурси, зображення та локалізовані рядки.

Mach-O виконуваний файл

Вихідний код на Swift або Objective-C компілюється в машинний код у форматі Mach-O (Mach Object). Файл містить сегменти __TEXT (код), __DATA (дані) та __LINKEDIT (метадані лінкування). Сучасні IPA містять лише 64-бітну архітектуру arm64.

Процес збірки IPA через Xcode

Xcode автоматизує збірку IPA: від компіляції вихідників до створення підписаного архіву, готового до завантаження в App Store Connect.

Схеми збірки

Debug — для розробки, без оптимізацій. Release — для публікації, з оптимізаціями компілятора. Кожна схема визначає прапорці компіляції, код-сигнінг та entitlements. Xcode створює архів (Archive) через меню Product → Archive.

objective-c
// Info.plist — базові метадані додатка
<key>CFBundleName</key>
<string>MyApp</string>
<key>CFBundleIdentifier</key>
<string>com.example.myapp</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>

Архітектура збірки

Xcode компілює кожен файл .swift або .m в об'єктний файл (.o), потім лінкує їх у єдиний Mach-O бінарник. Ресурси (зображення, XIB, storyboard) обробляються окремо: storyboard компілюються в бінарний формат .storyboardc, зображення оптимізуються в Asset Catalog (.car).

Підпис IPA і Provisioning Profile

Підпис — найскладніший аспект IPA. Apple вимагає цифрового підпису для будь-якого додатка, що запускається на реальному пристрої. Система перевіряє сертифікат розробника, entitlements та відповідність Provisioning Profile.

Компоненти підпису

Certificate (Development або Distribution) — засвідчує особу розробника. Provisioning Profile — пов'язує сертифікат, bundle ID та список дозволених пристроїв (для ad-hoc). Entitlements — дозволи додатка (push-сповіщення, iCloud, App Groups).

Процес підпису

Xcode підписує кожну бібліотеку та фреймворк всередині .app бандла, потім підписує сам бандл. Фінальний IPA підписується на рівні ZIP-архіву. Apple перевіряє всі рівні підпису під час встановлення. iOS не запускає додаток, якщо хоча б один компонент має невалідний підпис.

swift
// Перевірка підпису через Security framework
import Security

func checkSignature() -> Bool {
    let url = Bundle.main.bundleURL
    var staticCode: SecStaticCode?

    guard SecStaticCodeCreateWithPath(
        url as CFURL,
        [], &staticCode
    ) == errSecSuccess else {
        return false
    }
    return true
}

Публікація IPA в App Store Connect

App Store Connect — платформа Apple для керування публікацією додатків. Завантаження IPA виконується через Xcode Organizer, Transporter або командний рядок через xcrun altool.

Процес завантаження

Після створення архіву Xcode пропонує Distribute App з вибором методу: App Store Connect, Ad-hoc, Enterprise або Development. Вибравши App Store Connect, розробник вказує команду та підтверджує завантаження. Xcode перевіряє підпис, відправляє IPA на сервери Apple та повертає статус обробки.

Командний рядок

Для CI/CD використовується xcrun altool або новіший notarytool. Apple вимагає нотаріального засвідчення для macOS-додатків, для iOS цей крок опціональний, але рекомендований. xcodebuild -exportArchive створює підписаний IPA готовий до завантаження.

Apple перевіряє кожен IPA на наявність шкідливого коду, приватних API та відповідність правилам App Store Review Guidelines. Процес перевірки займає від 1 години до 2 діб.

App Thinning: оптимізація IPA для пристроїв

При завантаженні IPA в App Store Connect Apple застосовує App Thinning — технологію оптимізації бінарника під конкретні пристрої. Slicing видаляє з IPA ресурси для непідтримуваних роздільних здатностей та архітектур. On-Demand Resources дозволяє завантажувати частини додатка (рівні гри, відео) лише за запитом користувача. Bitcode — проміжне представлення, яке Apple може перекомпілювати під нові архітектури без участі розробника.

App Store також перевіряє відповідність IPA вимогам Sandbox: додаток не повинен отримувати доступ до даних інших додатків, до файлової системи поза своїм контейнером та до апаратних функцій без явного дозволу користувача.

Тестування IPA через TestFlight

TestFlight — офіційний сервіс Apple для бета-тестування додатків. Розробник завантажує IPA в App Store Connect та запрошує тестувальників через email або публічне посилання.

Внутрішнє та зовнішнє тестування

Internal Testing — до 100 учасників з команди розробника. Не вимагає перевірки Apple. External Testing — до 10 000 учасників, вимагає проходження Beta App Review. TestFlight автоматично розподіляє білди по тестувальниках та збирає аналітику.

Обмеження TestFlight

Білд доступний для тестування 90 днів після завантаження. TestFlight підтримує до 100 активних білдів одночасно. Кожен тестувальник може встановити до 30 додатків одночасно. Crashlytics інтегрується з TestFlight для збору звітів про падіння та нефатальні помилки.

IPA та безперервна інтеграція

Збірка IPA в CI-середовищі вимагає macOS-раннера. GitHub Actions, GitLab CI та Bitrise надають macOS-середовища для iOS-збірок. Fastlane lane `build_app` автоматизує весь цикл: архівація, підпис, експорт IPA та завантаження в TestFlight. Для керування сертифікатами та профілями використовується Match — інструмент Fastlane, що зберігає підписи в зашифрованому Git-репозиторії.

Типові проблеми з IPA

Розробники стикаються з рядом характерних помилок при збірці та підписі IPA. Більшість пов'язана з некоректною конфігурацією сертифікатів та профілів.

Помилка підпису: No matching provisioning profile found

Xcode не знаходить Provisioning Profile, що відповідає bundle ID та сертифікату. Рішення — завантажити актуальні профілі в Xcode Accounts → Download Manual Profiles або використати Automatic Signing.

ITMS-90125: The binary is invalid

Помилка виникає при завантаженні IPA з невалідною архітектурою. Сучасні IPA повинні містити лише arm64. Наявність i386 або x86_64 в бінарнику викликає відхилення. Рішення — перевірити архітектури в Build Settings та виключити симуляторні архітектури.

Invalid Bundle Structure: The bundle is missing the required .app bundle

IPA не містить правильну структуру Payload/App.app. Apple очікує точну ієрархію. Рішення — перевірити, що архів включає папку Payload з одним .app бандлом, а не плаский список файлів.

Розповсюдження IPA без App Store

Для корпоративного розповсюдження використовується Enterprise програма Apple ($299/рік). IPA підписується Enterprise-сертифікатом і може встановлюватися на будь-які пристрої компанії без обмеження кількості. Ad-hoc розповсюдження обмежене 100 пристроями на акаунт розробника ($99/рік). MDM (Mobile Device Management) системи, такі як Jamf та Microsoft Intune, підтримують масове встановлення Enterprise-IPA.

Часто задавані питання

Чим IPA відрізняється від APK?

IPA використовує виконуваний формат Mach-O замість DEX, вимагає Provisioning Profile для встановлення та проходить строгу перевірку App Store. APK, на відміну від IPA, можна встановити безпосередньо без посередників (sideloading).

Чи можна зібрати IPA на Windows?

Ні, збірка IPA вимагає Xcode та інструментів Apple, які доступні лише на macOS. Альтернативи: віддалені сервери macOS (Mac mini, AWS Mac) або хмарні CI-сервіси (GitHub Actions з macOS раннером).

Скільки важить типовий IPA?

Простий додаток — 5–30 МБ. Додаток середньої складності — 30–150 МБ. Ігри можуть досягати 4 ГБ. Apple обмежує розмір завантаження по стільниковій мережі 200 МБ, але користувач може завантажити через Wi-Fi.

Як встановити IPA без App Store?

Для ad-hoc встановлення використовується Xcode або Apple Configurator. Enterprise-додатки розповсюджуються через внутрішній сервер з manifest.plist. Звичайний користувач не може встановити IPA без jailbreak або TestFlight.

Що таке thin IPA та fat IPA?

Fat IPA містить кілька архітектур (arm64 + x86_64) для універсальної збірки. Thin IPA містить лише одну архітектуру для конкретного пристрою. Apple приймає лише thin IPA для публікації — fat бінарники відхиляються.

Підсумки

  • IPA — формат розповсюдження iOS-додатків на базі ZIP з Mach-O виконуваним файлом.
  • Структура включає Payload/.app бандл, Info.plist, підписи та Provisioning Profile.
  • Збірка виконується через Xcode з компіляцією Swift/Objective-C в машинний код arm64.
  • Підпис обов'язковий: сертифікат + Provisioning Profile + entitlements верифікуються iOS при встановленні.
  • Публікація проходить через App Store Connect з перевіркою Apple Review Guidelines.
  • TestFlight — офіційний інструмент бета-тестування до 10 000 учасників.
  • Обмеження: збірка тільки на macOS, обов'язковий підпис, максимум 4 ГБ розміру.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також