ターミナル経由またはAndroidスタジオを使用して、Androidアプリバンドルからapkファイルを生成する方法はありますか?
デフォルトでは、IDEはアプリバンドルを使用してアプリをテスト用のローカルデバイスにデプロイしません
bundletool コマンドを参照してください
Debug apkコマンドの場合、
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
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
OKここに私がしなければならなかった完全な方法があります
1.これからbundletool-all-0.6.0.jarをダウンロードします link 、利用可能な最新バージョンをダウンロードします
2. Android studioを使用してアプリバンドルを作成し、そのパスを見つけます
私の場合、E:\Projects\Android\Temp\app\build\outputs\bundle\debug\app.aab
3. bundletools jarをある場所にコピーし、そのパスを取得します
私の場合、E:\Temp\bundletool-all-0.6.0.jar
このコマンドを使用します
Java -jar "BUNDLE_TOOL_JAR_PATH" build-apks --bundle="BUNDLE_PATH" --output=YOUR_OUTPUT_NAME.apks
私の場合、それは
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.これにより、ファイルout_bundle_archive_set.apks
が作成され、名前が.Zip out_bundle_archive_set.Zip
に変更され、このファイルが抽出されて完了します。複数のapkがあります。
これまで、AABからAPKを取得するためのソリューションを提供した人はいませんでした。
このソリューションは、ユニバーサルバイナリをapkとして生成します。
Bundletoolコマンドに--mode = universalを追加します(署名済みアプリが必要な場合は、必要に応じて--ksパラメーターを使用します)。
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--mode=universal
出力ファイル名を.apksから.Zipに変更します
解凍して探索する
ファイルuniversal.apkはあなたのアプリです
このユニバーサルバイナリはおそらく非常に大きくなりますが、QA部門に送信したり、Google Playストア以外の場所にアプリを配布したりするのに最適なソリューションです。
AABファイルからAPKを作成できるbundletool
というツールがあります。
このツールの詳細については、こちらをご覧ください。 https://developer.Android.com/studio/command-line/bundletool
しかし、ここでそのサイトから取られたいくつかのハイライト:
APKの構築
BundletoolがアプリバンドルからAPKを生成すると、APKセットアーカイブと呼ばれるコンテナにAPKが含まれます。これは、ファイル拡張子.apksを使用します。アプリがアプリバンドルからサポートするすべてのデバイス構成のAPKセットを生成するには、以下に示すようにbundletool build-apksコマンドを使用します。
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
上記のコマンドは、署名されていないAPKのAPKセットを作成することに注意してください。 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
APKのインストール
bundletool install-apks --apks=/MyApp/my_app.apks
APKのデバイス固有のセットを生成します
bundletool build-apks --connected-device --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Androidアプリバンドルから単一のユニバーサルAPKファイルを生成する場合は、--universal
コマンドの実行中にbuild-apks
フラグを使用する必要があります。
Java -jar bundletool.jar build-apks --bundle=your_app.aab --output=your_app.apks --mode=universal
bundletool.jarはダウンロードしたbundletool jarファイルです here
your_app.aabは、アプリのAndroidアプリバンドルです
your_app.apksは、コマンドを実行すると生成される出力APKアーカイブファイルです。
上記のコマンドを実行している間、bundletool.jarとAABファイルを同じフォルダーに配置してください。
ここで、your_app。apksファイル形式をyour_app。Zipに変更し、それを抽出してuniversal.apkファイル
注:–overwrite
フラグを使用して、同じ名前のAPKファイルが既に存在する場合はAPKファイルを上書きします。そうでない場合、bundletool
コマンドは致命的なエラーをスローします。
docs によれば、./gradlew :base:bundleDebug
を使用して、baseがモジュール名である場所にビルドできます。このコマンドは、Android Studio内のターミナルで試すことができます。