IPA (iOS App Store Package) este un format de fișier arhivă pentru distribuirea aplicațiilor pe iOS. Fiecare aplicație care ajunge în App Store trece prin formatul IPA: dezvoltatorul construiește proiectul, îl semnează și încarcă IPA în App Store Connect. Conform Apple Developer Documentation, 2026, formatul IPA se bazează pe ZIP și conține un fișier executabil Mach-O, resurse și metadate de semnare.
Principalele aspecte
IPA (iOS App Store Package) este un format de pachet pentru distribuirea aplicațiilor pe platforma Apple. La fel ca APK, din punct de vedere tehnic IPA este o arhivă ZIP, dar cu o structură proprie dictată de cerințele iOS privind securitatea și semnarea.
Formatul IPA a apărut odată cu iPhone OS 2.0 în 2008 și App Store. Ca bază a fost luat formatul de pachet .app din macOS, ambalat în ZIP pentru reducerea dimensiunii la transmitere. De atunci, structura IPA nu a suferit modificări radicale — s-au schimbat doar schemele de semnare și metadatele.
App Store — canalul principal. Distribuția ad-hoc — pentru testare pe un număr limitat de dispozitive (până la 100). Distribuția Enterprise — pentru aplicații corporative fără publicare în magazin. Dezvoltatorii utilizează de asemenea IPA pentru testare pe dispozitive reale prin Xcode.
Structura internă a IPA este o arhivă ZIP care conține folderul Payload cu .app bundle și metadate.
| Fișier/director | Destinație |
|---|---|
| Payload/ | Folderul rădăcină cu .app bundle |
| Payload/App.app/ | Bundle aplicației: fișier executabil, resurse, nib/storyboard |
| Payload/App.app/Info.plist | Metadate: bundle ID, versiuni, permisiuni |
| Payload/App.app/embedded.mobileprovision | Provisioning Profile pentru instalare |
| iTunesMetadata.plist | Metadate pentru iTunes (opțional) |
| META-INF/ | Semnături și hash-uri pentru verificare |
În interiorul folderului Payload se află bundle-ul aplicației cu extensia .app. Acesta nu este un fișier, ci un director pe care iOS îl recunoaște ca aplicație. în interior — fișierul executabil Mach-O (numele coincide cu numele bundle-ului), Info.plist, resurse, imagini și șiruri localizate.
Codul sursă în Swift sau Objective-C este compilat în cod mașină în formatul Mach-O (Mach Object). Fișierul conține segmentele __TEXT (cod), __DATA (date) și __LINKEDIT (metadate de legare). IPA-urile moderne conțin doar arhitectura pe 64 de biți arm64.
Xcode automatizează construirea IPA: de la compilarea surselor până la crearea unei arhive semnate gata de încărcare în App Store Connect.
Debug — pentru dezvoltare, fără optimizări. Release — pentru publicare, cu optimizări ale compilatorului. Fiecare schemă definește flag-urile de compilare, code signing și entitlements. Xcode creează o arhivă (Archive) prin meniul Product → Archive.
// Info.plist — metadatele de bază ale aplicației
<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 compilează fiecare fișier .swift sau .m într-un fișier obiect (.o), apoi le leagă într-un singur binar Mach-O. Resursele (imagini, XIB, storyboard) sunt procesate separat: storyboard-urile sunt compilate în formatul binar .storyboardc, imaginile sunt optimizate în Asset Catalog (.car).
Semnarea — cel mai complex aspect al IPA. Apple solicită semnătura digitală pentru orice aplicație rulată pe un dispozitiv real. Sistemul verifică certificatul dezvoltatorului, entitlements și conformitatea cu Provisioning Profile.
Certificate (Development sau Distribution) — atestă identitatea dezvoltatorului. Provisioning Profile — leagă certificatul, bundle ID și lista dispozitivelor permise (pentru ad-hoc). Entitlements — permisiunile aplicației (notificări push, iCloud, App Groups).
Xcode semnează fiecare bibliotecă și framework din interiorul .app bundle, apoi semnează bundle-ul însuși. IPA-ul final este semnat la nivelul arhivei ZIP. Apple verifică toate nivelurile de semnare la instalare. iOS nu rulează aplicația dacă cel puțin o componentă are o semnătură invalidă.
// Verificarea semnăturii prin 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 — platforma Apple pentru gestionarea publicării aplicațiilor. Încărcarea IPA se realizează prin Xcode Organizer, Transporter sau linia de comandă prin xcrun altool.
După crearea arhivei, Xcode oferă Distribute App cu selecția metodei: App Store Connect, Ad-hoc, Enterprise sau Development. Alegând App Store Connect, dezvoltatorul indică echipa și confirmă încărcarea. Xcode verifică semnarea, trimite IPA pe serverele Apple și returnează starea procesării.
Pentru CI/CD se utilizează xcrun altool sau notarytool mai nou. Apple solicită atestare notarială pentru aplicațiile macOS, pentru iOS acest pas este opțional, dar recomandat. xcodebuild -exportArchive creează un IPA semnat gata de încărcare.
Apple verifică fiecare IPA pentru cod malițios, API-uri private și conformitatea cu regulile App Store Review Guidelines. Procesul de verificare durează de la 1 oră până la 2 zile.
La încărcarea IPA în App Store Connect, Apple aplică App Thinning — tehnologia de optimizare a binarului pentru dispozitive specifice. Slicing elimină din IPA resursele pentru rezoluții și arhitecturi nesuportate. On-Demand Resources permite descărcarea părților aplicației (niveluri de joc, video) doar la cererea utilizatorului. Bitcode — reprezentare intermediară pe care Apple o poate recompila pentru arhitecturi noi fără participarea dezvoltatorului.
App Store verifică de asemenea conformitatea IPA cu cerințele Sandbox: aplicația nu trebuie să acceseze datele altor aplicații, sistemul de fișiere în afara containerului său și funcțiile hardware fără permisiunea explicită a utilizatorului.
TestFlight — serviciul oficial Apple pentru testarea beta a aplicațiilor. Dezvoltatorul încarcă IPA în App Store Connect și invită testerii prin email sau printr-un link public.
Internal Testing — până la 100 de participanți din echipa dezvoltatorului. Nu necesită verificare Apple. External Testing — până la 10 000 de participanți, necesită trecerea Beta App Review. TestFlight distribuie automat build-urile către testeri și colectează analitica.
Build-ul este disponibil pentru testare timp de 90 de zile după încărcare. TestFlight suportă până la 100 de build-uri active simultan. Fiecare tester poate instala până la 30 de aplicații simultan. Crashlytics se integrează cu TestFlight pentru colectarea rapoartelor de crash și erorilor non-fatale.
Construirea IPA în mediul CI necesită un runner macOS. GitHub Actions, GitLab CI și Bitrise oferă medii macOS pentru construiri iOS. Fastlane lane `build_app` automatizează întregul ciclu: arhivare, semnare, export IPA și încărcare în TestFlight. Pentru gestionarea certificatelor și profilurilor se utilizează Match — instrumentul Fastlane care stochează semnăturile într-un depozit Git criptat.
Dezvoltatorii întâlnesc o serie de erori caracteristice la construirea și semnarea IPA. Majoritatea sunt legate de configurarea incorectă a certificatelor și profilurilor.
Xcode nu găsește un Provisioning Profile care să corespundă bundle ID și certificatului. Soluție — descărcați profilele actuale în Xcode Accounts → Download Manual Profiles sau utilizați Automatic Signing.
Eroarea apare la încărcarea IPA cu o arhitectură invalidă. IPA-urile moderne trebuie să conțină doar arm64. Prezența i386 sau x86_64 în binar duce la respingere. Soluție — verificați arhitecturile în Build Settings și excludeți arhitecturile de simulator.
IPA nu conține structura corectă Payload/App.app. Apple așteaptă o ierarhie exactă. Soluție — verificați că arhiva include folderul Payload cu un singur .app bundle, nu o listă plată de fișiere.
Pentru distribuirea corporativă se utilizează programul Enterprise Apple (299 USD/an). IPA este semnat cu un certificat Enterprise și poate fi instalat pe orice dispozitive ale companiei fără limită de număr. Distribuția ad-hoc este limitată la 100 de dispozitive per cont de dezvoltator (99 USD/an). Sistemele MDM (Mobile Device Management), precum Jamf și Microsoft Intune, suportă instalarea în masă a Enterprise-IPA.
Întrebări frecvente
IPA utilizează formatul executabil Mach-O în loc de DEX, necesită Provisioning Profile pentru instalare și trece printr-o verificare strictă App Store. APK, spre deosebire de IPA, poate fi instalat direct fără intermediari (sideloading).
Nu, construirea IPA necesită Xcode și instrumentele Apple, care sunt disponibile doar pe macOS. Alternative: servere macOS la distanță (Mac min, AWS Mac) sau servicii CI în cloud (GitHub Actions cu runner macOS).
Aplicație simplă — 5–30 MB. Aplicație de complexitate medie — 30–150 MB. Jocurile pot ajunge la 4 GB. Apple limitează dimensiunea descărcării prin rețeaua mobilă la 200 MB, dar utilizatorul poate descărca prin Wi-Fi.
Pentru instalarea ad-hoc se utilizează Xcode sau Apple Configurator. Aplicațiile Enterprise sunt distribuite printr-un server intern cu manifest.plist. Un utilizator obișnuit nu poate instala IPA fără jailbreak sau TestFlight.
Fat IPA conține mai multe arhitecturi (arm64 + x86_64) pentru construire universală. Thin IPA conține doar o singură arhitectură pentru un dispozitiv specific. Apple acceptă doar thin IPA pentru publicare — fișierele binare fat sunt respinse.
Concluzii
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și