Android downloads often carry suffixes like arm64-v8a or armeabi-v7a. These name the CPU instruction set. Pick wrong and the app either refuses to install or runs at a disadvantage.
The four you will see
| Architecture | Meaning | Devices |
|---|---|---|
| arm64-v8a | 64-bit ARM | The vast majority of Android phones since 2016 — well over 95% |
| armeabi-v7a | 32-bit ARM | Older handsets and some budget devices |
| x86_64 | 64-bit Intel/AMD | Emulators, a few tablets, ChromeOS devices |
| x86 | 32-bit Intel | Long obsolete |
In short: if your Android phone was bought in the last decade, it is almost certainly arm64-v8a.
Checking yours
- A device info appAny hardware information tool shows "CPU architecture" or "ABI" on its first screen.
- System settingsSome Android skins list the processor under About phone.
- adb from a computerThe most precise method — see below.
Query it precisely with adb
adb shell getprop ro.product.cpu.abi
# e.g. arm64-v8a
# every ABI the device supports, in priority order
adb shell getprop ro.product.cpu.abilist
# e.g. arm64-v8a,armeabi-v7a,armeabiCompatibility matrix
Why not one universal package?
Universal APKs do exist — they bundle native libraries for every architecture. The cost is size: typically two to three times a single-architecture build.
For an app that updates frequently, splitting by architecture makes every download much smaller. Hence the convention of separate files.
Emulators and unusual devices
- Android emulators on PC are mostly x86_64. Installing an arm64 APK requires ARM translation support, with a noticeable performance cost. Prefer an x86_64 build where one exists.
- ChromeOS: newer Chromebooks are mostly x86_64, some are ARM — check per model.
- TV boxes and car head units: nearly all arm64-v8a; a few older ones are armeabi-v7a.
- HarmonyOS devices: the compatibility layer accepts arm64-v8a Android apps.