aab形式のandroidアプリを端末にインストールする
Apr 4, 2020 11:25 · 1776 words · 4 minute read
目次
環境
- ubuntu 16.04
aabとは?
Android App Bundleという形式で、アプリをコンパイルしたデータです。アプリのソースや画像などの情報を含んでおり、aab形式のデータをGoogle Playにアップロードすることで、アプリを配信することができます。
aabの形式を使うことで、利用者の使っているandroid端末に最適化したアプリデータを配信することができます。
利用者のandroid端末の解像度やCPUに最適化されたアプリデータをインストールできることで、不要なデータが削ぎ落とされ、アプリのデータサイズを小さくすることができます。
参照URL、画像参照元
Android App Bundle について
必要なツールのインストール
「bundletool」と「keytool」を使います。
bundletool
bundletoolは、Android App Bundle形式のアプリデータを扱うためのツールで、Googleが公開しています。
https://github.com/google/bundletool
下記から、最新版のbundletoolをダウンロードし、必要に応じてパスを通します。
この記事では、パスを通さない前提でコマンドを記載しています。
https://github.com/google/bundletool/releases
bundletoolについての詳細は下記を参照してください。
参照URL
Android デベロッパー > Android Studio > ユーザーガイド > bundletool
keytool
keytoolは、androidアプリの開発環境を作成した際に、各種ツールと一緒にインストールされているはずです。
もしインストールされていない場合、Ubuntuでは下記コマンドからインストールすることができます。
$ sudo apt install android
手順
keystore作成
ビルドしたアプリデータを端末にインストールするためには、アプリに署名情報を含める必要があります。アプリに含める署名情報を作成します。
今回はkeystore名として「my-key.keystore」、aliasとして「alias_name」を指定しています。
コマンドを実行すると、keystoreに設定するパスワードを聞かれます。ここで設定するパスワードは、アプリをビルドする際に必要となるので、忘れないようにしてください。
$ keytool -genkey -v -keystore my-key.keystore -alias alias_name -keyalg RSA -validity 10000
aabファイルからapksファイルを作成
bundletoolを使って、aabファイルからapksファイルを作成します。
apksファイル?
「APK セット アーカイブ」と呼ばれるコンテナだそうです。
詳細URL
App Bundle から APK のセットを生成する
ビルドする
先程keytoolで作成した署名情報を含めたapkファイルを作成します。
パソコンにインストール対象のandroid端末を接続するか、インストール対象のエミュレータを起動した状態で下記のコマンドを実行します。
「{aab file name}」や「{path}」部分は、自身の環境に合わせて変更してください。
「–connected-device」オプションをつけることで、接続されているデバイスに最適化されたapksファイルが作成されます。
$ java -jar {path}/bundletool-all.jar build-apks --bundle={path}/{aab file name}.aab --output={apks file name}.apks --ks=my-key.keystore --ks-pass=pass:{keystore作成時に設定したパスワード} --ks-key-alias=alias_name --key-pass=pass:{任意のパスワード} --connected-device
オプションの詳細については、下記を参照してください。
参照URL
App Bundle から APK のセットを生成する
端末にインストール
bundletoolを使って、apksファイルをandroid端末にインストールします。
このコマンドを実行すると、インストール先のandroid端末に最適化されたアプリデータがインストールされます。
$ java -jar {path}/bundletool-all.jar install-apks --apks={apks file name}.apks
参照URL
接続されているデバイスに APK をデプロイする
最後に
今回、初めてaab形式のandroidアプリデータを触りました。
aabは、
- 年々androidアプリのデータサイズが大きくなっている
- アプリデータが大きくなると、インストールを避けられる傾向がある
- せっかくインストールしてもらっても、アプリデータが大きいと端末のストレージ確保のためにアンインストールされてしまう確率が高くなる
という背景の中で生まれたそうです。
これからandroidアプリを作成する機会では、aabの形式を使おうと思います。
参照URL
What a new publishing format means for the future of Android