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

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

概要

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

ネイティブ コードを使用するすべてのアプリとゲームは、armeabi-v7a(arm32)、arm64-v8a(arm64)、x86(x86_32)、x86_64 の 4 つの主要な Android ABI(アプリケーション バイナリ インターフェース)をすべて搭載するのが理想的です。そうすれば、各デバイスで最適なパフォーマンスと最小のバッテリー消費を実現できます。たとえば、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 パッケージ キット(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 の多くは、64 ビット CPU を搭載しているにもかかわらず、32 ビット Android アプリしか実行できません。そのようなデバイスで確実にアプリを実行できるようにするには、32 ビットと 64 ビットの両方をサポートする必要があります。

ARM 変換

x86 Chromebook は可能な限り ARM コードを変換しようとしますが、変換はパフォーマンスの低下とバッテリー使用量の増加を招きます。最適なユーザー エクスペリエンスを実現するには、x86 ビルドを提供する必要があります。検出できない場合は、arm32 と arm64 の両方の ABI をビルドに含めます。一部の x86 Chromebook では arm64 コードが変換されない可能性があるためです。

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

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