【備忘録】bundletool を使った Play Asset Delivery 対応の Android App Bundle の検証手順まとめ


略称

  • PAD:Play Asset Delivery
  • AAB:Android App Bundle

■ はじめに

CIやデプロイのツール上で走らせたかったので bundle ツールを使った検証手順を調べていましたが、情報が少なく自分が困ったので情報としてまとめておこうと思いました。

前提条件

PAD のシステムについては詳しく記載しません。
予めご了承ください。

■ 配信方法のおさらい

PAD には3種類の配信方法がある。

  • install-time 配信
    アプリ起動時に既にインストールされていることが保証されている配信方法。
    APK の assets フォルダに該当する。

  • fast-follow 配信
    ストアからアプリをダウンロード後にダウンロードが開始される配信方法。
    アプリ起動時にダウンロードが終わっている保証が無いため、ダウンロードが完了しているか確認する必要がある。

  • on-demand 配信
    アプリ起動後からダウンロードが開始される配信方法。
    fast-follow 配信同様にダウンロードが完了しているか確認する必要がある。

bundletool の使い方・各種オプション

公式ドキュメントにございますのでこちらをご確認ください。

■ それぞれの検証手順

▼ install-time 配信のみの場合

○ 概要

install-time 配信のみの場合はAssetPackのダウンロードが必要ありません。
build-apks のオプションに --mode=universal という物があり、
ファイルサイズは大きくなりますが端末汎用のAPKを生成出来ますのでそちらを使います。

○ 検証手順

①. aabファイルを作っておきます。

②. 下記シェルを実行し、aab ファイルから apks ファイルを生成します。

build-apks.sh
bundletool build-apks --overwrite \
                      --mode=universal \
                      --bundle=${aabファイルまでのパス} \
                      --output=${apkセットファイルの出力先} \
                      --ks=${キーストアファイルのパス} \
                      --ks-pass=pass:${キーストアファイルのパスワード} \
                      --ks-key-alias=${エイリアスを指定} \
                      --key-pass=pass:${エイリアスのパスワード}

③. ②で生成した apks ファイルを7-zipなどのアーカイブツールで開き、univarsal.apk というファイルを取り出します。

④. ③で取り出した univarsal.apk をAndroidデバイスへインストールして検証。

▼ fast-follow 配信か on-demand 配信の場合

○ 概要

こちらの2つに関しては、通常GooglePlay上からAssetPackをダウンロードしてくる必要があります。
しかし、ローカル環境で検証する場合は、ダウンロードをしないで検証を行うことが可能です。

build-apks のオプションの --local-testing を使います。
こちらを付けることで GooglePlayConsole に aab ファイルをアップロードしなくても動作チェックを行えるようになります。

○ 検証手順

①. aabファイルを作っておきます。

②. 下記シェルを実行し、aab ファイルから apks ファイルを生成します。

aab2apks.sh
$ bundletool build-apks --overwrite \
                        --local-testing \
                        --bundle=${aabファイルまでのパス} \
                        --output=${apkセットファイルの出力先} \
                        --ks=${キーストアファイルのパス} \
                        --ks-pass=pass:${キーストアファイルのパスワード} \
                        --ks-key-alias=${エイリアスを指定} \
                        --key-pass=pass:${エイリアスのパスワード}

③. ②で生成した apks ファイルを bundletool 経由でAndroidデバイスへインストールして検証。

apks-install.sh
$ bundletool install-apks --apks ${apkセットファイルのパス}

○ 注意点

この方法ですとダウンロード関係のチェックは行なえません。
ダウンロードも含めてのチェックを行いたい場合は、
GooglePlayConsoleの内部テスト等にaabファイルをアップしてダウンロードチェックを行ってください。

■ まとめ

凄くざっくりではありますが検証手順をまとめました。
もしかしたら、もっと便利な方法があるかも知れませんので分かったら改めてまとめていこうと思います。