APK: wat is het, bestandsstructuur en werkingsprincipe

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

APK (Android Package Kit) is een archiefbestandsformaat dat wordt gebruikt voor het distribueren en installeren van apps op Android. Elke app die een gebruiker downloadt uit Google Play of handmatig installeert, is een APK-bestand. Volgens Android Open Source Project, 2026 is het formaat gebaseerd op de ZIP-standaard en bevat het gecompileerde code, bronnen, manifest en een digitale handtekening.

Belangrijkste punten

  • APK — het installatiepakketformaat voor Android op basis van ZIP met DEX-bytecode en bronnen.
  • Structuur omvat manifest, DEX-bestanden, bronnen, native codebibliotheken en certificaten.
  • Handtekening — verplicht onderdeel: een ongetekende APK wordt niet geïnstalleerd op apparaten.
  • Bouw vindt plaats via Gradle: van Java/Kotlin tot gecomprimeerde DEX-bytecode.
  • Externe winkels en directe APK-installatie blijven buiten Google Play in trek.

Wat is APK en waarvoor wordt het gebruikt

APK (Android Package Kit) is een archiefformaat waarin een Android-app wordt verpakt voor distributie. Technisch gezien is APK een ZIP-archief met een bepaalde structuur dat alle componenten bevat die nodig zijn om de app op een apparaat te laten werken.

Geschiedenis van het formaat

Het APK-formaat verscheen samen met de eerste versie van Android in 2008. Als basis werd de JAR-standaard (Java Archive) genomen, die op zijn beurt op ZIP is gebaseerd. Deze overerving zorgde voor compatibiliteit met bestaande archiefhulpmiddelen — elke archiveringsprogramma opent APK als een gewone ZIP.

Toepassingsgebieden

Google Play is het belangrijkste distributiekanaal voor APK, maar het formaat wordt ook in andere scenario's gebruikt: directe installatie via de browser (sideloading), bedrijfsapp-winkels, testen op ontwikkelaarsapparaten en installatie in emulators. Volgens Statista vindt ongeveer 15% van de Android-app-installaties in 2025 buiten Google Play plaats.

De interne structuur van een APK-bestand

De interne structuur van APK is strikt gereguleerd: elke app moet bepaalde bestanden en mappen bevatten. Overtreding van de structuur leidt tot een installatiefout.

Bestand/mapDoel
AndroidManifest.xmlApp-manifest: machtigingen, componenten, SDK-versie
classes.dexGecompileerde DEX-bytecode (kan meerdere bestanden zijn)
resources.arscGecompileerde bronnen: strings, stijlen, lay-outs
res/Niet-gecompileerde bronnen: afbeeldingen, lettertypen, XML
lib/Native bibliotheken (.so) voor verschillende CPU-architecturen
META-INF/Metadata: certificaten, bestandslijsten, hashes

AndroidManifest.xml

Het manifest is het centrale configuratiebestand van de app. In gecompileerde binaire vorm (niet in leesbare XML) bevat het de pakketnaam, versie, lijst van activiteiten, services, machtigingen en SDK-vereisten. Zonder manifest weet het systeem niet hoe het de app moet starten.

DEX-bestanden

De broncode in Java of Kotlin wordt gecompileerd naar DEX-bestanden (Dalvik Executable). Het hoofdbestand heet classes.dex. Als de bytecode de limiet van 64K methoden overschrijdt, worden classes2.dex, classes3.dex enzovoort gemaakt — het multidex-mechanisme.

Native bibliotheken

De map lib/ bevat gecompileerde C/C++-bibliotheken voor verschillende architecturen: armeabi-v7a, arm64-v8a, x86, x86_64. Elke bibliotheek heeft de extensie .so (Shared Object). Moderne apps leveren meestal alleen arm64-v8a.

Het bouwproces van APK via Gradle

Het bouwen van een APK is een meerstappenproces dat wordt geautomatiseerd door het buildsysteem Gradle en de Android Gradle Plugin. Elke stap transformeert bronbestanden in componenten van het uiteindelijke archief.

Bouwstappen

De broncode wordt gecompileerd naar Java-bytecode (.class), vervolgens geconverteerd naar DEX via de tool d8 (voorheen dx). Bronnen worden gecompileerd naar binair formaat via AAPT2. Alle componenten worden verpakt in een ZIP-archief en ondertekend met een digitale handtekening.

kotlin
// build.gradle.kts — basisconfiguratie van APK-bouw
android {
    defaultConfig {
        applicationId = "com.example.app"
        minSdk = 24
        targetSdk = 34
        versionCode = 1
        versionName = "1.0.0"
    }
    buildTypes {
        release {
            isMinifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt")
            )
        }
    }
}

ProGuard en groottevermindering

ProGuard of R8 verduisteren de code, verwijderen ongebruikte klassen en methoden, waardoor de APK-grootte afneemt. Zonder verduistering bevat APK volledige klassennamen, wat decompilatie vergemakkelijkt. R8 voert ook bytecode-optimalisatie uit op DEX-niveau.

APK ondertekenen: v1, v2, v3 en v4 schema's

Een digitale handtekening is een verplicht onderdeel van APK. Android installeert geen ongetekende pakketten. De handtekening garandeert dat de app niet is gewijzigd na publicatie en bepaalt aan wie het pakket toebehoort.

Evolutie van ondertekeningsschema's

v1 (JAR signing) — het originele schema gebaseerd op het ondertekenen van elk bestand in het archief. Kwetsbaarheid: bestanden kunnen uit META-INF worden verwijderd zonder detectie. v2 (APK Signature Scheme v2) verscheen in Android 7.0 — het hele archief wordt ondertekend, wat wijzigingen voorkomt. v3 ondersteunt sleutelrotatie en v4 ondersteunt incrementele installatie.

Google Play vereist v2 of hoger voor alle nieuwe apps sinds augustus 2021. Het wordt aanbevolen om APK met alle drie schema's te ondertekenen voor maximale compatibiliteit met verschillende Android-versies.

Het ondertekeningsproces via Gradle

In build.gradle worden keystore, wachtwoord en alias opgegeven. De privésleutel wordt opgeslagen in een versleutelde opslagplaats. Voor publicatie in Google Play wordt App Signing gebruikt — Google bewaart de privésleutel en de ontwikkelaar uploadt de ondertekende APK.

APK installeren op een Android-apparaat

Het installeren van APK gebeurt via de systeempakketbeheerder PackageManager. Het proces omvat handtekeningverificatie, het parseren van het manifest, het kopiëren van bestanden en DEX-optimalisatie via dex2oat.

Installeren via ADB

De tool ADB (Android Debug Bridge) maakt het mogelijk APK rechtstreeks vanaf de ontwikkelaarscomputer te installeren. Het commando `adb install app.apk` kopieert het bestand naar het apparaat en start de installatie. De vlag -r herinstalleert de app met behoud van gegevens, de vlag -d staat installatie toe van een versie met een lagere versionCode.

Installatiebeveiliging

Sinds Android 8.0 vereist het systeem voor elke app afzonderlijk bevestiging van installatie uit onbekende bronnen. Android 14 heeft de controle versterkt: installatie van APK via externe winkels is alleen mogelijk na expliciete toestemming in de instellingen. Google Play Protect scant elke APK bij installatie op schadelijke code.

APK Expansion Files (OBB)

Voor apps groter dan 150 MB ondersteunt Google Play Expansion Files — aanvullende OBB-pakketten tot 2 GB elk. OBB-bestanden maken geen deel uit van de APK, maar worden na installatie apart gedownload. Het formaat ondersteunt twee typen: main (basisbronnen) en patch (updates).

kotlin
// APK-versie controleren via PackageManager
val pm = packageManager
val info = pm.getPackageInfo(
    "com.example.app",
    PackageManager.GET_ACTIVITIES
)
Log.d("APK", "Versie: ${info.versionName}")

dex2oat-optimalisatie

Op apparaten met ART (Android Runtime) wordt na installatie compilatie van DEX naar native code gestart via dex2oat. Het proces kan enkele seconden duren en vergroot de grootte van de geïnstalleerde app, maar versnelt het opstarten ervan.

APK vs AAB: welk formaat kiezen

AAB (Android App Bundle) is een formaat dat Google promoot als alternatief voor APK voor publicatie in Google Play. Het verschil is fundamenteel: AAB wordt niet direct geïnstalleerd, maar dient als container waaruit Google Play geoptimaliseerde APK's genereert.

ParameterAPKAAB
DownloadgrootteVolledig archiefAlleen benodigde componenten
Directe installatieJaNee (APK genereren)
DistributieElk kanaalGoogle Play
VersiebeheerVersie in manifestDynamic Delivery
PublicatieGoogle Play + externeGoogle Play

Google Play vereist AAB sinds augustus 2021 voor nieuwe apps. APK blijft echter het belangrijkste formaat voor distributie buiten Google Play — via websites, bedrijfswinkels en testen.

Veelvoorkomende problemen met APK en oplossingen

Ontwikkelaars komen regelmatig problemen tegen bij het bouwen en installeren van APK's. De meeste hebben te maken met versie-incompatibiliteit, handtekening of archiefstructuur.

INSTALL_FAILED_UPDATE_INCOMPATIBLE

De fout treedt op bij het proberen te installeren van een APK met dezelfde pakketnaam maar een andere handtekening. Android staat herinstallatie van een app met een gewijzigd certificaat niet toe. Oplossing — verwijder de oude versie voor installatie.

Overschrijding van de methodelimiet (65K)

Als het project de limiet van 65536 methoden overschrijdt, mislukt de build met een dex-fout. Oplossing — schakel multidex in build.gradle in of optimaliseer afhankelijkheden door ongebruikte bibliotheken te verwijderen.

APK te groot

Google Play beperkt de APK-grootte tot 150 MB. Voor grotere apps worden APK Expansion Files (OBB) gebruikt. Het wordt aanbevolen de grootte te verminderen via R8, WebP-afbeeldingen en Android App Bundle. Elke extra megabyte heeft een negatieve invloed op de installatieconversie: volgens Google vermindert elke 10 MB de conversie met 1%.

Decompilatie van APK en beveiliging

APK kan worden gedecompileerd met tools als JADX, APKTool of Bytecode Viewer. JADX herstelt de originele Java-code uit DEX, waardoor apps zonder verduistering volledig leesbaar zijn. Voor codebescherming wordt ProGuard/R8 gebruikt, die klassen, methoden en velden hernoemt naar korte onleesbare namen en debug-informatie verwijdert.

Analyse van APK via tools

Voor analyse van APK-inhoud worden Android Studio Profiler, apkanalyzer (CLI-tool uit Android SDK) en externe hulpprogramma's gebruikt. apkanalyzer toont de grootte van elk APK-onderdeel: DEX, bronnen, native bibliotheken en handtekening. Analyse helpt te identificeren welke afhankelijkheden de meeste ruimte innemen en een beslissing te nemen over vervanging of verwijdering.

Veelgestelde vragen

Kan APK worden geopend als een gewoon ZIP-archief?

Ja, elk archiveringsprogramma (7-Zip, WinRAR) opent APK als ZIP. De inhoud kan worden bekeken, maar voor decompilatie van de code zijn speciale tools nodig — JADX of apktool.

Wat is het verschil tussen APK en XAPK?

XAPK is een niet-officieel formaat dat door sommige externe winkels wordt gebruikt. Het combineert APK met extra OBB-bestanden in één archief. Google Play en de officiële Android-documentatie gebruiken XAPK niet.

Moet APK worden ondertekend voor testen?

Android Studio ondertekent automatisch de debug-build met debug.keystore bij het starten op het apparaat. Voor distributie van een testversie aan het team is een handtekening met een releasesleutel of het gebruik van App Signing vereist.

Hoe kan de APK-grootte worden verkleind?

Gebruik R8 voor verduistering en minimalisatie, converteer afbeeldingen naar WebP, verwijder ongebruikte bronnen via Lint, en schakel voor grote projecten over naar Android App Bundle met Dynamic Delivery.

Kan APK na publicatie worden gewijzigd?

Nee — elke wijziging van APK na ondertekening verbreekt de digitale handtekening. Voor een update moet een nieuwe versie met verhoogde versionCode worden gebouwd en ondertekend.

Samenvatting

  • APK — Android-installatiepakketformaat op basis van ZIP met verplichte digitale handtekening.
  • Structuur omvat manifest, DEX-bytecode, bronnen, native bibliotheken en certificaten.
  • Bouw gebeurt via Gradle met compilatie naar DEX via tool d8.
  • Handtekening is verplicht: schema's v1, v2, v3 en v4 bieden verschillende beschermingsniveaus.
  • Installatie mogelijk via Google Play, ADB, browser en bedrijfswinkels.
  • AAB vervangt APK in Google Play, maar APK blijft de standaard voor externe distributie.
  • Beperkingen: limiet 150 MB voor Google Play, 64K methoden zonder multidex, verplichte handtekening.

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