【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 を利用すると良さそうです。

参考

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をコピーしました