ChromeOS デバイスのアプリサポート

一部の Google Chromebook の機種では、Google Play ストアを使用して Android アプリをインストールできます。このドキュメントでは、Android アプリをインストールできる Chromebook、Chromebox、Chromebase について説明します。

概要

ほとんどの Android スマートフォンには ARM チップセットが搭載されています。一方、多くの ChromeOS デバイスでは x86 チップが使用されています。Kotlin または Java で記述された簡単なアプリでは、この違いは重要ではありません。しかし、C/C++ コードで記述されたアプリ(ゲームエンジンで作成されたアプリなど)では、デバイスのチップセットが重要な問題になる可能性があります。

理想的には、C/C++ コードで作成したアプリとゲームには、4 つの主要な Android ABI(アプリケーション バイナリ インターフェース)である armeabi-v7a(arm32)、arm64-v8a(arm64)、x86(x86_32)、x86_64 をすべて搭載するべきです。そうすれば、各デバイスで最適なパフォーマンスと最小のバッテリー消費を実現できます。たとえば、cmake ベースの build.gradle ファイルの場合、次の行を追加します。

Groovy

externalNativeBuild {
    cmake {
        abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
    }
}

Kotlin

externalNativeBuild {
    cmake {
        abiFilters("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
    }
}

Android Package Kit(APK)のサイズ

モノリシック APK に含まれる個々の ABI はサイズが大きくなります。これは、ユーザーのディスク使用量、アプリのダウンロード サイズ、アプリが Google Play ストアのサイズ制限の影響を受けるかどうかに影響する可能性があります。これを回避する最良の方法は、Android App Bundle を使用することです。

App Bundle を使用すると、Android Studio 内から 4 つの ABI すべてをバンドルできますが、ユーザーがダウンロードするサイズは大きくなりません。また、Dynamic Delivery の利用が容易になり、リクエストがあった場合にのみユーザーが大規模なゲーム コンテンツをダウンロードできるようにすることが可能です。App Bundle を使用できない場合は、従来のマルチ APK を使用して同様の動作を実現できます。

32 ビットビルドと 64 ビットビルド

すべての Android アプリは 64 ビットビルド バージョンを提供する必要があります。ARM デバイスと x86 デバイスでは、32 ビットビルドの提供はオプションです。詳しくは、Android の 64 ビットをご覧ください。

64 ビットビルドのみを提供する場合、必要なビルド ターゲットの数が減り、テスト サーフェスが縮小されますが、ゲームを実行できるデバイスの種類も制限されます。たとえば、従来の多くの Chromebook では、ハードウェアの他の制限により、CPU が 64 ビットであるにもかかわらず、32 ビットの Android アプリしか実行できません。そのようなデバイスで確実にアプリを実行できるようにするには、32 ビットと 64 ビットの両方をサポートする必要があります。

ARM 変換

x86 Chromebook は可能な限り ARM コードを変換しようとしますが、変換はパフォーマンスの低下とバッテリー使用量の増加を招きます。最適なユーザー エクスペリエンスを実現するには、x86 ビルドを提供します。提供できない場合は、arm32 と arm64 の両方の ABI をビルドに組み込んでください。これは、一部の x86 Chromebook では arm64 コードを変換できないためです。たとえば、従来の多くの Chromebook では、ハードウェアの他の制限により、CPU が 64 ビットであるにもかかわらず、32 ビットの Android アプリしか実行できません。そのようなデバイスで確実にアプリを実行できるようにするには、32 ビットと 64 ビットの両方をサポートする必要があります。

arm32 はすべての Android 対応 Chromebook で変換できますが、arm64 コードはすべての Chromebook で変換できるわけではありません。つまり、ビルド ターゲットが arm64 のみのゲームは、多くの ChromeOS デバイスで使用できません。x86 バイナリを出荷できない場合は、arm32 と arm64 の両方の ABI をビルドに組み込んでください。

組み込む ABI ChromeOS のサポート
arm64 悪い
arm32 と arm64 中程度(変換あり)
arm32、arm64、x86_32、x86_64 最良