![サバ缶](https://tech-begin.com/wp-content/uploads/2021/08/cropped-profile_icon.png)
どうもこんにちは!
サバ缶(@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)を使うのか
これには経緯を知る必要があります。
物語調で解説していくのでわかりやすいと思います。
![](https://tech-begin.com/wp-content/uploads/2022/07/サラリーマン.png)
時間が無いんだ!
ざっくり理解しておきたい!
という方は、後半の『まとめ』へどうぞ!
① APK拡張ファイル
GooglePlay ストアで公開できるアプリのファイルサイズは、100MB と上限が決まっています。
しかし、高画質な映像を使ったハイクオリティのゲームアプリなどは数GB の容量がありますよね。
これまではメインデータを最初にインストールし、ゲーム開始前に多くのデータをダウンロードする形式が取られていました。
![](https://tech-begin.com/wp-content/uploads/2022/07/OL風の人物アイコン.png)
あれ、結構時間かかるよね。
![サバ缶](https://tech-begin.com/wp-content/uploads/2021/08/cropped-profile_icon.png)
そうそう。
それがボトルネックだったりする。
しかし、それを Google が問題視!
せっかくインストールしたのに、追加ファイルのダウンロードに時間がかかるのはユーザにとって不快です。
また、追加データをダウンロードするということは、開発者側もサーバを準備したりコストがかかります。
![](https://tech-begin.com/wp-content/uploads/2022/07/サラリーマン.png)
えっ、どっちも良いことないじゃん。
そう、これはユーザも開発者、双方にとってデメリットしかないです。
そこでGoogleは、100MB 以上のデータ容量となる場合、追加データとして「APK拡張ファイル」をアップロードすれば、100MB 以上のアプリでもOKだよ!と決めました。
Googleすげー!
② Multiple APK (複数APKサポート)
Android は OSS のため、携帯販売会社がカスタマイズした Android端末を多数販売しています。
そのため、画面サイズもレイアウトも多種多様な端末があります。
![](https://tech-begin.com/wp-content/uploads/2022/07/OL風の人物アイコン.png)
この端末だと、ユーザ名が変な位置にある……。
![](https://tech-begin.com/wp-content/uploads/2022/07/サラリーマン.png)
おいおい、画像が見切れてるぞ……。
1つのAPKで複数の端末に対応しようとすると、このように不具合が起きる可能性があります。
そこで、出来るだけ多くの Android 端末に対応するために1つのアプリで複数の APK を公開するための機能です。
![サバ缶](https://tech-begin.com/wp-content/uploads/2021/08/cropped-profile_icon.png)
データ容量、多種多様なデバイスへの対応……
もう全て解決だ!よっしゃー!
③ 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よりもファイル容量が削減できます。
![](https://tech-begin.com/wp-content/uploads/2023/10/APKとAABの容量比較.png)
上の画像は、私が今開発しているアプリの容量比較画像です。
![サバ缶](https://tech-begin.com/wp-content/uploads/2021/08/cropped-profile_icon.png)
AABの方がファイルサイズが
小さいことがわかりますね!
まとめ
アプリ配布するためには、APKが必須となります。
これを配布するにあたって、100MB 以上となるアプリだと「APK拡張ファイル」を使って100MB 以上のファイルを配布することが可能です。
この「APK拡張ファイル」は2つ(それぞれ上限2GB)添付することができます。
しかし、「APK 拡張ファイルを使うほどではないけど、APK にすると100MB 以上になってしまう」という場合に AAB を利用するのがベターです。
参考
ちなみに、2021年後半以降に新規リリースするアプリはAABを使用する必要があります。
アップデートするアプリに関しては対象外のようですが、気をつけておきましょう!💪
![](https://tech-begin.com/wp-content/uploads/cocoon-resources/blog-card-cache/7d1534ca28dbc9acc40b905a3c4b2a64.png)
![](https://tech-begin.com/wp-content/uploads/cocoon-resources/blog-card-cache/7d1534ca28dbc9acc40b905a3c4b2a64.png)
![](https://tech-begin.com/wp-content/uploads/cocoon-resources/blog-card-cache/7d1534ca28dbc9acc40b905a3c4b2a64.png)