どうもこんにちは!
サバ缶(@tech_begin)です。
ストア公開するにあたって、APKとAABの違いを理解しておこうと思い、詳細について調べてみました。
意外と奥が深いファイル形式です。
使い分けができるように理解を深めておきましょう!
まず最初はAPK についておさらいします!
APK(Android application PacKage)とは
APK とは、「圧縮ファイル」の形式のことを言います。
Google が開発した圧縮ファイル形式のことで、Android 端末にインストールするためのファイルです。
つまり、APK 形式でなければ Android 端末にインストールすることができません。
GooglePlay ストアのアプリは、その APK ファイルが公開されているイメージですね。
AAB(Android App Bundle)とは
次に、AAB についてみていきましょう!
Android デベロッパードキュメントに、以下のように記載されていました。
Android App Bundle は、アプリのコンパイル済みコードとリソースをすべて含む新しいアップロード形式です。
https://developer.android.com/guide/app-bundle?hl=ja
ただし、APK の生成と署名は Google Play で行います。
(中略)
Google Play は App Bundle を使用して、基本 APK、動的機能 APK、設定 APK、(分割 APK をサポートしないデバイスの場合)マルチ APK など、ユーザーに提供するさまざまな APK を生成します。
「Google PlayがAPKを生成する」などという物凄いことをさらっと書いてます。
なぜAAB(Android App Bundle)を使うのか
これには経緯を知る必要があります。
物語調で解説していくのでわかりやすいと思います。
時間が無いんだ!
ざっくり理解しておきたい!
という方は、後半の『まとめ』へどうぞ!
① APK拡張ファイル
GooglePlay ストアで公開できるアプリのファイルサイズは、100MB と上限が決まっています。
しかし、高画質な映像を使ったハイクオリティのゲームアプリなどは数GB の容量がありますよね。
これまではメインデータを最初にインストールし、ゲーム開始前に多くのデータをダウンロードする形式が取られていました。
あれ、結構時間かかるよね。
そうそう。
それがボトルネックだったりする。
しかし、それを Google が問題視!
せっかくインストールしたのに、追加ファイルのダウンロードに時間がかかるのはユーザにとって不快です。
また、追加データをダウンロードするということは、開発者側もサーバを準備したりコストがかかります。
えっ、どっちも良いことないじゃん。
そう、これはユーザも開発者、双方にとってデメリットしかないです。
そこでGoogleは、100MB 以上のデータ容量となる場合、追加データとして「APK拡張ファイル」をアップロードすれば、100MB 以上のアプリでもOKだよ!と決めました。
Googleすげー!
② Multiple APK (複数APKサポート)
Android は OSS のため、携帯販売会社がカスタマイズした Android端末を多数販売しています。
そのため、画面サイズもレイアウトも多種多様な端末があります。
この端末だと、ユーザ名が変な位置にある……。
おいおい、画像が見切れてるぞ……。
1つのAPKで複数の端末に対応しようとすると、このように不具合が起きる可能性があります。
そこで、出来るだけ多くの Android 端末に対応するために1つのアプリで複数の APK を公開するための機能です。
データ容量、多種多様なデバイスへの対応……
もう全て解決だ!よっしゃー!
③ Android App Bundle
……と思いきや、まだ問題はあります。
複数の APK を作成するということは、その APK の数だけの署名が必要になるということ。
開発者がビルドも、署名も、アプリの管理も全て行わなければなりません。
この世の中にあるAndroid端末に対応するために、何千何万回もビルドするなんて、非現実的です。
そこで、AAB (Android App Bundle) が開発されました。
先述の通りですが、もう一度引用します。
Android App Bundle は、アプリのコンパイル済みコードとリソースをすべて含む新しいアップロード形式です。
https://developer.android.com/guide/app-bundle?hl=ja
ただし、APK の生成と署名は Google Play で行います。
(中略)
Google Play は App Bundle を使用して、基本 APK、動的機能 APK、設定 APK、(分割 APK をサポートしないデバイスの場合)マルチ APK など、ユーザーに提供するさまざまな APK を生成します。
つまり、APK ではなく、AAB 1つアップロードすれば、多くの端末に対応した APK を自動で生成し、配信するということです。
また、AABであればアップロードの上限が 150MB になり、APKよりもファイル容量が削減できます。
上の画像は、私が今開発しているアプリの容量比較画像です。
AABの方がファイルサイズが
小さいことがわかりますね!
まとめ
アプリ配布するためには、APKが必須となります。
これを配布するにあたって、100MB 以上となるアプリだと「APK拡張ファイル」を使って100MB 以上のファイルを配布することが可能です。
この「APK拡張ファイル」は2つ(それぞれ上限2GB)添付することができます。
しかし、「APK 拡張ファイルを使うほどではないけど、APK にすると100MB 以上になってしまう」という場合に AAB を利用するのがベターです。
参考
ちなみに、2021年後半以降に新規リリースするアプリはAABを使用する必要があります。
アップデートするアプリに関しては対象外のようですが、気をつけておきましょう!💪