最近では公開には aab ファイルを使いますが、中には apk が内包されています
そのapkを bundletool を使って取り出してみましょう
2021.2.1
aabとapk
aabは公開のみを目的としており、Android デバイスにインストールすることはできません
apkは端末にインストール可能かつ実行可能なアプリ形式です
aabをデバイスにインストールするためにはbundletool を使ってapkを取り出す必要があります
bundletoolをインストール
インストール方法はいくつかあります
(1) Googleのgithubからから直接最新版を選択
jarファイルを「リンク先を別名で保存…」
(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がなくてもできます)
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ができているのがわかります
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 の違いは何ですか?