Build en publicatie van een mobiele app is het proces van het omzetten van broncode naar een installeerbaar bestand (APK, AAB, IPA) en het uploaden ervan naar app-winkels. Volgens Google Play Console (2025) is Android App Bundle (AAB) sinds augustus 2021 het verplichte formaat voor publicatie op Google Play. In dit artikel behandelen we build-formaten, compilatie, code signing, het publicatieproces en bètatests.
Belangrijkste punten
APK (Android Package Kit) — het traditionele formaat voor het bouwen en publiceren van mobiele apps op Android. APK bevat alle code, resources en het manifest van de app. AAB (Android App Bundle) — een formaat dat in 2018 door Google is geïntroduceerd en sinds augustus 2021 verplicht is voor nieuwe apps. AAB wordt niet direct geïnstalleerd — Google Play genereert dynamisch een geoptimaliseerde APK voor elk apparaat uit AAB.
Voordelen van AAB: de downloadgrootte is gemiddeld 15% kleiner (door alleen de benodigde resources te leveren: juiste schermdichtheden, talen, CPU-architecturen). AAB ondersteunt ook modulaire levering — je kunt modules op aanvraag laden (Play Feature Delivery) of uitgesteld (Play On-Demand). Voor ontwikkelaars is AAB verplicht; voor distributie buiten Google Play (sideloading, marktplaatsen) — alleen APK.
IPA (iOS App Store Package) — het iOS-installeerbare bestand, een ZIP-archief met een ondertekende app. IPA bevat een Payload/-map met de .app-bundle, Provisioning Profile en handtekening. IPA wordt alleen op macOS gebouwd via Xcode, dat een archief (.xcarchive) maakt en IPA exporteert. Voor distributie via de App Store wordt IPA ondertekend met een Apple Distribution Certificate; voor Ad Hoc of Enterprise — met de bijbehorende certificaten.
| Parameter | APK | AAB | IPA |
|---|---|---|---|
| Platform | Android | Android (Google Play) | iOS |
| Formaat | ZIP-archief | ZIP-archief | ZIP-archief |
| Directe installatie | Ja | Nee (via Google Play) | Via App Store / MDM |
| Handtekening | Keystore (JKS) | Keystore (JKS/PEPK) | Apple Certificate |
| App Thinning | Nee | Ja (automatisch) | Ja (Slicing, Bitcode) |
JIT (Just-In-Time) — compilatie van code tijdens de uitvoering van de app, die de snelheid van build en publicatie beïnvloedt. Op Android tot versie 5.0 (Lollipop) werd Dalvik VM met JIT-compilatie gebruikt. Bij elke start van de app werd DEX-bytecode «on the fly» omgezet in machinecode. Nadeel: vertraging bij de eerste start en extra energieverbruik. AOT (Ahead-Of-Time) — compilatie van code vóór het starten van de app, tijdens de installatie. Vanaf Android 7.0 (Nougat) compileert ART (Android Runtime) de app volledig tijdens de installatie.
ART (Android Runtime) — de runtime-omgeving die Dalvik verving in Android 5.0. ART gebruikt een hybride aanpak: AOT-compilatie bij installatie + JIT voor veelvuldig uitgevoerde methoden. Dit combineert de snelheid van AOT (snelle start) met de flexibiliteit van JIT (adaptieve optimalisatie). Resultaat: de prestaties van Android-apps zijn met 20-30% gestegen ten opzichte van Dalvik. Voor ontwikkelaars is de overgang naar ART transparant — de code hoeft niet te worden gewijzigd.
Bitcode — een tussentijdse representatie van code (IR) die Apple gebruikt om IPA opnieuw te compileren voor verschillende processorarchitecturen. Bitcode is optioneel: voor iOS-apps is het standaard ingeschakeld, voor watchOS en tvOS is het verplicht. Apple kan Bitcode opnieuw compileren bij nieuwe processors zonder tussenkomst van de ontwikkelaar. App Thinning — Apple's technologie die Slicing (alleen de benodigde resources voor het apparaat leveren) en On-Demand Resources (resources laden op aanvraag) omvat. App Thinning verkleint de downloadgrootte uit de App Store met 30-50%.
DEX — bytecode-formaat voor Android, uitgevoerd door ART/Dalvik. Kotlin/Java-broncode wordt gecompileerd naar class-bestanden, vervolgens naar DEX via dx of d8 (een moderne en snellere tool). Multidex — een mechanisme voor apps die de limiet van 65.536 methoden in één DEX-bestand overschrijden. In moderne projecten wordt multidex automatisch ingeschakeld als targetSdkVersion >= 21.
Keystore — een bestand met de privésleutel en het certificaat voor het ondertekenen van een Android-app tijdens de build. Keystore wordt gemaakt via keytool (het commando -genkey) of Android Studio. Belangrijk: Keystore mag niet verloren gaan — zonder kun je de app niet bijwerken op Google Play. Ondertekeningsparameters: keyAlias, keyPassword, storePassword en storeFile. Formaat: JKS (Java KeyStore) of PEPK (Play Encrypted Private Key) voor AAB.
App Bundle ID (Android) — de unieke identificatie van de app in pakketnotatie (com.example.app). Version Code — een geheel getal voor interne versienummering (elke nieuwe build verhoogt dit). Version Name — een string die aan de gebruiker wordt getoond (1.2.3). Deze parameters worden ingesteld in build.gradle op app-niveau.
Apple Certificate — een digitaal certificaat dat de identiteit van de ontwikkelaar verifieert. Typen: Development (voor debuggen), Distribution (voor App Store), Ad Hoc (voor beperkte distributie). Certificaten worden aangemaakt in Apple Developer Account en gedownload naar Keychain. Provisioning Profile — een bestand dat het certificaat, App ID (Bundle Identifier) en een lijst met toegestane apparaten koppelt. Zonder Provisioning Profile werkt de app niet op een apparaat.
Bundle ID (iOS) — de unieke identificatie van de app (com.example.app). Build Number — het buildnummer, verhoogd bij elke build. Marketing Version — de versie die aan de gebruiker wordt getoond. Versiebeheer: voor iOS worden de parameters ingesteld in Info.plist en Project Settings; voor Android — in build.gradle. Bij IT Sectr automatiseren we versie-updates via Fastlane — dit elimineert menselijke fouten bij releases.
Google Play Console — een tool voor het publiceren van Android-apps. Proces: registratie van een ontwikkelaarsaccount ($25 eenmalig), app aanmaken, metadata invullen (naam, beschrijving, screenshots, categorie), AAB uploaden, prijzen en distributie configureren, beoordeling. Google controleert de app automatisch (virussen, naleving van beleid) en handmatig voor sommige categorieën. De beoordeling duurt van enkele uren tot 2-3 dagen.
App Store Connect — Apple's platform voor het publiceren van iOS-apps. Proces: Apple-ontwikkelaarsaccount ($99/jaar), app aanmaken in App Store Connect, IPA voorbereiden in Xcode (Archive → Distribute App → App Store Connect), uploaden via Transporter of Xcode, metadata invullen, ter beoordeling indienen. App Review — Apple's handmatige beoordeling kan 24 uur tot 7 dagen duren. Typische afwijzingsredenen: niet-werkende knoppen, onvolledige inhoud, toestemmingsverzoek zonder uitleg.
TestFlight — Apple's officiële tool voor bètatests van iOS-apps. TestFlight ondersteunt Internal Testing (tot 100 testers via e-mail, zonder beoordeling) en External Testing (tot 10.000 testers, met Apple-beoordeling). Builds zijn 90 dagen beschikbaar, waarna een nieuwe build moet worden geüpload. TestFlight werkt de app automatisch bij bij testers wanneer een nieuwe build wordt geüpload.
Internal Testing (Android) — tot 100 testers, zonder Google-beoordeling, build direct beschikbaar. Closed Beta — tot 1000 testers via e-mail of Google Groups, zonder beoordeling. Open Beta — onbeperkt aantal testers via een openbare link, met Google-beoordeling. Staged Rollout — geleidelijke verhoging van het percentage gebruikers dat de update ontvangt (5% → 20% → 50% → 100%). Dit is de veiligste releasemethode.
App Thinning (iOS) — automatische vermindering van de gedownloade IPA-grootte: Slicing (alleen benodigde resources voor het apparaat), Bitcode (processoroptimalisatie), On-Demand Resources (downloaden op aanvraag). Bij IT Sectr gebruiken we TestFlight voor iOS-bètatests en Internal Testing voor Android — dit stelt ons in staat problemen te ontdekken vóór een massale release.
Veelgestelde vragen
APK — een universeel installeerbaar bestand, werkt op elk apparaat. AAB — een formaat voor Google Play dat de optimale APK voor elk apparaat genereert. De downloadgrootte via AAB is 15% kleiner. Voor Google Play is AAB verplicht, voor sideloading — APK.
Je kunt de app niet bijwerken op Google Play — je moet een nieuwe app maken met een nieuwe package name. Bewaar je Keystore op een veilige plek (wachtwoordmanager, versleutelde Git). Google Play App Signing (gebruik van Google-sleutels) vermindert dit risico.
Google Play — $25 eenmalig voor een ontwikkelaarsaccount. App Store — $99/jaar. Beide bedragen omvatten onbeperkt aantal apps. Voor iOS heb je ook een Mac nodig (vanaf $999) of cloud-Mac-huur.
Staged Rollout — geleidelijke uitrol van de update: eerst 5% van de gebruikers, dan 20%, 50% en 100%. Als er in een fase crashes worden gedetecteerd, wordt de uitrol gestopt. Beschikbaar in Google Play Console.
Voor Android — nee, je kunt APK op een apparaat installeren via USB of emulator zonder account. Voor iOS — ja, zonder een account van $99/jaar werkt de app alleen op de simulator, niet op een echt apparaat.
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.