Apk (Dateiformat)
Das Android-Paket mit der Dateiendung apk[1] ist das Dateiformat, das vom Android-Betriebssystem und einer Reihe anderer Android-basierter Betriebssysteme zur Verteilung und Installation von mobilen Apps, mobilen Spielen und Middleware verwendet wird. Es kann entweder in Java oder Kotlin geschrieben werden.
APK-Dateien können aus Android App Bundles generiert und signiert werden.[2]
Überblick
BearbeitenAPK ist analog zu anderen Softwarepaketen wie APPX in Microsoft Windows oder einem Debian-Paket in Debian-basierten Betriebssystemen. Um eine APK-Datei zu erstellen, wird zunächst ein Programm für Android mit einem Tool wie Android Studio[3] oder Visual Studio kompiliert und dann alle seine Teile in eine Containerdatei gepackt. Eine APK-Datei enthält den gesamten Programmcode (z. B. .dex-Dateien), Ressourcen, Assets, Zertifikate und Manifestdateien. Wie bei vielen Dateiformaten können APK-Dateien einen beliebigen Namen haben, aber es kann erforderlich sein, dass der Dateiname mit der Dateierweiterung endet, um als solche erkannt zu werden.[4][5][6]
Bei den meisten Android-Implementierungen können Benutzer APK-Dateien erst dann manuell installieren, nachdem sie die Einstellung „Unbekannte Quellen“ aktiviert haben, die die Installation aus anderen als vertrauenswürdigen Quellen wie Google Play zulässt. Dies kann aus vielen Gründen geschehen, beispielsweise während der Entwicklung von Apps, um Apps zu installieren, die nicht im Store gefunden werden, oder um eine ältere Version einer vorhandenen App zu installieren.[7][8][9]
Verwendung auf anderen Betriebssystemen
BearbeitenAuf der Windows-11-Ankündigungsveranstaltung im Juni 2021 stellte Microsoft das neue Windows-Subsystem für Android (WSA) vor, das die Unterstützung für das Android Open Source Project (AOSP) ermöglicht und es Benutzern ermöglicht, Android-Apps auf ihrem Windows-Desktop auszuführen. Microsoft hat bestätigt, dass Benutzer Android-Apps von der Seite auf Windows laden können und dass es möglich wäre, APK-Dateien zu installieren, die von Drittanbieterquellen heruntergeladen wurden.[10]
Benutzer konnten WSA nicht verwenden, als das Betriebssystem gestartet wurde, aber es ist derzeit mit Windows Insidern in den Vereinigten Staaten getestet.[11]
Google plant, irgendwann im Jahr 2022 eine eigene Methode zum Ausführen von Android-Apps unter Windows einzuführen.[12]
Packungsinhalt
BearbeitenEine APK-Datei ist ein Archiv, das normalerweise die folgenden Dateien und Verzeichnisse enthält:
META-INF
Verzeichnis:MANIFEST.MF
: die Manifest-Datei- Das Zertifikat der Anwendung
CERT.SF
: Die Liste der Ressourcen und ein SHA-1-Digest der entsprechenden Zeilen in der Datei MANIFEST.MF; zum Beispiel:Signatur-Version: 1.0 Erstellt von: 1.0 (Android) SHA1-Digest-Manifest: wxqnEAI0UA5nO5QJ8CGMwjkGGWE= ... Name: res/layout/exchange_component_back_bottom.xml SHA1-Digest: eACjMjESj7Zkf0cBFTZ0nqWrt7w= Name: res/drawable-hdpi/icon.png SHA1-Digest: DGEqylP8W0n0iV/ZzBx3MW0WGCA=
lib
: das Verzeichnis, das den kompilierten Code enthält, der plattformabhängig ist; das Verzeichnis ist darin in weitere Verzeichnisse aufgeteilt:armeabi-v7a
: kompilierter Code nur für die 32-Bit-Arm-Architektur ARMv7 und höherarm64-v8a
: kompilierter Code nur für die 64-Bit-Arm-Architektur ARMv8 („arm64“) und höherx86
: kompilierter Code nur für die 32-Bit-x86-Architektur IA-32 (auch „i386“)x86_64
: kompilierter Code nur für die 64-Bit-x86-Architektur x64 (auch „x86-64“ od. „amd64“)undmips
, veraltet seit NDK r17[13][14]armeabi
res
: das Verzeichnis, das Ressourcen enthält, die nicht in resources.arsc kompiliert wurden (siehe unten).assets
: Ein Verzeichnis mit Anwendungsressourcen, die perAssetManager
abgerufen werden können.AndroidManifest.xml
: Eine zusätzliche Android-Manifestdatei, die den Namen, die Version, die Zugriffsrechte und die referenzierten Bibliotheksdateien für die Anwendung beschreibt. Diese Datei kann in binärem Android-XML vorliegen, das mit Tools wie AXMLPrinter2, Apktool M oder Androguard in menschenlesbares Klartext-XML konvertiert werden kann.classes.dex
: Die im dex-Dateiformat kompilierten Klassen, die von Android Runtime (oder von der in Android 4.4 KitKat verwendeten virtuellen Dalvik-Maschine) ausgeführt werden.resources.arsc
: eine Datei, die vorkompilierte Ressourcen enthält, wie zum Beispiel binäres XML.
Einzelnachweise
Bearbeiten- ↑ Application Fundamentals. Abgerufen am 22. März 2022 (englisch).
- ↑ Jay Peters: Google is moving away from APKs on the Play Store. 30. Juni 2021, abgerufen am 22. März 2022 (englisch).
- ↑ Meet Android Studio. Abgerufen am 22. März 2022 (englisch).
- ↑ Inside the Android Application Framework - 2008 Google I/O Session Videos and Slides. Abgerufen am 22. März 2022.
- ↑ The Structure of Android Package (APK) Files. OPhone SDN. OPhone Software Developer Network, 26. Mai 2012, archiviert vom am 21. Mai 2012; abgerufen am 22. März 2022.
- ↑ The Structure of Android Package (APK) Files - Technical article - OPhone SDN [OPhone Software Developer Network]. 8. Februar 2011, archiviert vom am 15. August 2011; abgerufen am 22. März 2022.
- ↑ Jerry Hildenbr, published: Sideloading and Unknown Sources on Android: How to do it and fix errors. 16. April 2020, abgerufen am 22. März 2022 (englisch).
- ↑ Manish Kumar: APK File Extension – What APK File is and How to open it? – Tips Overflow. Archiviert vom am 30. März 2022; abgerufen am 22. März 2022 (amerikanisches Englisch).
- ↑ [Sharing] How to downgrade or revert into an older Android app version? In: 123musiq. Abgerufen am 22. März 2022 (amerikanisches Englisch).
- ↑ Mayank Parmar: Microsoft confirms Android apps will run on all Windows 11 PCs. In: Windows Latest. 27. Juni 2021, abgerufen am 22. März 2022 (amerikanisches Englisch).
- ↑ mattwojo: Windows Subsystem for Android™️. Abgerufen am 22. März 2022 (amerikanisches Englisch).
- ↑ Tom Warren: Google is bringing Android games to Windows in 2022. 9. Dezember 2021, abgerufen am 22. März 2022 (englisch).
- ↑ Android ABIs | Android NDK. Abgerufen am 22. März 2022 (englisch).
- ↑ Android Native Development Kit (NDK). Android, 19. März 2022, abgerufen am 22. März 2022.