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

操作中のAndroidスマホ Android開発

現在、個人開発しているアプリがあります。

ストア公開するにあたって、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 を生成します。

「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 を生成します。

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

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

APKとAABの容量比較

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

僕

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

まとめ

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

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

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

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

参考

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

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

Android App Bundle について  |  Android デベロッパー  |  Android Developers
Multiple APK support  |  Android Developers
Multiple APK support is a feature on Google Play that allows you to publish different APKs for your application that are each targeted to different device confi...
APK Expansion Files  |  Android Developers
If your app needs more than the 100MB APK max, use free APK expansion files from Google Play.
タイトルとURLをコピーしました