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 bundle-ом и метаподацима.

Датотека/директоријумНамена
Payload/Коренски фолдер са .app bundle-ом
Payload/App.app/Bundle апликације: извршни фајл, ресурси, nib/storyboard
Payload/App.app/Info.plistМетаподаци: bundle ID, верзије, дозволе
Payload/App.app/embedded.mobileprovisionProvisioning Profile за инсталацију
iTunesMetadata.plistМетаподаци за iTunes (опционално)
META-INF/Потписи и хешеви за верификацију

Bundle .app

Унутар Payload фолдера налази се bundle апликације са .app екстензијом. Ово није датотека, већ директоријум који iOS препознаје као апликацију. Унутра су извршни Mach-O фајл (име се поклапа са именом bundle-а), 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 bundle-а, затим потписује сам bundle. Коначни 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 и позива тестере путем имејла или јавног линка.

Унутрашње и спољашње тестирање

Internal Testing — до 100 учесника из тима програмера. Не захтева Apple провјеру. External Testing — до 10 000 учесника, захтева пролазак кроз Beta App Review. TestFlight автоматски расподјељује build-ове међу тестерима и прикупља аналитику.

Ограничења TestFlight-а

Build је доступан за тестирање 90 дана након преношења. TestFlight подржава до 100 активних build-ова истовремено. Сваки тестер може инсталирати до 30 апликација истовремено. Crashlytics се интегрише са TestFlight-ом за прикупљање извештаја о падовима и нефаталним грешкама.

IPA и Continuous Integration

Изградња 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 bundle-ом, а не равну листу датотека.

Дистрибуција IPA-а без App Store-а

За корпоративну дистрибуцију користи се Apple Enterprise програм (299 USD/година). IPA се потписује Enterprise цертификатом и може да се инсталира на било које уређаје компаније без ограничења броја. Ad-hoc дистрибуција је ограничена на 100 уређаја по програмерском налогу (99 USD/година). 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 min, AWS Mac) или облачни CI сервиси (GitHub Actions са macOS ранером).

Колико је тежак типичан IPA?

Једноставна апликација — 5–30 MB. Апликација средње сложености — 30–150 MB. Игре могу да достигну 4 GB. Apple ограничава величину преузимања путем мобилне мреже на 200 MB, али корисник може да преузме путем 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 bundle, Info.plist, потписе и Provisioning Profile.
  • Изградња се врши кроз Xcode са компилирањем Swift/Objective-C у arm64 машински код.
  • Потпис обавезан: цертификат + Provisioning Profile + entitlements провјерава iOS приликом инсталације.
  • Објављивање се врши кроз App Store Connect са провјером Apple Review Guidelines.
  • TestFlight — званични алат за бета тестирање за до 10 000 учесника.
  • Ограничења: изградња само на macOS-у, обавезан потпис, максимално 4 GB величине.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође