aab形式のandroidアプリを端末にインストールする

Apr 4, 2020 11:25 · 1776 words · 4 minute read android

目次

環境

  • 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

tweet Share