IPA: wat is het, bestandsstructuur en werkingsprincipe

Auteur: IT Sectr Gepubliceerd: 2026-04-15 Leestijd: 8 min

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 — archiefformaat voor distributie van iOS-apps via App Store en ad-hoc installatie.
  • Structuur omvat een ondertekend uitvoerbaar Mach-O bestand, bronnen en Provisioning Profile.
  • Ondertekening — verplicht: zonder correct certificaat en profiel installeert IPA niet.
  • Bouwen gebeurt via Xcode met ondersteuning voor verschillende schema's: Debug, Release, Ad-hoc, Enterprise.
  • Architecturen — moderne IPA's bevatten binaire bestanden voor arm64, zonder ondersteuning voor 32-bits apparaten.

Wat is IPA en waarvoor wordt het gebruikt

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.

Geschiedenis van het formaat

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.

Gebruiksscenario's

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.

Interne structuur van IPA-bestand

De interne structuur van IPA is een ZIP-archief met de Payload-map met .app bundle en metadata.

Bestand/mapDoel
Payload/Hoofdmap met .app bundle
Payload/App.app/App-bundle: uitvoerbaar bestand, bronnen, nib/storyboard
Payload/App.app/Info.plistMetadata: bundle ID, versies, machtigingen
Payload/App.app/embedded.mobileprovisionProvisioning Profile voor installatie
iTunesMetadata.plistMetadata voor iTunes (optioneel)
META-INF/Handtekeningen en hashes voor verificatie

.app bundle

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.

Mach-O uitvoerbaar bestand

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.

Bouwproces van IPA via Xcode

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.

Bouwschema's

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.

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

Bouwartitectuur

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

IPA-ondertekening en Provisioning Profile

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.

Componenten van ondertekening

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

Ondertekeningsproces

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.

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

Publicatie van IPA in App Store Connect

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.

Uploadproces

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.

Opdrachtregel

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.

App Thinning: optimalisatie van IPA voor apparaten

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.

Testen van IPA via TestFlight

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.

Intern en extern testen

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.

Beperkingen van TestFlight

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.

IPA en Continuous Integration

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.

Typische problemen met IPA

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.

Ondertekeningsfout: No matching provisioning profile found

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.

ITMS-90125: The binary is invalid

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.

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

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.

Distributie van IPA zonder App Store

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

Waarin verschilt IPA van APK?

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

Kan ik IPA op Windows bouwen?

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

Hoe groot is een typische IPA?

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.

Hoe installeer ik IPA zonder App Store?

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.

Wat is thin IPA en fat IPA?

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

  • IPA — distributieformaat voor iOS-apps op basis van ZIP met een uitvoerbaar Mach-O bestand.
  • Structuur omvat Payload/.app bundle, Info.plist, handtekeningen en Provisioning Profile.
  • Bouwen gebeurt via Xcode met compilatie van Swift/Objective-C naar arm64 machinecode.
  • Ondertekening verplicht: certificaat + Provisioning Profile + entitlements worden door iOS gecontroleerd bij installatie.
  • Publicatie verloopt via App Store Connect met controle van Apple Review Guidelines.
  • TestFlight — het officiële hulpmiddel voor bèta-testen voor maximaal 10.000 deelnemers.
  • Beperkingen: alleen bouwen op macOS, verplichte ondertekening, maximaal 4 GB grootte.

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.

Bespreek het project

Lees ook