IPA (iOS App Store Package) is een archiefformaat voor het distribueren van apps op iOS. Elke app die in App Store belandt, doorloopt het IPA-formaat: de ontwikkelaar bouwt het project, ondertekent het en uploadt IPA naar App Store Connect. Volgens Apple Developer Documentation, 2026 is het IPA-formaat gebaseerd op ZIP en bevat het een uitvoerbaar Mach-O bestand, bronnen en ondertekeningsmetadata.
Belangrijkste punten
IPA (iOS App Store Package) is een pakketformaat voor distributie van apps op het Apple-platform. Net als APK is IPA technisch gezien een ZIP-archief, maar met een eigen structuur die wordt bepaald door de beveiligings- en ondertekeningsvereisten van iOS.
Het IPA-formaat verscheen samen met iPhone OS 2.0 in 2008 en App Store. Als basis werd het .app pakketformaat uit macOS genomen, verpakt in ZIP om de omvang bij overdracht te verkleinen. Sindsdien heeft de IPA-structuur geen ingrijpende wijzigingen ondergaan — alleen de ondertekeningsschema's en metadata zijn veranderd.
App Store — het belangrijkste kanaal. Ad-hoc distributie — voor testen op een beperkt aantal apparaten (tot 100). Enterprise-distributie — voor zakelijke apps zonder publicatie in de winkel. Ontwikkelaars gebruiken IPA ook voor testen op echte apparaten via Xcode.
De interne structuur van IPA is een ZIP-archief met de Payload-map met .app bundle en metadata.
| Bestand/map | Doel |
|---|---|
| Payload/ | Hoofdmap met .app bundle |
| Payload/App.app/ | App-bundle: uitvoerbaar bestand, bronnen, nib/storyboard |
| Payload/App.app/Info.plist | Metadata: bundle ID, versies, machtigingen |
| Payload/App.app/embedded.mobileprovision | Provisioning Profile voor installatie |
| iTunesMetadata.plist | Metadata voor iTunes (optioneel) |
| META-INF/ | Handtekeningen en hashes voor verificatie |
In de Payload-map bevindt zich de app-bundle met extensie .app. Dit is geen bestand, maar een map die iOS herkent als een app. Binnenin bevinden zich het uitvoerbare Mach-O bestand (naam komt overeen met de bundlenaam), Info.plist, bronnen, afbeeldingen en gelokaliseerde tekenreeksen.
Broncode in Swift of Objective-C wordt gecompileerd naar machinecode in Mach-O (Mach Object) formaat. Het bestand bevat segmenten __TEXT (code), __DATA (gegevens) en __LINKEDIT (koppelingsmetadata). Moderne IPA's bevatten alleen de 64-bits arm64 architectuur.
Xcode automatiseert het bouwen van IPA: van compilatie van broncode tot het maken van een ondertekend archief dat klaar is voor upload naar App Store Connect.
Debug — voor ontwikkeling, zonder optimalisaties. Release — voor publicatie, met compileroptimalisaties. Elk schema bepaalt compilatievlaggen, code-ondertekening en entitlements. Xcode maakt een archief (Archive) via het menu Product → Archive.
// Info.plist — basis metadata van de app
<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 compileert elk .swift of .m bestand naar een objectbestand (.o), en koppelt ze vervolgens tot een enkel Mach-O binair bestand. Bronnen (afbeeldingen, XIB, storyboard) worden apart verwerkt: storyboards worden gecompileerd naar binair .storyboardc formaat, afbeeldingen worden geoptimaliseerd in Asset Catalog (.car).
Ondertekening — het meest complexe aspect van IPA. Apple eist een digitale handtekening voor elke app die op een echt apparaat wordt uitgevoerd. Het systeem controleert het ontwikkelaarcertificaat, entitlements en conformiteit met Provisioning Profile.
Certificate (Development of Distribution) — bevestigt de identiteit van de ontwikkelaar. Provisioning Profile — verbindt het certificaat, bundle ID en lijst van toegestane apparaten (voor ad-hoc). Entitlements — app-machtigingen (pushmeldingen, iCloud, App Groups).
Xcode ondertekent elke bibliotheek en framework in de .app bundle, en ondertekent vervolgens de bundle zelf. De uiteindelijke IPA wordt ondertekend op ZIP-archiefniveau. Apple controleert alle ondertekeningsniveaus bij installatie. iOS start de app niet als ten minste één component een ongeldige handtekening heeft.
// Controle van handtekening via 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 — het Apple-platform voor het beheren van app-publicaties. Uploaden van IPA gebeurt via Xcode Organizer, Transporter of de opdrachtregel via xcrun altool.
Na het maken van het archief biedt Xcode Distribute App met de keuze van methode: App Store Connect, Ad-hoc, Enterprise of Development. Na het kiezen van App Store Connect geeft de ontwikkelaar het team aan en bevestigt de upload. Xcode controleert de ondertekening, stuurt IPA naar Apple-servers en retourneert de verwerkingsstatus.
Voor CI/CD wordt xcrun altool of nieuwere notarytool gebruikt. Apple vereist notariële bekrachtiging voor macOS-apps, voor iOS is deze stap optioneel maar aanbevolen. xcodebuild -exportArchive maakt een ondertekende IPA klaar voor upload.
Apple controleert elke IPA op kwaadaardige code, private API's en naleving van App Store Review Guidelines. Het controleproces duurt van 1 uur tot 2 dagen.
Bij het uploaden van IPA naar App Store Connect past Apple App Thinning toe — de technologie voor optimalisatie van het binaire bestand voor specifieke apparaten. Slicing verwijdert uit IPA de bronnen voor niet-ondersteunde resoluties en architecturen. On-Demand Resources stelt gebruikers in staat delen van de app (spelniveaus, video) alleen op verzoek te downloaden. Bitcode — een tussenliggende representatie die Apple opnieuw kan compileren voor nieuwe architecturen zonder tussenkomst van de ontwikkelaar.
App Store controleert ook de conformiteit van IPA met Sandbox-vereisten: de app mag geen toegang krijgen tot gegevens van andere apps, het bestandssysteem buiten de eigen container en hardwarefuncties zonder expliciete toestemming van de gebruiker.
TestFlight — de officiële Apple-service voor het bèta-testen van apps. De ontwikkelaar uploadt IPA naar App Store Connect en nodigt testers uit via e-mail of een openbare link.
Internal Testing — tot 100 deelnemers uit het ontwikkelaarsteam. Geen Apple-goedkeuring vereist. External Testing — tot 10.000 deelnemers, vereist goedkeuring via Beta App Review. TestFlight verdeelt builds automatisch onder testers en verzamelt analyses.
Een build is 90 dagen na upload beschikbaar voor testen. TestFlight ondersteunt tot 100 actieve builds tegelijk. Elke tester kan maximaal 30 apps tegelijk installeren. Crashlytics integreert met TestFlight voor het verzamelen van crashrapporten en niet-fatale fouten.
Het bouwen van IPA in een CI-omgeving vereist een macOS-runner. GitHub Actions, GitLab CI en Bitrise bieden macOS-omgevingen voor iOS-builds. Fastlane lane `build_app` automatiseert de hele cyclus: archiveren, ondertekenen, IPA-exporteren en uploaden naar TestFlight. Voor het beheren van certificaten en profielen wordt Match gebruikt — de Fastlane-tool die handtekeningen opslaat in een versleutelde Git-repository.
Ontwikkelaars komen een reeks karakteristieke fouten tegen bij het bouwen en ondertekenen van IPA. De meeste hebben te maken met onjuiste configuratie van certificaten en profielen.
Xcode vindt geen Provisioning Profile dat overeenkomt met bundle ID en certificaat. Oplossing — download actuele profielen in Xcode Accounts → Download Manual Profiles of gebruik Automatic Signing.
Fout treedt op bij uploaden van IPA met een ongeldige architectuur. Moderne IPA's mogen alleen arm64 bevatten. Aanwezigheid van i386 of x86_64 in het binaire bestand leidt tot afwijzing. Oplossing — controleer architecturen in Build Settings en sluit simulator-architecturen uit.
IPA bevat niet de juiste structuur Payload/App.app. Apple verwacht een exacte hiërarchie. Oplossing — controleer of het archief een Payload-map met één .app bundle bevat, geen platte lijst van bestanden.
Voor zakelijke distributie wordt het Apple Enterprise-programma gebruikt (299 USD/jaar). IPA wordt ondertekend met een Enterprise-certificaat en kan op elk bedrijfsapparaat worden geïnstalleerd zonder limiet. Ad-hoc distributie is beperkt tot 100 apparaten per ontwikkelaarsaccount (99 USD/jaar). MDM-systemen (Mobile Device Management) zoals Jamf en Microsoft Intune ondersteunen massale installatie van Enterprise-IPA.
Veelgestelde vragen
IPA gebruikt het uitvoerbare Mach-O formaat in plaats van DEX, vereist een Provisioning Profile voor installatie en doorloopt een strenge App Store-controle. APK kan, in tegenstelling tot IPA, direct worden geïnstalleerd zonder tussenkomst (sideloading).
Nee, het bouwen van IPA vereist Xcode en Apple-hulpprogramma's die alleen beschikbaar zijn op macOS. Alternatieven: externe macOS-servers (Mac min, AWS Mac) of cloud CI-services (GitHub Actions met macOS-runner).
Eenvoudige app — 5–30 MB. App met gemiddelde complexiteit — 30–150 MB. Games kunnen 4 GB bereiken. Apple beperkt de downloadgrootte via mobiel netwerk tot 200 MB, maar de gebruiker kan via Wi-Fi downloaden.
Voor ad-hoc installatie wordt Xcode of Apple Configurator gebruikt. Enterprise-apps worden gedistribueerd via een interne server met manifest.plist. Een gewone gebruiker kan IPA niet installeren zonder jailbreak of TestFlight.
Fat IPA bevat meerdere architecturen (arm64 + x86_64) voor universele bouw. Thin IPA bevat slechts één architectuur voor een specifiek apparaat. Apple accepteert alleen thin IPA voor publicatie — fat binaire bestanden worden afgewezen.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook