最近では公開には aab ファイルを使いますが、中には apk が内包されています
そのapkを bundletool を使って取り出してみましょう
2021.2.1
aabとapk
aabは公開のみを目的としており、Android デバイスにインストールすることはできません
apkは端末にインストール可能かつ実行可能なアプリ形式です
aabをデバイスにインストールするためにはbundletool を使ってapkを取り出す必要があります
 
bundletoolをインストール
インストール方法はいくつかあります
(1) Googleのgithubからから直接最新版を選択
jarファイルを「リンク先を別名で保存…」
![[Android] aabからapkを取り出しをインストールする 1x1.trans - [Android] aabからapkを取り出しをインストールする](https://akira-watson.com/wp-content/themes/simplicity2/images/1x1.trans.gif)
(2) あるいは、jarファイルのパスを取得して以下のコマンドでも取得できます
| 1 | curl -f -L -o bundletool.jar https://github.com/google/bundletool/releases/download/1.11.0/bundletool-all-1.11.0.jar | 
(3) Macの場合は簡単です
| 1 | brew install bundletool | 
apkをaabから取り出す
Pathを通してなければ、とりあえずjarファイルがある場所に以下のように
xxx.aab ファイルとキーストアファイル xxx.jks をおきます
(Key Storeがなくてもできます)
![[Android] aabからapkを取り出しをインストールする 1x1.trans - [Android] aabからapkを取り出しをインストールする](https://akira-watson.com/wp-content/themes/simplicity2/images/1x1.trans.gif)
app-release.aabを作成した時のパスワードを入れ
以下のコマンドを打ちます
実際にKey Storeでパスワードを適当に作ったaabを使ってやってみます
| 1 2 3 4 5 6 | bundletool build-apks --bundle=app-release.aab \                        --output=app.apks \                        --ks=TestApp.jks \                        --ks-pass=pass:123456 \                        --ks-key-alias=key0 \                        --key-pass=pass:123456 | 
app.apksが出来上がっています
| 1 2 3 4 5 6 | MacBookPro15:Downloads ajw$ ls -l -rw-r--r--  1 ajw  staff      4409  7 13 11:53 TestApp.jks -rw-r--r--  1 ajw  staff   2765179  7 13 12:14 app-release.aab -rw-r--r--  1 ajw  staff   4376199  7 13 14:53 app.apks -rw-r--r--@ 1 ajw  staff  27926161  7 13 14:51 bundletool-all-1.11.0.jar MacBookPro15:Downloads ajw$ | 
bundletoolによるとパスワードは必須ではないようで、aabファイルと出力先だけでもapkを作成できるようです(warningは出ますが)
| 1 2 | bundletool build-apks --bundle=app-release.aab \                         --output=app.apks | 
この app.apks ですがzipファイルとして圧縮してあるので拡張子をzipに変更すると解凍することができます
様々な言語用のapkができているのがわかります
![[Android] aabからapkを取り出しをインストールする 1x1.trans - [Android] aabからapkを取り出しをインストールする](https://akira-watson.com/wp-content/themes/simplicity2/images/1x1.trans.gif)
apkを端末にインストール
端末にインストールするには、
| 1 | bundletool install-apks --apks=app.apks | 
adb を使ってインストールするには base-master.apk を一緒にインストールする必要があります
例えば base-ja.apk をインストールするには
| 1 2 3 | MacBookPro15:adb ajw$ adb install-multiple base-master.apk base-ja.apk Success MacBookPro15:adb ajw$ | 
これでaabからapkを取り出して端末にインストールすることができました
References:
bundletool
AAB と APK の違いは何ですか?
