【Unity】Android App BundleとPlay Asset Deliveryの概要をサクッと学ぶ

Android App BundleとPlay Asset Deliveryの概要を簡単にまとめます。

はじめに - 今後は使われないOBB

まずAndroid App Bundle(AAB)やPlay Asset Delivery(PAD)の話をする前に、
前提知識としてOpaque Binary Blob (OBB)について触れておきます。

Google PlayにアップロードできるAPKのサイズには100MBという制限があるのですが、
OBBはこれに収まりきらないリソースを拡張ファイルとしてGoogle Playにアップロードできる機能です。

OBBにしたリソースは基本的にアプリと一緒にダウンロードされるため、
ユーザがアプリを起動する時には拡張ファイルも含めた全てのリソースが揃っている状態になります。

developer.android.com

Unityでも以下のようにOBBのサポートが入っています。

docs.unity3d.com

さてこのOBBですが、後述するAABとは一緒に使うことができない機能となっています。

Android App Bundle は APK 拡張(*.obb)ファイルに対応していません
Android App Bundle について  |  Android デベロッパー  |  Android Developers より

そして、2021年8月以降に新規公開するアプリについてはAABの対応が必須となります。

developers-jp.googleblog.com

つまりこれらのことを踏まえると、2021年8月以降、新規公開するアプリについてはOBBはもはや使われない仕組みであると言えます。

Android App Bundle

さてそれでは前節で出てきたAndroid App Bundle(AAB)とは何者でしょうか。

AAB登場以前のAPKの仕組みでは、多様なデバイスや環境のためのリソースを全て一つのAPKに含んでいました。
つまり、全てのユーザが、本来自分の環境には不要なデータまで含んだAPKをインストールしていました。

この状況を改善するためにDynamic Deliveryと呼ばれる仕組みが作られました。
Google PlayにAAB形式のファイルをアップロードすると、そこから自動的に各ユーザに適したAPKが生成される仕組みになっています。

https://1.bp.blogspot.com/-lwdb_wiD6vM/WvHRpCJz0TI/AAAAAAAAFWY/kO_wnXli8PUFmEe7ELWpwOu5m-A7TGLPACLcBGAs/s1600/App-Bundle-Animation_GIF.gif Android Developers Blog: I/O 2018: Everything new in the Google Play Console より

この仕組みによりユーザは自身の環境に適したリソースだけをインストールできるようになりました。
またAABにした場合にはファイル容量の制限がAPKよりも少し緩くなり、150MBまでになります。

Unityでは設定値を変えるだけでAABを出力できるようになっています。

blogs.unity3d.com

Play Asset Delivery

さて前述の通り、AABはOBBに対応していません。
つまり、AABの上限150MBを超えた際に拡張ファイルであるOBBにリソースを逃すといったことができません。

こういったケースでOBBの代わりに使うのがPlay Asset Delivery(PAD)です。
PADを使うとトータルで2GBまでのファイルをGoogle Playにアップロードすることができます。

developers-jp.googleblog.com

アップロードしたファイルは以下のタイミングで柔軟に配信できます。

  • install-time: ゲームのインストールと一緒に
  • fast-follow: ゲームのインストール直後
  • on-demand: リクエストされたときに

アップロードできる上限の仕様は以下の通りです。

  • install-time: 1GB
  • fast-follow: 512MB
  • on-demand: 512MB
  • アセットパック(ファイル)は最大50個

またUnityでPADをビルドするための仕組みもGoogle側で用意されています。
が、Unity公式でも対応が行われているようです。(後ほどまとめます)

developer.android.com

参考

developer.android.com

docs.unity3d.com

developers-jp.googleblog.com

blogs.unity3d.com

developers-jp.googleblog.com

developer.android.com

forum.unity.com

developer.android.com