IPA: ce este, structura fișierului și principiul de funcționare

Autor: IT Sectr Publicat: 2026-04-15 Timp de citire: 8 min

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 — format de arhivă pentru distribuirea aplicațiilor iOS prin App Store și instalare ad-hoc.
  • Structura include fișierul executabil Mach-O semnat, resurse și Provisioning Profile.
  • Semnarea — obligatorie: fără un certificat și un profil corect, IPA nu se instalează.
  • Construirea se realizează prin Xcode cu suport pentru diferite scheme: Debug, Release, Ad-hoc, Enterprise.
  • Arhitecturi — IPA-urile moderne conțin fișiere binare pentru arm64, fără suport pentru dispozitive pe 32 de biți.

Ce este IPA și pentru ce se utilizează

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.

Istoricul formatului

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.

Scenarii de utilizare

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 fișierului IPA

Structura internă a IPA este o arhivă ZIP care conține folderul Payload cu .app bundle și metadate.

Fișier/directorDestinaț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.plistMetadate: bundle ID, versiuni, permisiuni
Payload/App.app/embedded.mobileprovisionProvisioning Profile pentru instalare
iTunesMetadata.plistMetadate pentru iTunes (opțional)
META-INF/Semnături și hash-uri pentru verificare

Bundle .app

Î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.

Fișierul executabil Mach-O

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.

Procesul de construire a IPA prin Xcode

Xcode automatizează construirea IPA: de la compilarea surselor până la crearea unei arhive semnate gata de încărcare în App Store Connect.

Scheme de construire

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.

objective-c
// 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>

Arhitectura construirii

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 IPA și Provisioning Profile

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.

Componentele semnării

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).

Procesul de semnare

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ă.

swift
// 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
}

Publicarea IPA în App Store Connect

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.

Procesul de încărcare

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.

Linia de comandă

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.

App Thinning: optimizarea IPA pentru dispozitive

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.

Testarea IPA prin TestFlight

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.

Testare internă și externă

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.

Limitări TestFlight

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.

IPA și Continuous Integration

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.

Probleme tipice cu IPA

Dezvoltatorii întâlnesc o serie de erori caracteristice la construirea și semnarea IPA. Majoritatea sunt legate de configurarea incorectă a certificatelor și profilurilor.

Eroare de semnare: No matching provisioning profile found

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.

ITMS-90125: The binary is invalid

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.

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

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.

Distribuirea IPA fără App Store

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

Cu ce se deosebește IPA de APK?

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).

Se poate construi IPA pe Windows?

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).

Cât cântărește un IPA tipic?

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.

Cum se instalează IPA fără App Store?

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.

Ce este thin IPA și fat IPA?

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

  • IPA — format de distribuire a aplicațiilor iOS bazat pe ZIP cu fișier executabil Mach-O.
  • Structura include Payload/.app bundle, Info.plist, semnături și Provisioning Profile.
  • Construirea se realizează prin Xcode cu compilarea Swift/Objective-C în cod mașină arm64.
  • Semnarea obligatorie: certificat + Provisioning Profile + entitlements sunt verificate de iOS la instalare.
  • Publicarea se face prin App Store Connect cu verificarea Apple Review Guidelines.
  • TestFlight — instrumentul oficial de testare beta pentru până la 10 000 de participanți.
  • Limitări: construire doar pe macOS, semnare obligatorie, maxim 4 GB dimensiune.

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.

Discutați proiectul

Citiți și