メインコンテンツまでスキップ

Android Build

Overview

Androidのビルドについてまとめたセクション

APKとAABの違い

Androidアプリのビルド形式として代表的なものに、APK(Android Package)とAAB(Android App Bundle)がある。
それぞれの特徴と違いは以下の通り。

APK(.apk)

APKはAndroid端末に直接インストール可能なファイル形式。
ビルド時点で必要なすべてのリソースやコードが含まれており、完成された状態のアプリパッケージ。

  • メリット
    • 端末にそのままインストールできる
    • 配布がシンプル(メール、社内ストレージなど)
    • デバッグやテストに向いている
  • デメリット
    • 不要なリソース(複数のABIなど)も含まれている可能性があり、ファイルサイズが大きくなりやすい
    • Play Storeでは最適化されない

Fat APK(ファットAPK)

Fat APK(ファットAPK)とは、すべてのCPUアーキテクチャ(ABI)用のバイナリを1つにまとめた大きなAPKファイル。
これ1つでどのAndroid端末でも動作するというメリットがありますが、その分ファイルサイズが大きくなり、ダウンロードやインストール時の負荷が高くなる。

テストや社内配布には便利ですが、公開用としては推奨されない。
Google Playで配布する場合はアプリバンドル(AAB)形式が推奨され、APKで配布する場合も --split-per-abi フラグを使って端末に最適化された分割APKを作ることをおすすめします。

AAB(.aab)

AABは、Google Play向けに最適化された配布形式で、すべてのコードとリソースがまとめられた「アプリの設計図」。
Play Storeがユーザーの端末に応じた最小構成のAPKを自動生成して配信する。

  • メリット
    • ユーザーごとに最適化されたAPKが配信されるため、ダウンロードサイズ・インストールサイズが小さくなる
    • 将来的にPlay Store配布にはこちらが推奨(GoogleもAABを標準に移行中)
  • デメリット
    • 直接インストールができない(デバイスにインストールするには、Google Playまたは特殊な手順が必要)
    • ローカルでの検証やデバッグには不向き

使い分けの目安

  • テストや社内配布用途 → APK(Fat APK または --split-per-abi
  • Google Play配信用 → AAB(App Bundle)