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 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-а је ZIP архива која садржи Payload фолдер са .app bundle-ом и метаподацима.
| Датотека/директоријум | Намена |
|---|---|
| Payload/ | Коренски фолдер са .app bundle-ом |
| Payload/App.app/ | Bundle апликације: извршни фајл, ресурси, nib/storyboard |
| Payload/App.app/Info.plist | Метаподаци: bundle ID, верзије, дозволе |
| Payload/App.app/embedded.mobileprovision | Provisioning Profile за инсталацију |
| iTunesMetadata.plist | Метаподаци за iTunes (опционално) |
| META-INF/ | Потписи и хешеви за верификацију |
Унутар Payload фолдера налази се bundle апликације са .app екстензијом. Ово није датотека, већ директоријум који iOS препознаје као апликацију. Унутра су извршни Mach-O фајл (име се поклапа са именом bundle-а), Info.plist, ресурси, слике и локализовани низови.
Изворни код у Swift-у или Objective-C-у се компилира у машински код у Mach-O (Mach Object) формату. Датотека садржи сегменте __TEXT (код), __DATA (подаци) и __LINKEDIT (метаподаци повезивања). Модерни IPA-и садрже само 64-битну arm64 архитектуру.
Xcode автоматизује изградњу IPA-а: од компилирања изворног кода до креирања потписане архиве спремне за пренос у App Store Connect.
Debug — за развој, без оптимизација. Release — за објављивање, са оптимизацијама компилера. Свака шема одређује заставице компилирања, потписивање кода и entitlements. Xcode креира архиву (Archive) кроз мени Product → Archive.
// 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-а. 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 не покреће апликацију ако бар једна компонента има неважећи потпис.
// Провјера потписа путем 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
}
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 дана.
Приликом преношења IPA-а у App Store Connect, Apple примјењује App Thinning — технологију оптимизације бинарног фајла за одређене уређаје. Slicing уклања из IPA-а ресурсе за неподржане резолуције и архитектуре. On-Demand Resources омогућава преузимање делова апликације (нивои игара, видео) само на захтев корисника. Bitcode — посредна представа коју Apple може поново компилирати за нове архитектуре без учешћа програмера.
App Store такође провјерава усклађеност IPA-а са захтевима Sandbox-а: апликација не смије приступати подацима других апликација, фајл систему изван сопственог контејнера и хардверским функцијама без експлицитне дозволе корисника.
TestFlight — званични Apple сервис за бета тестирање апликација. Програмер преноси IPA у App Store Connect и позива тестере путем имејла или јавног линка.
Internal Testing — до 100 учесника из тима програмера. Не захтева Apple провјеру. External Testing — до 10 000 учесника, захтева пролазак кроз Beta App Review. TestFlight автоматски расподјељује build-ове међу тестерима и прикупља аналитику.
Build је доступан за тестирање 90 дана након преношења. TestFlight подржава до 100 активних build-ова истовремено. Сваки тестер може инсталирати до 30 апликација истовремено. Crashlytics се интегрише са TestFlight-ом за прикупљање извештаја о падовима и нефаталним грешкама.
Изградња IPA-а у CI окружењу захтева macOS ранер. GitHub Actions, GitLab CI и Bitrise пружају macOS окружења за iOS изградње. Fastlane lane `build_app` автоматизује цијели циклус: архивирање, потписивање, експорт IPA и преношење у TestFlight. За управљање цертификатима и профилима користи се Match — Fastlane алат који чува потписе у шифрованом Git репозиторијуму.
Програмери се сусрећу са низом карактеристичних грешака приликом изградње и потписивања IPA-а. Већина је повезана са неисправном конфигурацијом цертификата и профила.
Xcode не проналази Provisioning Profile који одговара bundle ID-у и цертификату. Рјешење — преузети актуелне профиле у Xcode Accounts → Download Manual Profiles или користити Automatic Signing.
Грешка настаје приликом преношења IPA-а са неисправном архитектуром. Модерни IPA-и треба да садрже само arm64. Присуство i386 или x86_64 у бинарном фајлу доводи до одбијања. Рјешење — провјерити архитектуре у Build Settings и искључити симулаторске архитектуре.
IPA не садржи исправну структуру Payload/App.app. Apple очекује тачну хијерархију. Рјешење — провјерити да ли архива садржи Payload фолдер са једним .app bundle-ом, а не равну листу датотека.
За корпоративну дистрибуцију користи се Apple Enterprise програм (299 USD/година). IPA се потписује Enterprise цертификатом и може да се инсталира на било које уређаје компаније без ограничења броја. Ad-hoc дистрибуција је ограничена на 100 уређаја по програмерском налогу (99 USD/година). MDM (Mobile Device Management) системи, као што су Jamf и Microsoft Intune, подржавају масовну инсталацију Enterprise-IPA-а.
Често постављана питања
IPA користи извршни формат Mach-O уместо DEX-а, захтева Provisioning Profile за инсталацију и пролази строгу провјеру App Store-а. APK, за разлику од IPA-а, може да се инсталира директно без посредника (sideloading).
Не, изградња IPA-а захтева Xcode и Apple алате који су доступни само на macOS-у. Алтернативе: удаљени macOS сервери (Mac min, AWS Mac) или облачни CI сервиси (GitHub Actions са macOS ранером).
Једноставна апликација — 5–30 MB. Апликација средње сложености — 30–150 MB. Игре могу да достигну 4 GB. Apple ограничава величину преузимања путем мобилне мреже на 200 MB, али корисник може да преузме путем Wi-Fi-ја.
За ad-hoc инсталацију користи се Xcode или Apple Configurator. Enterprise апликације се дистрибуирају путем интерног сервера са manifest.plist. Обичан корисник не може да инсталира IPA без jailbreak-а или TestFlight-а.
Fat IPA садржи више архитектура (arm64 + x86_64) за универзалну изградњу. Thin IPA садржи само једну архитектуру за одређени уређај. Apple прихвата само thin IPA за објављивање — fat бинарни фајлови се одбијају.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође