一部の Google Chromebook の機種では、Google Play ストアを使用して Android アプリをインストールできます。このドキュメントでは、Android アプリをインストールできる Chromebook、Chromebox、Chromebase について説明します。
概要
ほとんどの Android スマートフォンには ARM チップセットが搭載されています。一方、多くの Chrome OS デバイスでは x86 チップが使用されています。Kotlin または Java で記述された簡単なアプリでは、この違いは重要ではありません。しかし、ネイティブ コードで記述されたアプリ(ゲームエンジンで作成されたアプリなど)では、デバイスのチップセットが重要な問題になる可能性があります。
理想的には、ネイティブ コードで作成したアプリとゲームには、4 つの主要な Android ABI(アプリケーション バイナリ インターフェース)である armeabi-v7a(arm32)、arm64-v8a(arm64)、x86(x86_32)、x86_64 をすべて搭載するべきです。そうすれば、各デバイスで最適なパフォーマンスと最小のバッテリー消費を実現できます。たとえば、cmake ベースの build.gradle
ファイルの場合、次の行を追加します。
externalNativeBuild { cmake { abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' } }
APK のサイズ
モノリシック APK に含まれる個々の ABI はサイズが大きくなります。これは、ユーザーのディスク使用量とアプリのダウンロード サイズに影響し、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 コードを変換できないためです。
arm32 はすべての Android 対応 Chromebook で変換できますが、arm64 コードはすべての Chromebook で変換できるわけではありません。つまり、ビルド ターゲットが arm64 のみのゲームは、多くの Chrome OS デバイスで使用できません。x86 バイナリを出荷できない場合は、arm32 と arm64 の両方の ABI をビルドに組み込んでください。
組み込む ABI | Chrome OS のサポート |
---|---|
arm64 | 弱 |
arm32 / arm64 | 中程度(変換あり) |
arm32 / arm64 / x86_32 / x86_64 | 最高 |