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:
bundletool
-Befehlszeilentool lokal verwenden- Bundle in die Play Console hochladen über Google Play mithilfe eines Test-Tracks.
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: 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 |
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:
Manifest und Ressourcen des SDK-Bundles im .proto-Format generieren führen Sie dieselben Schritte wie für ein App-Bundle aus.
Verpacken Sie den kompilierten Code und die Ressourcen Ihres SDKs in einer ZIP-Basisdatei. wie bei einem App-Modul.
SdkModulesConfig.pb.json
-Datei undSdkBundleConfig.pb.json
generieren -Datei mit dem in den Android SDK-Bundle-Spezifikation.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 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 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
![](https://developer.android.google.cn/static/studio/images/command-line/asb-format.png?authuser=9&hl=de)
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 dersdk_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 dersdk_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 SDKsroot/
: 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 MethodeClass.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.
![](https://developer.android.google.cn/static/studio/images/command-line/asar-format.png?authuser=9&hl=de)
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 dersdk_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