Split-APKs und Android App Bundles, für Nutzer erklärt
Advertisement
Von einer APK zu mehreren
Früher war eine App eine APK mit Code und Ressourcen für jede Bildschirmgröße, Sprache und CPU. Seit August 2021 verlangt Google Play, dass neue Apps als Android App Bundle (.aab) hochgeladen werden. Play behält das Bundle und erzeugt für jeden Download den Satz von APKs, die die App auf genau diesem Gerät ausmachen.
Die Teile
- base.apk: der Code und die Ressourcen, die für jedes Gerät gleich sind. Allein installierbar nur, wenn die App so gebaut wurde; die meisten modernen Apps sind es nicht.
- Konfigurations-Splits:
split_config.arm64_v8a.apk(nativer Code für die CPU),split_config.xxhdpi.apk(Bilder für die Bildschirmdichte),split_config.en.apk,split_config.de.apk(Sprachtexte). Ein Gerät bekommt je einen pro Art. - Funktions-Splits: optionale Module, die die App bei Bedarf lädt, etwa einen Editor oder eine Kamerafunktion.
Alle Splits einer App teilen Paketnamen, Versionscode und Signatur. Android installiert sie in einer Sitzung und behandelt sie als eine App.
Warum nur base.apk scheitert
Die App startet, sucht eine Ressource oder eine native Bibliothek, die in einem Split liegt, und stürzt mit Resources$NotFoundException oder UnsatisfiedLinkError ab, oder der Installer verweigert mit INSTALL_FAILED_MISSING_SPLIT. Deshalb muss eine XAPK als Ganzes installiert werden; siehe Split-APKs mit SAI installieren.
Wie Spiegel mit Bundles umgehen
Da Play gerätespezifische Sätze erzeugt, speichert ein Spiegel entweder eine universelle APK (die Einzeldatei-Build des Entwicklers, die jede Konfiguration enthält, größer, aber überall installierbar) oder eine XAPK mit Basis plus den Splits der häufigsten Konfiguration (arm64, xxhdpi, mehrere Sprachen). Die Versionsseiten hier kennzeichnen jede Datei mit ihrem Format, sodass du für ein ungewöhnliches Gerät die universelle APK und für ein aktuelles Telefon die XAPK wählen kannst.
Prüfen, was ein Gerät hat
App Manager oder SAI listen die Splits einer installierten App in deren Details. adb shell pm path <Paket> gibt jede APK-Datei der App aus, eine pro Zeile. Eine App mit nur einer Zeile wurde als universelles oder Einzeldatei-Paket installiert.
Diese Anleitung beschreibt das allgemeine Android-Verhalten; Menünamen unterscheiden sich je nach Hersteller und Android-Version. Downloads auf dieser Seite stammen von etablierten Drittanbieter-Spiegeln und werden von uns nie verändert.