Google is committed to advancing racial equity for Black communities. See how.

Chrome OS device support for apps

You can use the Google Play Store to install Android apps on several Google Chromebooks. This document describes the Chromebooks, Chromeboxes, and Chromebases on which you can install Android apps.

Overview

Most Android phones have ARM chipsets. However, many Chrome OS devices use x86 chips. The difference is not important for basic apps written in Kotlin or Java. However, for apps written in native code, including those created with game engines, the chipset in the device can be an important concern.

Ideally, all apps and games with native code should ship with all four major Android ABIs (Application Binary Interfaces): armeabi-v7a (arm32), arm64-v8a (arm64), x86 (x86_32), x86_64. This provides the best performance and lowest battery consumption for each device. For example, a cmake-based build.gradle file may contain:

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

APK size

Each ABI in a monolithic APK increases its size. This can affect your users’ disk usage, app download size, and might come up against the Play Store size limits. The best way to avoid this is to use Android App Bundles. App Bundles let you easily bundle all four ABIs from within Android Studio, but do not increase the download size for your users. They also make it easy to take advantage of Dynamic Delivery, allowing users to download large game content only when requested. If App Bundles are not a possibility for you, you can use the older multi-APK for similar behaviour.

32-bit and 64-bit builds

All Android apps must provide a 64-bit build version. A 32-bit build is optional for both ARM and x86 devices. See Android 64-bit documentation⁠ for more information.

While only providing 64-bit builds reduces the number of build targets needed and your testing surface, it also limits the kinds of devices that can run your game. For example, due to other hardware limitations many older Chromebooks can only run 32-bit Android apps, despite having 64-bit CPUs. To ensure your app can run on these devices, include both 32 and 64-bit support.

ARM translation

x86 Chromebooks try to translate ARM code whenever possible, but translation slows performance and increases battery usage. You should provide x86 builds for the best user experience. If you can't, then include both arm32 and arm64 ABIs in your builds because some x86 Chromebooks might not translate arm64 code.

While arm32 translation is available on all Android-capable Chromebooks, not all Chromebooks can translate arm64 code. This means that if your game only has arm64 build targets, it will not be available for a large number of Chrome OS devices. If you are unable to ship x86 binaries, include both arm32 and arm64 ABIs in your builds.

Included ABIs Support for Chrome OS
arm64 Poor
arm32/arm64 OK (with translation)
arm32/arm64/x86_32/x86_64 Best