bundletool

bundletool ist das zugrunde liegende Tool für Android Studio, den Android-Gradle- Plug-in und Google Play verwenden, um ein Android App Bundle zu erstellen. bundletool kann ein App Bundle in die verschiedenen APKs konvertieren, die auf Geräten bereitgestellt werden.

Android SDK Bundles (ASBs) und die zugehörigen APKs werden mit bundletool erstellt. Es ist auch als Befehlszeilentool verfügbar, sodass Sie App Bundles SDK bündelt dich und reproduziert den serverseitigen Build deiner App von Google Play APKs oder Ihre runtime-enabled SDK-APKs.

bundletool herunterladen

Laden Sie bundletool aus der GitHub-Repository.

App Bundle erstellen und testen

Sie können Android Studio oder das bundletool-Befehlszeilentool verwenden, um Ihre Android App Bundle und teste das Generieren von APKs aus diesem App Bundle.

App Bundle erstellen

Mit Android Studio und dem Android-Gradle-Plug-in Android App Bundle erstellen und signieren Wenn die Verwendung der IDE jedoch keine Option ist, z. B. weil Sie einen Continuous Build-Server erstellen – Sie können auch App Bundle über die Befehlszeile erstellen und unterschreiben Sie mit jarsigner

Weitere Informationen zum Erstellen von App-Bundles mit bundletool Siehe Erstelle ein App Bundle mit Bundletool.

Eine Reihe von APKs aus deinem App Bundle generieren

Nachdem Sie Ihr Android App Bundle erstellt haben, testen Sie, wie Google Play verwendet sie zum Generieren von APKs und zum Verhalten dieser APKs, wenn sie auf einem Gerät bereitgestellt werden.

Es gibt zwei Möglichkeiten, Ihr App Bundle zu testen:

In diesem Abschnitt wird erläutert, wie du dein App Bundle mit bundletool lokal testest.

Wenn bundletool APKs aus deinem App Bundle generiert, sind die generierten APKs in einem Container, der als APK-Set-Archiv bezeichnet wird und die Datei .apks verwendet . Um ein APK zu generieren, das für alle Gerätekonfigurationen deiner App festgelegt ist in Ihrem App-Bundle unterstützt, verwenden Sie den Befehl bundletool build-apks wie angezeigt:

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

Wenn Sie die APKs auf einem Gerät bereitstellen möchten, müssen Sie auch die wie im folgenden Befehl gezeigt. Wenn Sie keine Informationen zur Signatur: bundletool versucht, deine APKs mit einem Fehlerbehebungsschlüssel zu signieren für Sie.

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--ks=/MyApp/keystore.jks
--ks-pass=file:/MyApp/keystore.pwd
--ks-key-alias=MyKeyAlias
--key-pass=file:/MyApp/key.pwd

In der folgenden Tabelle werden die verschiedenen Flags und Optionen beschrieben, die Sie festlegen können, wenn mit dem Befehl bundletool build-apks:

Tabelle 1 Optionen für die bundletool build-apks-Befehl

Melden Beschreibung
--bundle=path (Erforderlich) Gibt den Pfad zum App Bundle an die Sie mit Android Studio erstellt haben. Weitere Informationen finden Sie unter Erstellen Sie Ihr Projekt.
--output=path (Erforderlich) Gibt den Namen der Ausgabe an. .apks, die alle APK-Artefakte für dein Wenn Sie die Artefakte in dieser Datei auf einem Gerät testen möchten, folgen Sie der Anleitung unter im Abschnitt zur Bereitstellung von APKs mit einem verbundenen Gerät.
--overwrite Überschreibt alle vorhandenen Ausgabedateien mit Pfad, den Sie mit der Option --output angeben. Wenn Sie Wenn Sie dieses Flag nicht angeben und die Ausgabedatei bereits existiert, erhalten Sie eine Build-Fehler.
--aapt2=path Gibt einen benutzerdefinierten Pfad zu AAPT2 an. Standardmäßig enthält bundletool eine eigene Version von AAPT2.
--ks=path (Optional) Gibt den Pfad zum Schlüsselspeicher der Bereitstellung an, der für die APKs signieren. Ohne dieses Flag bundletool versucht, deine APKs mit einer Signatur zur Fehlerbehebung zu signieren .
--ks-pass=pass:password
oder
--ks-pass=file:/path/to/file
Gibt Ihr Schlüsselspeicherpasswort an. Wenn Sie ein Passwort im Nur-Text-Format angeben, es mit pass: qualifizieren. Wenn Sie den Pfad zu einer Datei übergeben, die das Passwort enthält, qualifizieren Sie sich für mit file:. Wenn Sie einen Schlüsselspeicher mithilfe von das Flag --ks ohne Angabe von --ks-pass, bundletool fordert Sie über die Befehlszeile auf, ein Passwort einzugeben.
--ks-key-alias=alias Gibt den Alias des Signaturschlüssels an, den Sie verwenden möchten verwenden.
--key-pass=pass:password
oder
--key-pass=file:/path/to/file
Gibt das Passwort für den Signaturschlüssel an. Wenn Sie ein Passwort im Nur-Text-Format angeben, es mit pass: qualifizieren. Wenn Sie den Pfad zu einer Datei übergeben, die das Passwort enthält, qualifizieren Sie sich für mit file:.

Wenn dieses Passwort mit dem für den Schlüsselspeicher selbst, können Sie dieses Flag weglassen.

--connected-device Weist bundletool an, APKs zu erstellen, die auf die Konfiguration eines verbundenen Geräts. Ohne dieses Flag bundletool generiert APKs für alle Gerätekonfigurationen, die App unterstützt wird.
--device-id=serial-number Wenn Sie mehr als ein verbundenes Gerät haben, verwenden Sie dieses Flag, um das Seriennummer des Geräts, auf dem Sie die App bereitstellen möchten.
--device-spec=spec_json Stellt einen Pfad zu einem .json-Datei mit der gewünschten Gerätekonfiguration. für die Ausrichtung zu verwenden. Weitere Informationen finden Sie im Abschnitt zur JSON-Gerätespezifikation generieren und verwenden Dateien.
--mode=universal Legt den Modus auf universal fest. Verwenden Sie diese Option, wenn Sie bundletool, um ein einzelnes APK zu erstellen, das alle des Codes und der Ressourcen Ihrer App, sodass das APK mit allen Gerätekonfigurationen, die von deiner App unterstützt werden.

Hinweis:bundletool enthält nur Funktionsmodule mit <dist:fusing dist:include="true"/> in in einem universellen APK. Weitere Informationen finden Sie in den <ph type="x-smartling-placeholder"></ph> Manifest des Funktionsmoduls.

Diese APKs sind größer als die optimierten APKs. für eine bestimmte Gerätekonfiguration. Sie sind jedoch einfacher mit internen Testern zu teilen, die zum Beispiel Ihre App mit mehreren Gerätekonfigurationen testen möchten.

--local-testing Aktiviert dein App Bundle für lokale Tests. Lokale Tests ermöglichen schnelle, iterative Testzyklen ohne die Notwendigkeit auf Google Play-Server hochladen können.

Ein Beispiel für das Testen der Modulinstallation mit dem Flag --local-testing, siehe <ph type="x-smartling-placeholder"></ph> Modulinstallationen lokal testen.

APKs auf einem verbundenen Gerät bereitstellen

Nachdem du APKs erstellt hast, kann bundletool das richtige Kombination von APKs, die auf ein verbundenes Gerät festgelegt sind.

Beispiel: Du hast ein verbundenes Gerät mit Android 5.0 (API-Level 21) oder höher sendet bundletool das Basis-APK, die APKs für Funktionsmodul und Konfigurations-APKs, die zum Ausführen deiner App auf diesem Gerät erforderlich sind. Wenn Sie alternativ auf Ihrem verbundenen Gerät Android 4.4 (API-Level 20) oder niedriger ausgeführt wird, bundletool sucht nach einem kompatiblen Multi-APK, das auf deinem Gerät bereitgestellt werden kann.

Wenn du deine App aus einem APK-Set bereitstellen möchtest, verwende den Befehl install-apks und gib Folgendes an: Pfad des APK, das mithilfe der Methode --apks=/path/to/apks-Flag, as wie im folgenden Befehl dargestellt. Wenn mehrere Geräte verbunden sind, geben Sie ein Zielgerät an, indem Sie Flag --device-id=serial-id.

bundletool install-apks --apks=/MyApp/my_app.apks

Gerätespezifische APKs generieren

Wenn du keinen Satz APKs für alle Gerätekonfigurationen erstellen möchtest, unterstützt, können Sie APKs erstellen, die nur auf die Konfiguration eines verbundenen Gerät mit der Option --connected-device, wie im folgenden Befehl gezeigt. Wenn mehrere Geräte verbunden sind, geben Sie ein Zielgerät an, indem Sie die Flag --device-id=serial-id.

bundletool build-apks --connected-device
--bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

JSON-Dateien mit Gerätespezifikationen generieren und verwenden

bundletool kann eine APK-Gruppe generieren, die auf ein Gerät ausgerichtet ist Konfiguration, die durch eine JSON-Datei angegeben ist. Um zunächst eine JSON-Datei für ein verbundenen Gerät, führen Sie den folgenden Befehl aus:

bundletool get-device-spec --output=/tmp/device-spec.json

bundletool erstellt im Verzeichnis des Tools eine JSON-Datei für Ihr Gerät. Ich kann die Datei dann an bundletool übergeben, um einen Satz APKs zu generieren, die Ausrichtung nur auf die in dieser JSON-Datei beschriebene Konfiguration:

bundletool build-apks --device-spec=/MyApp/pixel2.json
--bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

JSON-Gerätespezifikation manuell erstellen

Wenn Sie keinen Zugriff auf das Gerät haben, für das Sie eine APK festgelegt, z. B. wenn du deine App auf einem Gerät testen möchtest, das du nicht zur Hand haben, können Sie manuell eine JSON-Datei im folgenden Format erstellen:

{
  "supportedAbis": ["arm64-v8a", "armeabi-v7a"],
  "supportedLocales": ["en", "fr"],
  "screenDensity": 640,
  "sdkVersion": 27
}

Anschließend können Sie diese JSON-Datei wie beschrieben an den Befehl bundle extract-apks übergeben. im vorherigen Abschnitt.

Gerätespezifische APKs aus einem vorhandenen APK-Satz extrahieren

Wenn Sie bereits ein APK festgelegt haben und daraus eine Teilmenge von APKs extrahieren möchten die auf eine bestimmte Gerätekonfiguration ausgerichtet sind, können Sie die extract-apks und geben Sie wie folgt eine JSON-Gerätespezifikation an:

bundletool extract-apks
--apks=/MyApp/my_existing_APK_set.apks
--output-dir=/MyApp/my_pixel2_APK_set.apks
--device-spec=/MyApp/bundletool/pixel2.json

Geschätzte Downloadgrößen von APKs in einer APK-Gruppe messen

Um die geschätzten Downloadgrößen von APKs in einem APK zu messen, das so eingestellt ist, wie sie es komprimiert über das Kabel bereitgestellt werden, verwenden Sie den Befehl get-size total:

bundletool get-size total --apks=/MyApp/my_app.apks

Sie können das Verhalten des Befehls get-size total mit dem Befehl folgenden Flags verwenden:

Tabelle 2: Optionen für die get-size total-Befehl

Melden Beschreibung
--apks=path (Erforderlich) Gibt den Pfad zur vorhandenen APK-Set-Datei an deren Downloadgröße gemessen wird.
--device-spec=path Pfad zur Gerätespezifikationsdatei (von get-device-spec oder manuell erstellt), um sie für den Abgleich zu verwenden. Sie können einen Teilpfad angeben, um eine Reihe von Konfigurationen auszuwerten.
--dimensions=dimensions Gibt die Dimensionen an, die bei der Berechnung der Größenschätzungen verwendet werden. Akzeptiert eine durch Kommas getrennte Liste von: SDK, ABI, SCREEN_DENSITY und LANGUAGE. Zur Messung von alle Dimensionen, geben Sie ALL an.
--instant Misst die Downloadgröße der Instant-fähigen APKs anstelle der installierbare APKs. Standardmäßig misst bundletool den Wert Downloadgrößen für installierbare APK-Dateien.
--modules=modules Gibt eine durch Kommas getrennte Liste von Modulen im APK an, die berücksichtigt werden sollen bei der Messung. Der Befehl bundletool wird automatisch enthält alle abhängigen Module für den angegebenen Satz. Standardmäßig enthält der Parameter misst die Downloadgröße aller Module, die während der ersten Download.

App-Bundle mit einer SDK-Bundle-Abhängigkeit erstellen (experimentell)

Du kannst dein Android App Bundle mit einer ASB-Abhängigkeit (Android SDK Bundle) erstellen. aus der Befehlszeile aus und signieren Sie es mit jarsigner enthält.

Jedes App Bundle-Modul enthält eine Modulprotokollzwischenspeicherdatei (.pb): runtime_enabled_sdk_config.pb. Diese Datei enthält die Liste der SDKs von dem ein App Bundle-Modul abhängt. Die vollständige Definition dieser Datei sieh dir die runtime_enabled_sdk_config.proto-Datei.

Wenn Sie ein App-Bundle mit einer SDK-Bundle-Abhängigkeit erstellen möchten, folgen Sie der Anleitung im Abschnitt zu Erstellen eines App Bundles mit Bundletool und Hinzufügen eines runtime_enabled_sdk_config.pb-Datei in die ZIP-Datei der einzelnen App-Module -Datei mit kompiliertem Code und Ressourcen.

Einige wichtige Felder in der Datei runtime_enabled_sdk_config.pb:

  • Certificate Digest (Zertifikats-Digest): SHA-256-Digest des Zertifikats für den Schlüssel zum Signieren der APKs des SDK verwendet wird. Es entspricht dem Zertifikat im SdkMetadata.pb-Datei im Android SDK Archive-Format.

  • Ressourcenpaket-ID:die Paket-ID aller Ressourcen in diesem SDK werden neu zugeordnet, wenn APKs zur Einbettung des SDK in die App generiert werden. Dies ermöglicht Abwärtskompatibilität.

Ein SDK kann nur in einem Modul enthalten sein. Wenn mehrere Module vom gleichen SDK enthält, sollte diese Abhängigkeit dedupliziert und in das Basismodul verschoben werden. Die verschiedenen Module müssen nicht von unterschiedlichen SDK-Versionen abhängig sein.

APKs aus einem App-Bundle mit einer SDK-Bundle-Abhängigkeit generieren (experimentell)

Um APKs aus Ihrem App Bundle zu generieren, folgen Sie den Schritten im Abschnitt über eine Reihe von APKs aus deinem App Bundle generieren oder im Abschnitt über Gerätespezifische APKs generieren und geben Sie den bundletool build-apks-Befehl mit den SDKs an, die von der App abhängig ist. Diese SDKs können im SDK-Bundle-Format oder SDK bereitgestellt werden Archivformat.

Sie können die SDKs als SDK-Bundles bereitstellen, indem Sie das Flag --sdk-bundles hinzufügen: folgt:

bundletool build-apks --bundle=app.aab --sdk-bundles=sdk1.asb,sdk2.asb \
    --output=app.apks

Du kannst die SDKs als SDK-Archive bereitstellen, indem du das Flag --sdk-archives hinzufügst. wie folgt:

bundletool build-apks --bundle=app.aab --sdk-archives=sdk1.asar,sdk2.asar \
    --output=app.apks
APKs aus einem App-Bundle mit einer SDK-Bundle-Abhängigkeit für Geräte generieren, die keine SDK-Bibliothek unterstützen

Auf Geräten vor Android 13 können SDK-Bibliotheken nicht installiert oder ausgeführt werden in der SDK-Laufzeit. Bundletool blendet die Abwärtskompatibilität mehrere Varianten Ihres APK-Sets aus demselben App Bundle generiert, wenn Sie Führen Sie bundletool build-apks mit der Option --sdk-bundles oder --sdk-archives aus. Die verschiedenen Varianten sind auf Geräte mit unterschiedlichen Funktionen ausgerichtet:

  • Es gibt eine Variante für neuere Geräte, bei der das SDK als separater -Paket aus der App und die App-APKs enthalten keine SDK-Inhalte.
  • Es gibt eine oder mehrere Varianten für ältere Geräte, denen die SDK-APKs hinzugefügt wurden zum App-APK, das als zusätzliche APK-Splits festgelegt ist. Die SDK-APKs gehören zur App Paket. In diesem Fall wird die SDK-Laufzeit in der App-Laufzeit auf der .

Ähnlich wie beim Generieren von APKs für App Bundles ohne SDK-Abhängigkeiten bundletool extract-apks und bundletool install-apks geben einen gefilterten Satz von APKs der besten Variante für das verbundene Gerät oder für das angegebene Gerät config.

Für erweiterte Anwendungsfälle, in denen Sie nur APK-Splits generieren möchten aus einem SDK-Archiv für eine bestimmte App für ältere Geräte enthält, bundletool build-sdk-apks-for-app-Befehl so an:

bundletool build-sdk-apks-for-app --app-properties=app-properties.json \
    --sdk-archive=sdk.asar --output=sdk.apks

Die Datei app-properties sollte die Felder enthalten, die in den Datei runtime_enabled_sdk_config.proto So sieht der app-properties Datei sieht so aus:

{
  "package_name": "com.my.app",
  "version_code": 1234,
  "min_sdk_version": 21,
  "resources_package_id": 0x7e
}

Der Befehl bundletool build-sdk-apks-for-app generiert die Teilmenge der Anwendung APKs, die dem SDK-Inhalt unter dem App-Paketnamen entsprechen. Sie können Kombinieren Sie diese APKs mit anderen APKs, die die App-Inhalte enthalten. Wenn beispielsweise werden diese separat und inkrementell erstellt und zusammen auf einem Gerät installiert. die die SDK-Laufzeit nicht unterstützt.

SDK-Bundle erstellen und testen (experimentell)

Sie können bundletool verwenden, um ein ASB zu erstellen und die Generierung der Dateien, die für die Installation und Verteilung benötigt werden.

SDK-Bundle erstellen

Sie können Ihr ASB über die Befehlszeile erstellen und signieren. mit jarsigner enthält.

So erstellst du ein SDK-Bundle:

  1. Manifest und Ressourcen des SDK-Bundles im .proto-Format generieren führen Sie dieselben Schritte wie für ein App-Bundle aus.

  2. Verpacken Sie den kompilierten Code und die Ressourcen Ihres SDKs in einer ZIP-Basisdatei. wie bei einem App-Modul.

  3. SdkModulesConfig.pb.json-Datei und SdkBundleConfig.pb.json generieren -Datei mit dem in den Android SDK-Bundle-Spezifikation.

  4. Erstellen Sie Ihr ASB mit dem Befehl bundletool build-sdk-bundle wie folgt:

bundletool build-sdk-bundle --sdk-bundle-config=SdkBundleConfig.pb.json \
    --sdk-modules-config=SdkModulesConfig.pb.json \
    --modules=base.zip --output=sdk.asb

In der folgenden Tabelle werden die verschiedenen Flags und Optionen beschrieben, die Sie festlegen können, wenn mit dem Befehl bundletool build-sdk-bundle.

Tabelle 3 Optionen für die bundletool build-sdk-bundle-Befehl

Melden Beschreibung
--modules (Erforderlich) Die Moduldatei, die Sie für die endgültige Version erstellen möchten. ASB von.
--output (Erforderlich) Der Pfad zum Speicherort des ASB.
--sdk-modules-config (Erforderlich) Der Pfad zu einer JSON-Datei, die die Konfiguration beschreibt der SDK-Module. Informationen zum Formatieren der JSON-Datei finden Sie in der Android SDK Bundle-Spezifikation.
--sdk-bundle-config Der Pfad zu einer JSON-Datei, die die Konfiguration beschreibt des SDK-Bundles. Informationen zum Formatieren der JSON-Datei finden Sie in der Android SDK Bundle-Spezifikation.
--metadata-file Die Datei, in die Metadaten für das ASB aufgenommen werden sollen. Das Format des Flag-Werts ist <bundle-path>:<physical-file>, Dabei gibt <bundle-path> den Dateispeicherort im Das Metadatenverzeichnis und <physical-file> des SDK-Bundles sind eine vorhandene Datei, die die zu speichernden Rohdaten enthält. Die Kennzeichnung kann wiederholt.
--overwrite Wenn diese Option festgelegt ist, werden alle vorherigen Ausgaben überschrieben.

APKs aus einem SDK-Bundle generieren

Nachdem Sie Ihr ASB erstellt haben, können Sie ein SDK-Bundle lokal testen, Generieren der APKs mit dem Befehl bundletool build-sdk-apks, wie in den folgenden Code:

bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks

Wenn bundletool APKs aus deinem SDK-Bundle generiert, enthält das Tool das APKs in einem Container namens APK-Set-Archiv, in dem die Datei .apks verwendet wird . bundletool generiert ein einzelnes eigenständiges APK aus dem SDK-Bundle die auf alle Gerätekonfigurationen ausgerichtet ist.

Wenn Sie das ASB auf einem Gerät bereitstellen möchten, müssen Sie auch das Attribut wie im folgenden Befehl gezeigt:

bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks \
    --ks=keystore.jks \
    --ks-pass=file:/keystore.pwd \
    --ks-key-alias=KeyAlias \
    --key-pass=file:/key.pwd

In der folgenden Tabelle werden die verschiedenen Flags und Optionen beschrieben, die Sie festlegen können, wenn mit dem Befehl bundletool build-sdk-apks.

Tabelle 4 Optionen für die bundletool build-sdk-apks-Befehl

Melden Beschreibung
--sdk-bundle (Erforderlich) Der Pfad zum SDK-Bundle. Erweiterung erforderlich .asb
--output (Erforderlich) Standardmäßig der Pfad, unter dem das APK das Archiv festlegen soll erstellt werden. Wenn Sie alternativ --output-format=DIRECTORY, Dies ist der Pfad zu dem Verzeichnis, in dem die generierten APKs gespeichert werden sollen.
--ks Der Pfad zum Schlüsselspeicher, den Sie zum Signieren des generierten APKs.
--ks-key-alias Alias des Schlüssels, der im Schlüsselspeicher zum Signieren des generierten APKs.
--key-pass

Das Passwort des Schlüssels im Schlüsselspeicher, der zum Signieren des generierten Schlüssels verwendet wird APKs

Wenn Sie das Passwort als Klartext übergeben, müssen Sie dem Wert einen Präfix voranstellen mit pass:. Beispiel: pass:qwerty. Wenn sich das Passwort in der ersten Zeile einer Datei befindet, müssen Sie dem Wert vorangestellt werden mit file:. Beispiel: file:/tmp/myPassword.txt

Wenn dieses Flag nicht festgelegt ist, Passwort eingegeben. Wenn dies fehlschlägt, werden Sie vom Befehlszeilenterminal zur Eingabe ein Passwort.

--ks-pass

Das Passwort des Schlüsselspeichers, der zum Signieren der generierten APKs verwendet werden soll.

Wenn Sie das Passwort als Klartext übergeben, müssen Sie dem Wert einen Präfix voranstellen mit pass:. Beispiel: pass:qwerty. Wenn die ist die erste Zeile einer Datei, müssen Sie dem Wert das Präfix file: Beispiel: file:/tmp/myPassword.txt

Ist dieses Flag nicht festgelegt, Befehlszeilenterminal, das Sie zur Eingabe eines Passworts auffordert.

--aapt2 Der Pfad zum AAPT2-Binärprogramm, das verwendet werden soll.
--output-format Das Ausgabeformat für generierte APKs. Standardmäßig ist diese Option auf APK_SET, die APKs in das APK-Set-Archiv ausgibt, das erstellt. Wenn DIRECTORY festgelegt ist, werden APKs im Verzeichnis durch --output angegeben.
--verbose Wenn diese Option festgelegt ist, gibt sie zusätzliche Informationen zur Ausführung des Befehls im Standardausgabe.
--version-code Der SDK-Versionscode. Dies ist der Versionscode, der von der Android-Plattform verwendet wird um das APK und nicht die SDK-Version zu installieren. Diese Option kann auf Beliebiger Wert. Wenn nichts festgelegt ist, wird standardmäßig 0 verwendet.
--overwrite Wenn diese Option festgelegt ist, werden alle vorherigen Ausgaben überschrieben.

SDK-APKs bereitstellen, extrahieren und ihre Größe messen

Sie können dieselben Schritte wie bei der Bereitstellung von APKs für ein verbundenes Gerät, gerätespezifische Daten extrahieren APKs aus einem vorhandenen APK-Satz und messen die geschätzten Downloadgrößen von APKs in einem APK-Satz

SDK-Archiv aus einem SDK-Bundle generieren

Nachdem Sie Ihr ASB in Ihren Vertriebskanal hochgeladen haben, Beispiel für Google Play, wird das ASB in ein Android SDK umgewandelt. Archivierung (.asar) für die Bereitstellung an App-Entwickler über Maven. Weitere Informationen finden Sie im Abschnitt zu SDK Archive-Formatspezifikation

Nachdem Sie Ihr ASB erstellt haben, können Sie die Generierung eines Android SDK Archive lokal mit dem Befehl bundletool build-sdk-asar, wie wie im folgenden Code dargestellt:

bundletool build-sdk-asar --sdk-bundle=sdk.asb --output=sdk.asar \
    --apk-signing-key-certificate=keycert.txt

In der folgenden Tabelle werden die verschiedenen Flags und Optionen beschrieben, die Sie festlegen können, wenn mit dem Befehl bundletool build-sdk-asar.

Tabelle 5 Optionen für die bundletool build-sdk-asar-Befehl

Melden Beschreibung
--apk-signing-key-certificate (Erforderlich) Der Pfad zum SDK-APK-Signaturzertifikat. Dies ist die Zertifikat, das dem Schlüssel entspricht, mit dem Sie die APKs in der build-sdk-apks-Befehl.
--output (Erforderlich) Der Pfad, unter dem sich die Datei .asar befinden soll. erstellt.
--sdk-bundle (Erforderlich) Der Pfad zum SDK-Bundle. Erweiterung erforderlich .asb
--overwrite Wenn diese Option festgelegt ist, werden alle vorherigen Ausgaben überschrieben.

Laufzeitfähige SDK-Formate (experimentell)

Laufzeitfähige SDKs bieten zwei Android-Dateiformate:

  • Das Android SDK-Bundle (.asb), das zur Veröffentlichung des laufzeitfähiges SDK für App-Shops.
  • Das Android SDK-Archiv (.asar), das für die Bereitstellung von laufzeitfähiges SDK auf Maven.

Das Android SDK-Bundle-Format

Ein SDK-Bundle ist ein Veröffentlichungsformat für laufzeitfähige SDKs. Sie enthält alle SDK-Code und -Ressourcen, einschließlich des Codes aus allen Bibliotheken des SDK hängt davon ab. Sie enthält nicht den Code und die Ressourcen anderer Laufzeit-aktivierter SDKs, von denen das SDK abhängig ist.

Ein Android SDK-Bundle (ASB) ist eine signierte ZIP-Datei mit der Erweiterung .asb Der SDK-Code und die Ressourcen sind ähnlich organisiert in einem APK finden können. Ein ASB enthält auch mehrere Konfigurationsdateien, die Generieren der installierbaren APKs

<ph type="x-smartling-placeholder">
</ph>
Abbildung 1: Der Inhalt eines Android SDK-Bundle

In der folgenden Liste werden einige der ASB-Dateien in ausführlicheren Details:

  • SdkBundleConfig.pb: Eine Konfigurationsdatei im Proto-Format, die den Liste der laufzeitfähigen SDKs, von denen Ihr SDK abhängig ist. Für die vollständige finden Sie in der sdk_bundle_config.proto -Datei.

  • modules.resm: Eine ZIP-Datei mit allen Daten, die zum Generieren des APKs aus dem SDK.

  • SdkModulesConfig.pb: Eine Konfigurationsdatei im .proto-Format. Diese Datei enthält den SDK-Namen, die Version und den Klassennamen des SDK-Einstiegspunkts für das Framework (SandboxedSdkProvider) Die vollständige Definition findest du in der sdk_modules_config.proto-Datei.

  • base/: Das einzelne Modul, das den SDK-Code und die Ressourcen enthält.

    • manifest/: Das Manifest des SDK im Proto-Format.
    • dex/: Der kompilierte Code im DEX-Format. Es können mehrere DEX-Dateien bereitgestellt werden.
    • res/, lib/, assets/: Diese Verzeichnisse sind identisch mit denen in einem typisches APK. Die Pfade in diesen Verzeichnissen werden beim Generieren der APKs des SDKs
    • root/: In diesem Verzeichnis werden Dateien gespeichert, die später in das Stammverzeichnis verschoben werden der SDK-APKs. Es kann beispielsweise Java-basierte Ressourcen enthalten, mit der Methode Class.getResource() . Die Pfade in diesem Verzeichnis bleiben ebenfalls erhalten.
  • BUNDLE-METADATA: Dieses Verzeichnis enthält Metadatendateien, die Folgendes enthalten: Informationen, die für Tools oder App-Shops nützlich sind. Solche Metadatendateien können ProGuard-Zuordnungen und die vollständige Liste der DEX-Dateien Ihres SDK enthalten. Dateien in diesem Verzeichnis werden nicht in die APKs deines SDKs gepackt.

Das Android SDK Archive-Format

Ein Android SDK Archive ist das Bereitstellungsformat für ein laufzeitfähiges SDK auf Maven aus. Es ist eine ZIP-Datei mit der Dateiendung .asar. Die Datei enthält alle Informationen, die von den Build-Tools für die App benötigt werden, ein Android App Bundle, das von deinem laufzeitfähigen SDK abhängt.

<ph type="x-smartling-placeholder">
</ph>
Abbildung 2: Der Inhalt eines Android SDK Archive Bundle.

In der folgenden Liste werden einige der Android SDK Archive-Dateien in ausführlicheren Details:

  • SdkMetadata.pb: Eine Konfigurationsdatei im Proto-Format, die den SDK-Name, Version und Zertifikat-Digest für den Schlüssel, der zum Signieren der Für dieses SDK generierte APKs. Die vollständige Definition findest du in der sdk_metadata.proto -Datei.

  • modules.resm: Eine ZIP-Datei mit allen Daten, die zum Generieren des APKs aus dem SDK. Dies entspricht der Datei .resm im Android SDK-Bundle.

  • AndroidManifest.xml: Die Manifestdatei des SDK im XML-Textformat.

Weitere Informationen

Weitere Informationen zur Verwendung von bundletool findest du auf diesem App Bundles: Bundles mit Bundletool und der Play Console testen