Android App Bundle について

Android App Bundle はアプリのコンパイル済みコードとリソースがすべて含まれた公開形式です。ただし、APK の生成と署名は Google Play が行います。

Google Play は App Bundle から、デバイス設定ごとに最適化した APK を生成、配信します。それによって、個々のデバイスでアプリを実行するのに必要なコードとリソースだけがダウンロードされます。デベロッパー側では、多様なデバイスのサポートを最適化するために複数の APK をビルド、署名、管理する必要がなくなり、ユーザー側では、よりサイズが小さく、最適化された APK をダウンロードできるようになります。

最適化された APK を配信できる App Bundle をビルドするのは、ほとんどの場合それほど難しくはありません。たとえば、確立された手法に沿ってすでにアプリのコードとリソースを構成している場合、Android Studio またはコマンドラインを使用して、署名済みの Android App Bundle をビルドし、Google Play にアップロードするだけです。これにより、最適化された APK からおのずとメリットがもたらされます。

App Bundle 形式でアプリを公開する場合は、必要に応じて Play Feature Delivery を利用することもできます。これにより、アプリ プロジェクトに機能モジュールを追加できます。これらのモジュールは、指定した条件に基づいてアプリにのみ含まれている、または後からランタイムで Play Core Library の使用をダウンロードする際に利用できる機能とリソースを備えています。

App Bundle を使用してアプリを公開しているゲーム デベロッパーは、Play Asset Delivery を使用できます。これは、大量のゲームアセットを配信するための Google Play のソリューションであり、これによりデベロッパーは柔軟な配信方法を利用し、高パフォーマンスを実現できます。

Android App Bundle を使用したアプリの公開が推奨される理由の概要については、次の動画をご覧ください。

圧縮ダウンロード サイズの制限

Android App Bundle を使用して公開すると、最小ダウンロード サイズでアプリをインストールできるようになり、圧縮ダウンロード サイズの制限が 200 MB に引き上げられます。つまり、ユーザーがアプリをダウンロードする場合、アプリのインストールに必要な圧縮 APK の合計サイズ(ベース APK と設定 APK など)を 200 MB 以下にする必要があります。オンデマンドでの機能モジュール(およびその設定 APK)のダウンロードなど、後続のダウンロードも、この圧縮ダウンロード サイズの制限に従う必要があります。Asseet Pack はこのサイズ制限に含まれませんが、別のサイズ制限があります。

App Bundle をアップロードしたときに、アプリやそのオンデマンド機能のダウンロードのいずれかが 200 MB を超えることが Play Console で検出されると、エラーが発生します。

なお、Android App Bundle は APK 拡張(*.obb)ファイルに対応していません。そのため、App Bundle の公開時にこのエラーが発生した場合は、以下のリソースのいずれかを使用して、圧縮 APK ダウンロード サイズを削減してください。

  • 設定 APK ごとに enableSplit = true を設定して、すべての設定 APK が有効になるようにします。これにより、ユーザーがデバイスでアプリを実行するために必要なコードとリソースだけがダウンロードされるようになります。
  • 未使用のコードやリソースを削除してアプリを縮小します
  • おすすめの方法に従ってアプリのサイズを削減します
  • 一部のユーザーのみが使用する機能を機能モジュールに変換して、アプリが後でオンデマンドでダウンロードできるようにすることを検討します。この設定を行うとアプリのリファクタリングが必要になる可能性があるため、上記の他の推奨事項をまずお試しください。

その他の考慮事項

Android App Bundle を使用してアプリをビルドまたは配信する際の、現時点における既知の問題は次のとおりです。ここに記載されていない問題が発生した場合は、バグを報告してください。

  • サイドローディングされたアプリ(Google Play ストアを使用せずにインストールされ、必要な分割 APK が欠けているアプリ)の部分的なインストールは、Google 認定デバイスと Android 10(API レベル 29)以上を搭載したデバイスのすべてで失敗します。Google Play ストアからアプリをダウンロードする場合は、アプリに必要なすべてのコンポーネントを Google が確実にインストールします。
  • リソース テーブルを動的に変更するツールを使用すると、App Bundle から生成された APK が予期しない動作をする場合があります。そのため、App Bundle をビルドする場合は、こうしたツールを無効にすることをおすすめします。
  • 現状では、機能モジュールのビルド構成に、ベース(または他の)モジュールのプロパティと競合するプロパティを構成することが可能な状態です。たとえば、ベース モジュールで buildTypes.release.debuggable = true を設定し、機能モジュールでは false に設定できます。このように競合すると、ビルドとランタイムの問題が発生します。デフォルトでは、機能モジュールはベース モジュールから一部のビルド構成を継承します。したがって、機能モジュールのビルド構成で、保持する必要がある構成と省略する必要がある構成を把握しておいてください。

参考情報

Android App Bundle の詳細については、次のリソースをご覧ください。

ブログ投稿

動画