141 votes

Générer un fichier Apk à partir d'un fichier aab (paquet d'applications Android)

Existe-t-il un moyen de générer un fichier apk à partir de Android app Bundle via un terminal ou en utilisant Android studio ?

3 votes

Les réponses fournies ci-dessous ne parlent que de la façon de générer un fichier APKS, ce qui est directement issu de la documentation de bundletool. Quelqu'un a-t-il trouvé un moyen d'obtenir un fichier APK (et non APKS) à partir d'un bundle ?

0 votes

@CaptainForge ma réponse fait exactement cela ! stackoverflow.com/a/57149405/5284155

152voto

Aaron Small Points 962

Jusqu'à présent, personne n'a fourni la solution pour obtenir l'APK d'un OAA.

Cette solution permettra de générer un binaire universel sous forme d'apk.

  1. Ajouter --mode=universal à votre bundletool (si vous avez besoin d'une application signée, utilisez les paramètres --ks comme requis).

    bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
        --mode=universal
  2. ÉTAPE PRINCIPALE : Changez le nom du fichier de sortie de .apks a .zip

  3. Dézippez et explorez

  4. Le dossier universal.apk est votre application

Ce binaire universel sera probablement assez volumineux mais constitue une excellente solution pour l'envoi au service d'assurance qualité ou la distribution de l'application ailleurs que dans le magasin Google Play.

141voto

Firoz Memon Points 1694

Par défaut, l'IDE n'utilise pas de bundles d'applications pour déployer votre application dans un fichier périphérique local pour les tests

Voir bundletool commande

Pour la commande Debug apk,

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

Pour la commande 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

Editar:

J'ai utilisé les commandes suivantes pour tester ma version d'aab (j'espère que cela aidera d'autres personnes) :

  1. Télécharger bundletool du fichier jar de Dépôt Github (Dernière version > Actifs > fichier bundletool-all-version.jar). Renommez ce fichier en bundletool.jar

  2. Générez votre fichier aab à partir d'Android Studio, par exemple : myapp-release.aab

  3. Exécutez la commande suivante :

    java -jar "path/to/bundletool.jar" build-apks --bundle=myapp-release.aab --output=myapp.apks --ks="/path/to/myapp-release.keystore" --ks-pass=pass:myapp-keystore-pass --ks-key-alias=myapp-alias --key-pass=pass:myapp-alias-pass
  4. myapp.apks sera généré

  5. Assurez-vous que votre appareil est connecté à votre machine

  6. Exécutez maintenant la commande suivante pour l'installer sur votre appareil :

    java -jar "path/to/bundletool.jar" install-apks --apks=myapp.apks

Edit 2 :

Si vous devez extraire un seul .apk à partir du fichier .aab vous pouvez ajouter un paramètre supplémentaire --mode=universal à la bundletool commandement :

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

et exécute

unzip -p /MyApp/my_app.apks universal.apk > /MyApp/my_app.apk

cela générera un seul a /MyApp/my_app.apk un fichier qui peut être partagé et installé par n'importe quel installateur d'applications pour appareils.

66voto

Redman Points 4834

Ok, voici le chemin complet que j'ai dû faire :

  1. Télécharger bundletool-all-0.10.3.jar de ce lien , téléchargez la dernière version disponible

  2. Créez un paquet d'applications en utilisant Android studio et localisez son chemin :

    Dans mon cas, c'est E:\Projects\Android\Temp\app\build\outputs\bundle\debug\app.aab

  3. Copiez le jar bundletools à un endroit quelconque et récupérez son chemin d'accès

Dans mon cas, c'est E:\Temp\bundletool-all-0.6.0.jar

Utilisez cette commande :

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

Dans mon cas, ce sera

    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
  1. Cela créera un fichier out_bundle_archive_set.apks et le renommer en .zip out_bundle_archive_set.zip extraire ce fichier et c'est fait Vous aurez de multiples apk fichiers

Pour installer directement sur un dispositif externe, utilisez :

java -jar "E:\Temp\bundletool-all-0.6.0.jar" install-apks --apks=out_bundle_archive_set.apks

Vérifiez ceci article de blog pour plus d'informations, consultez également site officiel

21voto

Pierre Points 4658

On a déjà expliqué comment faire cela avec la ligne de commande. Pour compléter, j'ai pensé que je pourrais également montrer la façon de le faire via l'interface utilisateur dans Android Studio.

Lorsque vous ouvrez votre "Run/Debug Configurations", vous pouvez sélectionner "APK du paquet d'applications" (au lieu de "Default APK").

Voir la capture d'écran :

enter image description here

0 votes

Not able to build APK form aab , getting the following error "Install failed. Installation failed <a href='rerun'>Rerun</a>"

0 votes

Après Shift + F10, il s'agit d'installer une application sur un appareil, pas de générer un apk.

17voto

Amar Ilindra Points 658

Consultez Geek Dashboard pour plus d'informations .

Pour ceux qui cherchent à générer un seul fichier APK universel à partir de votre ensemble d'applications Android, vous devez utiliser les éléments suivants --universal lors de l'exécution de la build-apks commandement.

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

bundletool.jar est le fichier jar bundletool que vous avez téléchargé ici

votre_app.aab est le pack d'applications Android de votre application

votre_app.apks est le fichier d'archive APKs de sortie qui sera généré une fois que vous aurez exécuté la commande.

En exécutant la commande ci-dessus, assurez-vous de placer bundletool.jar y votre fichier OAA dans le même dossier.

Maintenant, vous devez modifier le fichier your_app. apks à votre_app. zip et l'extraire pour trouver le universal.apk fichier

enter image description here

Note : Utiliser –overwrite pour écraser le fichier APKs s'il en existe déjà un avec le même nom. Sinon, bundletool vous enverra une erreur fatale.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X