Was ist das APK-Dateiformat?
Eine Datei mit der Erweiterung .apk enthält ein komprimiertes Archiv mit einer Anwendung, einem Spiel oder einer Firmware für das Android-System. APK-Pakete basieren auf dem ZIP/JAR-Containerformat, was bedeutet, dass jedes gängige Archivierungswerkzeug deren Inhalt öffnen und einsehen kann. Google Play hat ursprünglich eine Größenbeschränkung von 100 MB für .apk-Downloads festgelegt, mit bis zu zwei Erweiterungsdateien von je bis zu 2 GB für zusätzliche Ressourcen; seit August 2021 verlangt Google Play, dass neue Apps als .AAB (Android App Bundles) veröffentlicht werden, die bei der Installation gerätespezifische Split-APKs erzeugen, anstatt ein einzelnes monolithisches Paket auszuliefern.
Aufbau einer APK-Datei
Der Aufbau von APK-Dateien basiert auf dem JAR-Archiv - sie können folgende Unterordner und Dateien enthalten:
res- mit einer Beschreibung der Ressourcen in unkompilierter Form,lib- enthält kompilierte Quellen und Anwendungsbibliotheken, unterteilt nach verschiedenen Rechenplattformen (z. B.arm64-v8a,x86_64),META-INF- mit Dateien, die Informationen über das Paket enthalten, z. B. die DateiMANIFEST.MFoder Zertifikate,assets- enthält verschiedene von der App verwendete Ressourcen,classes.dex- kompilierter Dalvik/ART-Bytecode, der von der Android-Laufzeitumgebung ausgeführt wird,AndroidManifest.xml- binär kodiertes Manifest, das die Berechtigungen, Komponenten und SDK-Anforderungen der App deklariert,resources.arsc- vorkompilierte Ressourcentabelle, die IDs auf Strings, Layouts und Drawables abbildet.
Android Package-Dateien werden zur Erstellung und Verteilung von Programmen für mobile Plattformen verwendet, die auf dem Android-System betrieben werden. Der Inhalt von .apk-Dateien kann mit den meisten Dekomprimierungsprogrammen, die ZIP-Komprimierung unterstützen, entpackt oder einfach durch Umbenennen der Datei in .zip eingesehen werden. Um die Integrität zu gewährleisten, sind Pakete durch das APK Signature Scheme v2/v3 (und v4 für inkrementelle Updates) geschützt; die Installation wird verweigert, wenn die Signatur nicht übereinstimmt. Die Installation von .apk-Paketen außerhalb des Play Stores ist standardmäßig nicht gestattet - Benutzer müssen die Berechtigung Apps aus unbekannten Quellen installieren in den Android-Einstellungen aktivieren oder das Paket über adb install app.apk übertragen. Apps, die für eine einzelne .apk zu groß sind, können als .XAPK verteilt werden, das eine Basis-APK mit einem oder mehreren Split-APKs in einem einzigen Archiv bündelt.
Sicherheit
RISIKO: HIGHAPK ist der häufigste Android-Malware-Verbreitungsweg: Sideloading umgeht den Google-Play-Protect-Scan. Risikocheck für Benutzer: Installieren Sie nur aus vertrauenswürdigen Quellen (Google Play, F-Droid, APKMirror - das Signaturen gegen die des Entwicklers prüft), überprüfen Sie, ob die angeforderten Berechtigungen dem Zweck der App entsprechen, installieren Sie niemals eine APK, die unaufgefordert per Chat/SMS angekommen ist („Smishing“-Kampagnen), und vergleichen Sie die App-Signatur beim Aktualisieren. Der Umbenennen-in-ZIP-Trick ermöglicht es Ihnen, den Inhalt vor der Installation zu prüfen.
Formatdetails
kurz gefasstProgramme zum Öffnen von APK-Dateien
Technische Details
technische Spezifikation| Kodierung | Binär |
| Byte-Reihenfolge | Little-endian |
| Container | ZIP-Archiv (auch als JAR gültig) |
| Komprimierung | DEFLATE pro Eintrag; ausrichtungsempfindliche Einträge werden unkomprimiert gespeichert (STORED-Methode) und zipaligned |
| Signierung / Integrität | APK Signature Scheme v2/v3 (Block vor dem zentralen ZIP-Verzeichnis eingefügt); v4 für inkrementelle On-Device-Updates; Installation bei Signaturabweichung verweigert |
| Magic Bytes | 50 4B 03 04 - Standard-ZIP-„PK“-Lokaldatei-Header an Offset 0; von einfachem ZIP durch das Vorhandensein von AndroidManifest.xml und classes.dex zu unterscheiden |
| Interne Dateien | AndroidManifest.xml, classes.dex (+ classes2.dex …), resources.arsc, res/, lib/, assets/, META-INF/ |
| Bytecode | Dalvik Executable (DEX) in classes.dex - aus Java/Kotlin-Quellcode kompiliert, von ART (Android Runtime) ausgeführt |
| Ausrichtung | zipalign erzwingt 4-Byte-Ausrichtung für unkomprimierte Einträge; Android 15+ zielt auf 16-KB-Seitenausrichtung ab |
| Manifest-Format | Binär kodiertes XML (AXML), das Paketname, Berechtigungen, Activity/Service/Provider-Komponenten, minSdkVersion, targetSdkVersion deklariert |
| Native-Bibliotheks-Layout | lib/<ABI>/-Unterverzeichnis pro Architektur: arm64-v8a, armeabi-v7a, x86, x86_64 |
| Ressourcentabelle | resources.arsc - flache Binärdatei, die ganzzahlige Ressourcen-IDs auf Strings, Layouts, Drawables und Konfigurationsvarianten abbildet |
| Typische Größe | 2 MB - 1,5 GB; APKs für Basis-Apps üblicherweise 5-100 MB; Spiele mit gebündelten Assets erreichen den oberen Bereich |
| MIME-Typ | application/vnd.android.package-archive |
| Plattform | Android (nativ); unter Windows, Linux, macOS über Emulatoren ausführbar (BlueStacks, Android Studio AVD, Waydroid) |
| Veröffentlicht | 2008 (Android 1.0) |
| Neueste Version | APK Signature Scheme v3 (Android 9, 2018); v4 incremental (Android 11, 2020) |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | source.android.com |