web-dev-qa-db-de.com

Apk-Datei aus einer AB-Datei generieren (Android-App-Bundle)

Gibt es eine Möglichkeit, eine APK-Datei aus dem Android App Bundle über das Terminal oder mit Android Studio zu generieren?

21
Jayanth

Standardmäßig verwendet die IDE keine App-Bundles, um Ihre App zum Testen auf einem lokalen Gerät bereitzustellen

Siehe bundletool Befehl

Für den Befehl Debug apk

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

Für den Befehl Release apk

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
17
Firoz Memon

Ok, hier ist der komplette Weg, den ich machen musste

1. Laden Sie die Datei bundletool-all-0.6.0.jar von dieser Seite herunter link , laden Sie die neueste verfügbare Version herunter

2.Erstelle ein App-Bundle mit Android studio und finde seinen Pfad

in meinem Fall ist es E:\Projects\Android\Temp\app\build\outputs\bundle\debug\app.aab

3.Kopieren Sie das Bundletools-Glas an eine beliebige Stelle und rufen Sie den Pfad ab

in meinem Fall ist es E:\Temp\bundletool-all-0.6.0.jar

benutze diesen Befehl

Java -jar "BUNDLE_TOOL_JAR_PATH" build-apks --bundle="BUNDLE_PATH" --output=YOUR_OUTPUT_NAME.apks

In meinem Fall wird es sein

Java -jar "E:\Temp\bundletool-all-0.6.0.jar" build-apks --bundle="E:\Projects\Android\Temp\app\build\outputs\bundle\debug\app.aab" --output=out_bundle_archive_set.apks

4.Dies erstellt eine Datei out_bundle_archive_set.apks, benenne es um in .Zip out_bundle_archive_set.Zip, extrahiere diese Datei und fertig. Du wirst mehrere Apks haben

Überprüfen Sie diese Blog-Post für weitere Informationen. siehe auch offizielle Seite

19
Manohar Reddy

Die Leute haben bereits erklärt, wie man das mit der Kommandozeile macht. Zur Vervollständigung dachte ich, ich würde den Weg auch über die Benutzeroberfläche in Android Studio zeigen.

Wenn Sie Ihre "Run/Debug Configurations" öffnen, können Sie "APK from app bundle" auswählen (anstelle von "Default APK").

Siehe Screenshot:

enter image description here

13
Pierre

Bisher hat noch niemand die Lösung bereitgestellt, um die APK von einem AAB zu erhalten.

Diese Lösung wird eine universelle Binärdatei als apk generieren.

Fügen Sie Ihrem bundletool-Befehl --mode = universal hinzu (wenn Sie eine signierte App benötigen, verwenden Sie die --ks-Parameter nach Bedarf).

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

Ändern Sie den Namen der Ausgabedatei von .apks in .Zip

Entpacken und erkunden

Die Datei universal.apk ist Ihre App

Diese universelle Binärdatei wird wahrscheinlich recht umfangreich sein, ist jedoch eine großartige Lösung, um sie an die QA-Abteilung zu senden oder die App an einem anderen Ort als im Google Play Store zu vertreiben.

10
Aaron Small

Es gibt ein Tool namens bundletool, mit dem Sie APKs aus Ihrer AAB-Datei erstellen können:

Details zu diesem Tool finden Sie hier: https://developer.Android.com/studio/command-line/bundletool

Aber hier ein paar Highlights von dieser Seite:

Erstellen von APKs

Wenn bundletool APKs aus Ihrem App-Bundle generiert, werden diese in einem Container namens APK-Set-Archiv gespeichert, das die Dateierweiterung .apks verwendet. Verwenden Sie den Befehl bundletool build-apks, um einen APK-Satz für alle Gerätekonfigurationen zu generieren, die Ihre App aus Ihrem App-Bundle unterstützt.

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

Beachten Sie, dass mit dem obigen Befehl ein APK-Satz nicht signierter APKs erstellt wird. Wenn Sie die APKs auf einem Gerät bereitstellen möchten, müssen Sie auch die Signaturinformationen Ihrer App einschließen, wie im folgenden Befehl gezeigt.

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

Installieren von APKs

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

Generiere einen gerätespezifischen Satz von APKs

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

Weitere Informationen finden Sie unter Geek Dashboard .

Für diejenigen, die eine einzige universelle APK-Datei aus Ihrem Android App Bundle) generieren möchten, müssen Sie das Flag --universal Verwenden, während Sie den Befehl build-apks Ausführen.

Java -jar bundletool.jar build-apks --bundle=your_app.aab --output=your_app.apks --mode=universal

Wobei bundletool.jar die Bundletool-JAR-Datei ist, die Sie heruntergeladen haben hier

your_app.aab ist das Android App Bundle Ihrer App

your_app.apks ist die Ausgabe-APKs-Archivdatei, die generiert wird, sobald Sie den Befehl ausführen.

Stellen Sie beim Ausführen des obigen Befehls sicher, dass Sie bundletool.jar und Ihre AAB-Datei im selben Ordner.

Jetzt müssen Sie das Dateiformat von your_app. apks in your_app. Zip und extrahieren Sie es, um die Datei universal.apk zu finden

enter image description here

Hinweis : Verwenden Sie das Flag –overwrite, Um die APKs-Datei zu überschreiben, falls bereits eine mit demselben Namen vorhanden ist. Andernfalls führt der Befehl bundletool zu einem schwerwiegenden Fehler.

1
Amar Ilindra

Nach dem docs können Sie ./gradlew :base:bundleDebug um zu erstellen, wo base Ihr Modulname ist. Sie können diesen Befehl im Terminal in Android Studio versuchen.

1
chornge