Het Android-ecosysteem gebruikt verschillende bestandsindelingen voor het verpakken, distribueren en opslaan van app-gegevens. Als u ooit een app van een externe bron heeft gedownload, bent u waarschijnlijk bestandsextensies tegengekomen die verder gaan dan de bekende APK. Formaten zoals XAPK, APKS, APKM, AAB en OBB dienen elk een specifiek doel in de levenscyclus van de Android-app.
Deze handleiding is bedoeld als een compleet naslagwerk voor elk belangrijk Android-bestandsformaat. Ontwikkelaars, ervaren gebruikers die apps sideloaden en nieuwsgierige lezers die alleen maar willen weten wat deze bestanden eigenlijk bevatten, zullen elk formaat hieronder in duidelijke taal vinden.
APK: Android-pakketkit
De APK is het fundamentele bestandsformaat voor Android-applicaties. Het is het standaard installatieformaat sinds de introductie van Android en blijft het formaat dat het Android-besturingssysteem van nature begrijpt voor de installatie van apps.
Wat het bevat
Een APK-bestand is in wezen een ZIP-archief met een specifieke interne structuur:
- AndroidManifest.xml, binair XML-bestand waarin de pakketnaam, componenten, machtigingen en vereisten van de app worden aangegeven
- classes.dex (en classes2.dex, enz.), Gecompileerde Dalvik-bytecode met de Java / Kotlin-code van de app
- resources.arsc, Gecompileerde brontabel die bron-ID's toewijst aan hun waarden
- res/, Directory met bronnen zoals lay-outs, tekenbare bestanden en tekenreeksen waarnaar wordt verwezen via ID
- assets/, onbewerkte activabestanden waartoe de app tijdens runtime toegang heeft via AssetManager
- lib/, native bibliotheken georganiseerd door CPU-architectuur (bijv). lib/arm64-v8a/
- META-INF/, handtekeningbestanden en certificaatinformatie
Wanneer je het tegenkomt
APK-bestanden zijn wat u downloadt wanneer u apps van externe bronnen sideloadt. Ze worden ook vanuit de Play Store op uw apparaat geïnstalleerd, hoewel moderne Play Store-installaties vaak gesplitste APK's gebruiken die zijn gegenereerd op basis van app-bundels.
Hoe ermee om te gaan
APK-bestanden kunnen rechtstreeks op Android worden geïnstalleerd door ze te openen met bestandsbeheer of door adb install te gebruiken. U kunt de inhoud ook onderzoeken door de extensie te hernoemen naar .zip en deze uit te pakken, of door onze APK-verificatie te gebruiken om handtekeningen en metagegevens te inspecteren.
AAB: Android-appbundel
De Android App Bundle is het publicatieformaat van Google voor de Play Store. Sinds augustus 2021 moeten alle nieuwe apps in de Play Store worden ingediend als AAB's in plaats van APK's.
Wat het bevat
Een AAB-bestand gebruikt een op protocolbuffer gebaseerd formaat en bevat:
- Basismodule: Kernapp-code en bronnen vereist op elk apparaat
- Configuratiesplitsingen: Bronnen geordend op schermdichtheid, CPU-architectuur en taal
- Dynamische functiemodules: Optionele functies die op aanvraag kunnen worden gedownload
- Metagegevens bundelen: Instructies voor Google Play voor het genereren van apparaatspecifieke APK's
Wanneer je het tegenkomt
Als gewone gebruiker komt u doorgaans niet rechtstreeks AAB-bestanden tegen. Ze worden door ontwikkelaars gebruikt tijdens het bouw- en uploadproces. Als u echter een AAB-bestand verkrijgt (misschien uit de build-artefacten van een open-sourceproject), moet u dit vóór de installatie naar APK-indeling converteren.
Hoe ermee om te gaan
Gebruik het opdrachtregelprogramma bundletool van Google of onze AAB naar APK-converter om een installeerbare APK te genereren op basis van een AAB-bestand. Het conversieproces creëert een universele APK (groter, werkt overal) of apparaatspecifieke APK's (kleiner, apparaatgericht).
XAPK: uitgebreide APK
XAPK is een containerformaat dat gepopulariseerd is door APKPure en dat een APK bundelt samen met de bijbehorende OBB-gegevensbestanden of APK-configuraties opsplitst in één downloadbaar pakket.
Wat het bevat
Een XAPK-bestand is een ZIP-archief met daarin:
- Een basis-APK-bestand (de hoofdapplicatie)
- OBB-bestanden (uitbreidingsgegevens voor games en grote apps)
- Splits optioneel APK-bestanden voor verschillende apparaatconfiguraties
- Een manifest.json-bestand dat de inhoud van het pakket en de installatie-instructies beschrijft
- Een pictogrambestand voor weergavedoeleinden
Wanneer je het tegenkomt
U komt XAPK-bestanden tegen bij het downloaden van grote apps of games uit app-opslagplaatsen van derden. Games waarvoor extra gegevensbestanden nodig zijn (voorheen gedistribueerd als OBB-bestanden) worden gewoonlijk verpakt als XAPK's om het downloadproces in één enkel bestand te vereenvoudigen.
Hoe ermee om te gaan
XAPK-bestanden kunnen niet rechtstreeks worden geïnstalleerd door het standaardpakketinstallatieprogramma van Android. Je hebt een speciale XAPK-installatie-app nodig of je kunt onze XAPK naar APK-converter gebruiken om de basis-APK te extraheren. Voor games waarvoor OBB-gegevens nodig zijn, moet u ook de OBB-bestanden uitpakken en in de juiste map plaatsen met behulp van onze OBB-extractor.
APKS: APK-set
Het APKS-formaat is de uitvoer van de bundeltool van Google bij het genereren van apparaatspecifieke APK's uit een AAB-bestand. Het wordt ook door sommige app-back-uptools gebruikt om gesplitste APK-installaties op te slaan.
Wat het bevat
Een APKS-bestand is een ZIP-archief met daarin:
- toc.pb, een inhoudsopgave van een protocolbuffer die de gesplitste structuur beschrijft
- splits/, map met de basis-APK en alle gesplitste configuratie-APK's
- Optioneel zelfstandige APK's voor apparaten die geen gesplitste installaties ondersteunen
Wanneer je het tegenkomt
U komt APKS-bestanden tegen wanneer u Bundletool lokaal gebruikt, wanneer u een back-up maakt van apps die zijn geïnstalleerd vanuit de Play Store, of wanneer u downloadt vanuit bepaalde opslagplaatsen van derden die de gesplitste APK-structuur behouden.
Hoe ermee om te gaan
U kunt APKS-bestanden installeren met behulp van de opdracht install-apks van Bundletool of ze converteren naar een enkele APK met behulp van onze APKS naar APK-fusie. Houd er rekening mee dat het samenvoegen van gesplitste APK's in een universele APK de bestandsgrootte kan vergroten, omdat alle configuratiebronnen worden gecombineerd.
APKM: APKMirror-pakket
APKM is een eigen containerformaat gemaakt door APKMirror voor het distribueren van apps die uit meerdere gesplitste APK's bestaan. Het dient een soortgelijk doel als XAPK en APKS, maar gebruikt de eigen structuur van APKMirror.
Wat het bevat
Een APKM-bestand is een ZIP-archief met daarin:
- Een basis-APK-bestand
- Splits APK-bestanden voor verschillende configuraties (dichtheid, ABI, taal)
- Een metadatabestand dat de pakketstructuur beschrijft
Wanneer je het tegenkomt
U komt uitsluitend APKM-bestanden tegen bij het downloaden van APKMirror. De site gebruikt dit formaat voor apps die als appbundels in de Play Store worden gedistribueerd en dus uit meerdere gesplitste APK's bestaan.
Hoe ermee om te gaan
APKM-bestanden vereisen de APKMirror Installer-app voor directe installatie, of u kunt de inhoud uitpakken (aangezien het een ZIP-bestand is) en de gesplitste APK's handmatig installeren met behulp van de opdracht install-multiple van ADB. De basis-APK kan ook zelfstandig worden uitgepakt en geïnstalleerd, hoewel sommige functionaliteit mogelijk beperkt is zonder de configuratiesplitsingen.
OBB: ondoorzichtige binaire blob
OBB-bestanden zijn uitbreidingsbestanden die door Android-apps (voornamelijk games) worden gebruikt om grote hoeveelheden gegevens op te slaan die de APK-groottelimiet van de Play Store overschrijden. Hoewel Google dit systeem grotendeels heeft vervangen door Play Asset Delivery, gebruiken veel bestaande apps nog steeds OBB-bestanden.
Wat het bevat
OBB-bestanden kunnen elk type gegevens bevatten dat de app nodig heeft:
- Speltexturen en 3D-modellen
- Audiobestanden en soundtracks
- Video-inhoud
- Niveaugegevens en kaarten
- Alle grote binaire gegevens die de ontwikkelaar ervoor kiest om extern op te slaan
Het formaat van de gegevens in een OBB-bestand is geheel aan de ontwikkelaar. Sommigen gebruiken ZIP-compressie, anderen gebruiken aangepaste binaire formaten. Het "Opaque" in de naam geeft aan dat Android het bestand als een zwarte doos behandelt.
Wanneer je het tegenkomt
OBB-bestanden worden aangetroffen bij het sideloaden van grote games of wanneer ze worden gebundeld in XAPK-pakketten. Ze worden opgeslagen op /Android/obb/[package.name]/ op de gedeelde opslag van het apparaat.
Hoe ermee om te gaan
OBB-bestanden moeten in de juiste map worden geplaatst, zodat de app ze kan vinden. De bestandsnaam volgt doorgaans het patroon main.[version].[package.name].obb of patch.[version].[package.name].obb. Gebruik onze OBB-extractor om OBB-bestanden uit XAPK-pakketten te extraheren.
DEX: uitvoerbaar bestand Dalvik
DEX-bestanden bevatten de gecompileerde bytecode die in de runtime-omgeving van Android draait. Ze bevinden zich in APK-bestanden, maar kunnen ook onafhankelijk bestaan tijdens ontwikkeling en foutopsporing.
Wat het bevat
Een DEX-bestand bevat:
- Gecompileerde Java/Kotlin-bytecode in Dalvik-instructieformaat
- Tekenreeksconstanten en typedefinities
- Methode en veldreferenties
- Klassendefinities en hun hiërarchieën
Technische details
Eén DEX-bestand heeft een methodereferentielimiet van 65.536 (de "64K-limiet"). Apps die deze limiet overschrijden, gebruiken meerdere DEX-bestanden (classes.dex, classes2.dex, enz.), een techniek die multidex wordt genoemd. Moderne bouwtools verwerken dit automatisch.
ODEX-, VDEX- en ART-bestanden
Dit zijn geoptimaliseerde versies van DEX-bestanden die door Android Runtime zijn gemaakt tijdens of na de installatie:
- ODEX (geoptimaliseerde DEX): Bevat vooraf gecompileerde native machinecode voor veelgebruikte methoden. Gegenereerd tijdens inactief onderhoud op basis van gebruiksprofielen.
- VDEX (geverifieerde DEX): Bevat de geverifieerde DEX-bytecode met vooraf berekende verificatieresultaten. Dit versnelt het daaropvolgende opstarten en het starten van apps door herverificatie over te slaan.
- ART (Android Runtime-afbeelding): Bevat vooraf geïnitialiseerde klasseobjecten en heapgegevens. Hierdoor kan de runtime het laden en initialiseren van klassen voor algemene raamwerkklassen overslaan tijdens het opstarten.
Deze bestanden worden door het systeem gegenereerd en zijn niet iets waar gebruikers doorgaans rechtstreeks mee communiceren. Ze worden opgeslagen in /data/dalvik-cache/ of naast de APK in /data/app/.
SO: Gedeeld object (eigen bibliotheken)
Bestanden met de extensie .so zijn native gedeelde bibliotheken die zijn samengesteld voor specifieke CPU-architecturen. Ze bevatten machinecode geschreven in C, C++ of Rust die rechtstreeks op de processor draait, zonder de overhead van de Dalvik/ART-runtime.
Architectuurvarianten
- armeabi-v7a, 32-bit ARM (de meeste oudere apparaten)
- arm64-v8a, 64-bit ARM (de meeste moderne telefoons)
- x86, 32-bit Intel/AMD (sommige tablets en emulators)
- x86_64, 64-bit Intel/AMD (Chromebooks en emulators)
Wanneer een APK native bibliotheken bevat, moet deze de juiste architectuur voor het doelapparaat bevatten. Als de verkeerde architectuur wordt meegeleverd, crasht de app met een UnsatisfiedLinkError.
XML-bestanden in Android
Android gebruikt XML op grote schaal, maar in twee verschillende vormen:
Binaire XML
Binnen APK-bestanden worden XML-bronnen (lay-outs, manifesten, stringbestanden) opgeslagen in een gecompileerd binair formaat genaamd AXML. Dit formaat is compacter en sneller te parseren dan tekst-XML. Tools zoals aapt2 of apktool kunnen binaire XML decompileren naar leesbare tekst.
Tekst-XML
Tijdens de ontwikkeling hebben XML-bestanden het standaardtekstformaat. Het bouwproces compileert ze naar binaire XML voor opname in de APK. Configuratiebestanden zoals network_security_config.xml en bronbestanden in de map res/ beginnen als tekst-XML.
ProGuard/R8-toewijzingsbestanden
Hoewel het geen Android-specifiek formaat is, zijn kaartbestanden (mapping.txt belangrijk voor het begrijpen van versluierde apps). Wanneer ontwikkelaars codeverkleiningstools zoals R8 gebruiken, worden klasse- en methodenamen vervangen door korte, betekenisloze identificatiegegevens. Het toewijzingsbestand registreert de vertalingen van de oorspronkelijke naar versluierde namen, essentieel voor het lezen van crashrapporten.
Android-back-upformaat (AB)
Bestanden met de extensie .ab zijn Android-back-uparchieven gemaakt door adb backup. Ze bevatten een tar-archief (optioneel gecomprimeerd en gecodeerd) van de gegevensmap van een app. Dit formaat wordt verouderd ten gunste van cloudgebaseerde back-upoplossingen, maar wordt nog steeds door sommige back-uptools gebruikt.
IMG- en partitieafbeeldingen
Hoewel ze niet app-gerelateerd zijn, gebruiken Android-systeemimages verschillende formaten die het vermelden waard zijn:
- systeem.img: De alleen-lezen systeempartitie met het Android-framework en vooraf geïnstalleerde apps
- boot.img: Bevat de Linux-kernel en initiële ramdisk
- leverancier.img: Hardwarespecifieke stuurprogramma's en firmware
- super.img: Dynamische partitiecontainer gebruikt in moderne apparaten (Android 10+)
Formaatvergelijkingstabel
Hier is een korte referentie waarin de belangrijkste app-distributieformaten worden vergeleken:
- APK: Eén bestand, direct installeerbaar, universeel (alle configuraties inbegrepen), groter formaat
- AAB: Publicatieformaat, niet direct installeerbaar, vereist verwerking door Play Store
- XAPK: Container (APK + OBB/splits), vereist installatieprogramma of extractie, gebruikt door APKPure
- APK's: Container (gesplitste APK's), Bundletool-indeling, vereist installatieprogramma of fusie
- APKM: Container (gesplitste APK's), APKMirror-indeling, vereist hun installatieprogramma
Het juiste gereedschap kiezen
Afhankelijk van het formaat waarmee u werkt, zijn verschillende hulpmiddelen geschikt:
- Heb je een XAPK? Gebruik onze XAPK naar APK-converter om de installeerbare APK uit te pakken
- Heeft u een AAB? Gebruik onze AAB naar APK-converter om een universele APK te genereren
- Heeft u gesplitste APK's (APKS)? Gebruik onze APKS naar APK-fusie om ze te combineren
- Wilt u een APK verifiëren? Gebruik onze APK-verificatie om handtekeningen te controleren
- OBB-bestanden nodig van een XAPK? Gebruik onze OBB-extractor om uitbreidingsbestanden uit te pakken
Welk Android-pakketformaat moet u gebruiken?
De verscheidenheid aan bestandsformaten van het Android-ecosysteem weerspiegelt de evolutie van het platform van eenvoudige APK's met één bestand naar geavanceerde modulaire leveringssystemen. Elk formaat bestaat om een specifiek probleem op te lossen: AAB's verkleinen de downloadgrootte, XAPK's vereenvoudigen de distributie van apps met meerdere bestanden, OBB's verwerken grote gamegegevens en gesplitste APK's maken apparaatspecifieke optimalisatie mogelijk.
Zodra u deze formaten begrijpt, kunt u elk Android-pakket aan dat u tegenkomt, of u nu apps sideloadt, een back-up van uw apparaat maakt of uw eigen applicaties ontwikkelt. Het belangrijkste is dat de meeste van deze formaten uiteindelijk containers zijn die APK-bestanden in verschillende configuraties bevatten, en met de juiste tools kun je altijd extraheren wat je nodig hebt.