分割 APK と Android App Bundle をユーザー向けに解説
Advertisement
1 つの APK から複数へ
かつてアプリは、あらゆる画面サイズ・言語・CPU 向けのコードとリソースを含む 1 つの APK でした。2021 年 8 月以降、Google Play は新規アプリを Android App Bundle(.aab)としてアップロードすることを求めています。Play はバンドルを保管し、ダウンロードごとに、その端末でアプリを構成する APK 一式を生成します。
構成要素
- base.apk:すべての端末に共通のコードとリソース。単体でインストールできるのは、そう作られたアプリだけで、最近のアプリの多くは違います。
- 構成別の分割:
split_config.arm64_v8a.apk(CPU 向けネイティブコード)、split_config.xxhdpi.apk(画面密度向け画像)、split_config.ja.apk、split_config.en.apk(言語の文字列)。端末は各種類から 1 つずつ受け取ります。 - 機能別の分割:エディターやカメラ機能など、必要になったときにダウンロードされる任意のモジュール。
1 つのアプリのすべての分割は、パッケージ名、バージョンコード、署名を共有します。Android はそれらを 1 つのセッションでインストールし、1 つのアプリとして扱います。
base.apk だけでは失敗する理由
アプリは起動後、分割の中にあるリソースやネイティブライブラリを探して Resources$NotFoundException や UnsatisfiedLinkError でクラッシュするか、インストーラーが INSTALL_FAILED_MISSING_SPLIT で拒否します。XAPK をまとめてインストールしなければならないのはこのためです。SAI での分割 APK インストール を参照してください。
ミラーはバンドルをどう扱うか
Play は端末別のセットを生成するため、ミラーは ユニバーサル APK(開発者による単一ファイルのビルド。すべての構成を含み大きいがどこでも入る)か、ベースと最も一般的な構成(arm64、xxhdpi、複数言語)の分割を含む XAPK を保管します。当サイトのバージョンページは各ファイルの形式を明記しているので、特殊な端末にはユニバーサル APK、現行のスマホには XAPK を選べます。
端末の状態を調べる
App Manager や SAI はインストール済みアプリの詳細で分割を一覧します。adb shell pm path <パッケージ> はアプリのすべての APK ファイルを 1 行ずつ出力します。1 行だけのアプリは、ユニバーサルまたは単一ファイルのパッケージとしてインストールされています。
本ガイドは一般的な Android の動作を説明しています。メニュー名はメーカーや Android のバージョンで異なります。当サイトのダウンロードは実績のある第三者ミラーから配信され、当方で改変することはありません。