【Android】APK(Android application PacKage)とAAB(Android App Bundle)の違い

スマホを操作する女性_1Androidアプリ開発
サバ缶
サバ缶

どうもこんにちは!
サバ缶(@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 は、アプリのコンパイル済みコードとリソースをすべて含む新しいアップロード形式です。
ただし、APK の生成と署名は Google Play で行います。
(中略)​
Google Play は App Bundle を使用して、基本 APK、動的機能 APK、設定 APK、(分割 APK をサポートしないデバイスの場合)マルチ APK など、ユーザーに提供するさまざまな APK を生成します。

https://developer.android.com/guide/app-bundle?hl=ja

「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 は、アプリのコンパイル済みコードとリソースをすべて含む新しいアップロード形式です。
ただし、APK の生成と署名は Google Play で行います。
(中略)​
Google Play は App Bundle を使用して、基本 APK、動的機能 APK、設定 APK、(分割 APK をサポートしないデバイスの場合)マルチ APK など、ユーザーに提供するさまざまな APK を生成します。

https://developer.android.com/guide/app-bundle?hl=ja

つまり、APK ではなく、AAB 1つアップロードすれば、多くの端末に対応した APK を自動で生成し、配信するということです。

また、AABであればアップロードの上限が 150MB になり、APKよりもファイル容量が削減できます。

上の画像は、私が今開発しているアプリの容量比較画像です。

サバ缶
サバ缶

AABの方がファイルサイズが
小さいことがわかりますね!

まとめ

アプリ配布するためには、APKが必須となります。

これを配布するにあたって、100MB 以上となるアプリだと「APK拡張ファイル」を使って100MB 以上のファイルを配布することが可能です。

この「APK拡張ファイル」は2つ(それぞれ上限2GB)添付することができます。

しかし、「APK 拡張ファイルを使うほどではないけど、APK にすると100MB 以上になってしまう」という場合に AAB を利用するのがベターです。

参考

ちなみに、2021年後半以降に新規リリースするアプリはAABを使用する必要があります。

アップデートするアプリに関しては対象外のようですが、気をつけておきましょう!💪

Android App Bundle について  |  Android Developers
複数 APK のサポート  |  Android Developers
複数 APK サポートとは、1 つのアプリでデバイス構成ごとに別々の APK を公開するための Google Play の機能です。各 APK はそれぞれがアプリの完全で独立したバージョンですが…
APK 拡張ファイル  |  Android Developers
アプリで必要な APK が最大サイズ(100 MB)を超える場合は、Google Play から無料の APK 拡張ファイルをダウンロードして使用してください。
タイトルとURLをコピーしました