Im August 2021 traf Google eine Entscheidung, die die Art und Weise, wie Android-Apps vertrieben werden, grundlegend veränderte: Alle neuen Apps, die im Google Play Store eingereicht werden, müssen das Android-App-Bundle (AAB)-Format anstelle des herkömmlichen APK verwenden. Diese Verschiebung betraf Entwickler, Benutzer und das gesamte Ökosystem der App-Verteilung von Drittanbietern. Aber was genau ist ein App Bundle, wie funktioniert es und warum sollte es Sie interessieren?
Dieser Leitfaden behandelt alles von den technischen Interna des AAB-Formats bis hin zu den praktischen Auswirkungen für Benutzer, die Apps mit Freunden teilen oder sie auf Geräten ohne Play Store-Zugriff installieren möchten.
Was ist ein Android-App-Bundle?
Ein Android App Bundle ist ein Veröffentlichungsformat, das den gesamten kompilierten Code und die gesamten Ressourcen einer App enthält, die Generierung des endgültigen installierbaren APK jedoch auf Google Play verschiebt. Betrachten Sie es als eine Master-Vorlage, aus der die Server von Google im Handumdrehen optimierte, gerätespezifische Pakete erstellen.
Im Gegensatz zu einem APK, bei dem es sich um ein sofort installierbares Paket handelt, kann eine AAB-Datei nicht direkt auf einem Gerät installiert werden. Es handelt sich um ein Build-Artefakt, das in den Play Store hochgeladen wird, wo es von der Infrastruktur von Google verarbeitet und maßgeschneiderte APKs für jede Gerätekonfiguration generiert.
Die Dateierweiterung lautet .aab und intern wird ein Protokollpufferformat in Kombination mit einer ZIP-ähnlichen Struktur verwendet. Es enthält den DEX-Bytecode der App, Ressourcen, Assets, native Bibliotheken und eine spezielle Bundle-Metadatendatei, die Google Play mitteilt, wie der Inhalt aufgeteilt wird.
Warum Google App-Bundles vorschreibt
Die Hauptmotivation hinter App Bundles ist Reduzierung der App-Downloadgröße. Eine typische Android-App muss mehrere Bildschirmdichten (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi), mehrere CPU-Architekturen (armeabi-v7a, arm64-v8a, x86, x86_64) und mehrere Sprachen unterstützen. Im traditionellen APK-Modell werden alle diese Ressourcen in einer einzigen Datei gebündelt, obwohl jedes Gerät nur einen Bruchteil davon benötigt.
Stellen Sie sich ein Spiel vor, das native Bibliotheken für vier CPU-Architekturen und Texturen für fünf Bildschirmdichten enthält. Das universelle APK könnte 200 MB groß sein, aber eine gerätespezifische Version, die nur die relevante Architektur und Dichte enthält, könnte 80 MB groß sein. Das bedeutet eine Reduzierung der Downloadgröße um 60 %.
Google berichtet, dass Apps, die App Bundles nutzen, im Durchschnitt 15 % kleiner sind als ihre universellen APK-Äquivalente. Bei großen Apps und Spielen können die Einsparungen viel dramatischer sein. Kleinere Downloads bedeuten schnellere Installationen, weniger Bandbreitenverbrauch und weniger abgebrochene Installationen aufgrund von Größenproblemen.
Wie App-Bundles intern funktionieren
Die Bündelstruktur
Eine AAB-Datei ist in Modulen organisiert, wobei jedes Modul seinen eigenen Code, seine eigenen Ressourcen und Assets enthält. Die gebräuchlichste Struktur umfasst:
- Basismodul: Enthält den Kern-App-Code und die Ressourcen, die jedes Gerät benötigt. Dies ist immer installiert.
- Konfigurationsaufteilungen: Separate Abschnitte für Sprachressourcen, Bildschirmdichteressourcen und native ABI-Bibliotheken (CPU-Architektur).
- Dynamische Funktionsmodule: Optionale Module, die nach der Erstinstallation bei Bedarf heruntergeladen werden können.
- Asset-Pakete: Große Assets wie Spielebenen oder Medien, die zur Installationszeit, bei Bedarf oder im Hintergrund bereitgestellt werden können.
Geteilte APK-Generierung
Wenn ein Nutzer eine App aus dem Play Store herunterlädt, prüfen die Server von Google die Konfiguration des Geräts und generieren einen Satz geteilter APKs, die auf das jeweilige Gerät zugeschnitten sind. Eine typische Installation könnte Folgendes umfassen:
- base.apk, Der Kernanwendungscode und die wesentlichen Ressourcen
- split_config.arm64_v8a.apk, Native Bibliotheken für die CPU des Geräts
- split_config.xxhdpi.apk, Ressourcen für die Bildschirmdichte des Geräts
- split_config.en.apk, Sprachressourcen für das Gebietsschema des Benutzers
Diese geteilten APKs werden zusammen als eine einzige logische App installiert. Der Android-Paketmanager behandelt sie als eine Anwendung, es handelt sich jedoch um physisch separate Dateien auf dem Gerät. Dies ist der Mechanismus, der die Größeneinsparungen ermöglicht.
Dynamische Lieferung
Eine der leistungsstärksten Funktionen von App Bundles ist die dynamische Bereitstellung. Entwickler können bestimmte Funktionen bei Bedarf als herunterladbar markieren. Beispielsweise könnte eine Fotobearbeitungs-App erweiterte Filter als dynamisches Funktionsmodul enthalten. Benutzer, die diese Filter nie verwenden, laden sie nie herunter, wodurch Speicherplatz gespart wird.
Dynamische Funktionsmodule werden zur Laufzeit über die Play Core-Bibliothek heruntergeladen und installiert. Die App kann prüfen, ob ein Modul installiert ist, und bei Bedarf dessen Download anfordern, sodass der Benutzer die neue Funktionalität als kleinen In-App-Download und nicht als vollständige Neuinstallation erlebt.
AAB vs. APK: Hauptunterschiede
Wenn Sie die Unterschiede zwischen diesen Formaten verstehen, können Sie besser klären, wann die einzelnen Formate geeignet sind:
- Installierbarkeit: APK-Dateien können direkt auf jedem Android-Gerät installiert werden. AAB-Dateien können nicht direkt installiert werden und müssen zuerst verarbeitet werden.
- Größe: Ein universelles APK enthält Ressourcen für alle Konfigurationen. Ein AAB ermöglicht eine gerätespezifische Bereitstellung, was zu kleineren Downloads führt.
- Unterzeichnung: Bei APKs signiert der Entwickler das endgültige installierbare Paket. Bei AABs signiert der Entwickler das Bundle und Google signiert die generierten APKs mithilfe von Play App Signing erneut.
- Verteilung: APKs können über jeden Kanal verbreitet werden. AABs sind in erster Linie für den Play Store konzipiert, obwohl Tools wie bundletool lokal APKs daraus generieren können.
- Teilbarkeit: Sie können eine APK-Datei ganz einfach mit einer anderen Person teilen. Das Teilen einer von einem AAB installierten App erfordert das Sammeln aller geteilten APKs, was komplexer ist.
Die Unterzeichnungskontroverse
Einer der am meisten diskutierten Aspekte des AAB-Mandats ist App-Signierung abspielen. Wenn ein Entwickler ein AAB hochlädt, verfügt Google über den Signaturschlüssel, der zum Signieren der endgültigen APKs verwendet wird, die den Nutzern bereitgestellt werden. Das bedeutet, dass Google technisch gesehen die Möglichkeit hat, den APK-Inhalt zu ändern, bevor er ihn signiert und übermittelt.
Google argumentiert, dass dies notwendig sei, da die von ihnen generierten geteilten APKs signiert werden müssten. Entwickler behalten einen Upload-Schlüssel zur Authentifizierung ihrer Uploads, aber der eigentliche App-Signaturschlüssel wird von der Google-Infrastruktur verwaltet.
Für die meisten Entwickler ist dies ein vernünftiger Kompromiss. Google bietet wichtige Sicherungs- und Wiederherstellungsdienste und das Risiko eines Schlüsselverlusts (der App-Updates dauerhaft verhindern würde) ist eliminiert. Allerdings haben datenschutzorientierte Entwickler und Open-Source-Befürworter Bedenken hinsichtlich dieser Zentralisierung des Vertrauens geäußert.
Was dies für Benutzer bedeutet, die Apps teilen
Die Umstellung auf App Bundles hat erhebliche Auswirkungen für Benutzer, die Apps außerhalb des Play Stores teilen möchten:
Extrahieren installierter Apps
Wenn Sie eine von einem AAB installierte App extrahieren, erhalten Sie keine einzige APK-Datei. Stattdessen erhalten Sie eine Sammlung geteilter APKs. Diese Aufteilungen sind gerätespezifisch, was bedeutet, dass eine App, die von einem Telefon mit einem ARM64-Prozessor und einem xxhdpi-Bildschirm extrahiert wurde, auf einem Gerät mit einer anderen Konfiguration nicht funktioniert.
XAPK- und APKS-Formate
Um die Herausforderung der gemeinsamen Nutzung geteilter APKs zu bewältigen, wurden Containerformate wie XAPK und APKS erstellt. Diese Formate bündeln alle geteilten APKs in einer einzigen herunterladbaren Datei. Wenn Sie auf eine XAPK-Datei stoßen, enthält diese wahrscheinlich eine App, die ursprünglich als App Bundle verteilt wurde.
Unser XAPK-zu-APK-Konverter kann Ihnen beim Extrahieren der Basis-APK aus diesen Containerformaten helfen. Beachten Sie jedoch, dass die Basis-APK allein möglicherweise nicht alle Ressourcen enthält, die für die ordnungsgemäße Funktion der App auf jedem Gerät erforderlich sind, da Dichte- und ABI-spezifische Ressourcen möglicherweise in den geteilten APKs enthalten sind.
Bundletool verwenden
Google stellt ein Open-Source-Tool namens bundletool zur Verfügung, mit dem APKs lokal aus einer AAB-Datei generiert werden können. Entwickler können damit universelle APKs zum Testen oder zur alternativen Verteilung erstellen. Der Befehl sieht so aus:
bundletool build-apks --bundle=app.aab --output=app.apks --mode=universal
Dadurch wird ein universelles APK generiert, das alle Ressourcen für alle Konfigurationen enthält. Es ist größer als ein gerätespezifischer Build, funktioniert aber auf jedem Gerät. Dies ist der Ansatz, den unser AAB-zu-APK-Konverter verwendet.
Auswirkungen auf alternative App Stores
Das AAB-Mandat betrifft vor allem den Google Play Store. Alternative App-Stores und direkte Vertriebskanäle können weiterhin APK-Dateien akzeptieren. Entwickler, die außerhalb von Play vertreiben möchten, können neben ihren AAB-Uploads weiterhin universelle APKs erstellen.
Einige Entwickler erstellen jedoch nur AABs und verlassen sich bei der Verteilung vollständig auf Play. Das bedeutet, dass Apps dieser Entwickler außerhalb des Play Store-Ökosystems schwerer zu bekommen sind. App-Repositorys von Drittanbietern haben sich angepasst, indem sie entweder die geteilten APK-Sammlungen hosten (als XAPK- oder APKS-Dateien) oder Bundletool verwenden, um universelle APKs zu generieren.
Dynamische Feature-Module in der Praxis
Dynamische Funktionsmodule stellen eine der interessantesten Funktionen des App Bundle-Formats dar. Hier sind einige Anwendungsfälle aus der Praxis:
- Kamerafunktionen: Eine App kann AR-Filter als dynamisches Modul enthalten, das nur heruntergeladen wird, wenn der Benutzer zum ersten Mal auf die Kamerafunktion zugreift.
- Sprachpakete: Übersetzungsdaten für weniger verbreitete Sprachen können auf Anfrage bereitgestellt werden und müssen nicht bei jeder Installation gebündelt werden.
- Spielstufen: Games können mit dem Fortschritt der Spieler zusätzliche Inhalte bereitstellen, wodurch der anfängliche Download gering bleibt.
- Professionelle Werkzeuge: Erweiterte Funktionen in Produktivitäts-Apps können nur Benutzern bereitgestellt werden, die sie benötigen.
Für Benutzer bedeutet dies, dass die installierte Größe einer App mit der Zeit wachsen kann, wenn dynamische Module heruntergeladen werden. Das bedeutet auch, dass die Freigabe einer solchen App die Einbeziehung aller heruntergeladenen Module erfordert, was den Extraktionsprozess weiter verkompliziert.
Best Practices für Entwickler
Wenn Sie Android-Apps entwickeln, finden Sie hier Empfehlungen für die effektive Arbeit mit App Bundles:
- Testen Sie immer lokal mit bundletool vor dem Hochladen auf Play. Generieren Sie gerätespezifische APKs und überprüfen Sie, ob sie ordnungsgemäß funktionieren.
- Nutzen Sie den internen Test-Track der Play Console, um zu überprüfen, ob Split-APKs auf echten Geräten installiert werden und ordnungsgemäß funktionieren.
- Erwägen Sie die Bereitstellung einer universellen APK für alternative Vertriebskanäle, wenn Ihre Benutzerbasis über den Play Store hinausgeht.
- Beachten Sie die Grenzen dynamischer Funktionsmodule. Funktionen, die häufig verwendet werden, sollten im Basismodul und nicht in dynamischen Modulen enthalten sein.
- Testen Sie auf Geräten mit unterschiedlichen Konfigurationen, um sicherzustellen, dass Konfigurationsaufteilungen korrekt generiert werden und keine Ressourcen fehlen.
- Bewahren Sie Ihren Upload-Schlüssel sicher auf. Während Google den App-Signaturschlüssel verwaltet, authentifiziert Ihr Upload-Schlüssel Ihre Identität als Entwickler.
Die Zukunft der App-Distribution
Das App Bundle-Format entwickelt sich ständig weiter. Google hat Funktionen wie Play Asset Delivery für große Spiele-Assets, SDK Runtime für Werbe-SDKs und verbesserte Unterstützung für Wear OS- und Android TV-Konfigurationen eingeführt. Der Trend geht hin zu einer detaillierteren On-Demand-Bereitstellung von App-Komponenten.
Für Benutzer bedeutet dies, dass das Konzept einer einzelnen, in sich geschlossenen App-Datei für Play Store-Apps immer seltener wird. Das Verständnis von Formaten wie XAPK, APKS und den verfügbaren Tools für die Arbeit mit ihnen wird für jeden, der Apps außerhalb des Standard-Play-Store-Ablaufs verwaltet, immer wichtiger.
Wann sollte ein AAB beibehalten werden und wann sollte ein universelles APK erstellt werden?
Das Android App Bundle stellt einen grundlegenden Wandel in der Art und Weise dar, wie Apps verpackt und bereitgestellt werden. Es bringt zwar echte Vorteile in Bezug auf Downloadgröße und Bereitstellungseffizienz, bringt aber auch Komplexität für Benutzer mit sich, die Apps teilen oder sie aus alternativen Quellen installieren. Wenn Sie wissen, wie AABs funktionieren, wie sie geteilte APKs generieren und welche Tools zum Konvertieren zwischen Formaten verfügbar sind, wissen Sie, was Sie brauchen, um das richtige Format auszuwählen und sicher zwischen ihnen zu konvertieren.
Entwickler greifen auf AAB zurück, um die Bereitstellung einer App zu optimieren. Die meisten alltäglichen Benutzer treffen es nur, wenn sie versuchen, etwas auf einem Gerät ohne Zugriff auf den Play Store zu installieren. Wie dem auch sei, das Wichtigste ist einfach: AAB ist ein Veröffentlichungsformat, kein Installationsformat, und es gibt Tools, die die Lücke zwischen beiden schließen.