As per the title, what hardware do I need to be able to run various versions of Android?
2 Answers
Start with the Android compatibility page. This outlines goals for Android's compatibility and links to the current Compatibility Definition Document which has the technical requirements. All versions of the CDD to date are below.
- Android 12
- Android 11
- Android 10
- Android 9.0 "Pie"
- Android 8.0 and Android 8.1 "Oreo"
- Android 7.0 and Android 7.1 "Nougat"
- Android 6.0 "Marshmallow"
- Android 5.0 and Android 5.1 "Lollipop"
- Android 4.4 "KitKat"
- Android 4.3, Android 4.2 and Android 4.1 "Jelly Bean"
- Android 4.0 "Ice Cream Sandwich"
- Android 3.0 "Honeycomb" not available (since it was not a public open-source release)
- Android 2.3 "Gingerbread"
- Android 2.2 "Froyo"
- Android 2.1 "Eclair"
- Android 1.6 "Donut"
These are also linked to from the Android Compatibility Downloads page which also includes test suites.
There is no Compatibility Program for older versions of Android, such as Android 1.5 (known in development as Cupcake). New devices intended to be Android compatible must ship with Android 1.6 or later.
Notable points:
- The absolute minimum requirements for Android were originally a 200 MHz processor, 32 MB of RAM, and 32 MB of storage.
- Out of the box, Android is incompatible with ARMv4 or lower; ARMv5 or higher is needed to run native code without modifications.
- Android 4.4+ requires an ARMv7 processor. Custom versions have been made for ARMv6, however.
The requirements in these documents must be met for a device to be "Google Approved" and ship with the official Google apps such as the Play Store and Google Talk. However, they are not necessarily hard requirements. Since Android is open-source it can be modified to run on lesser hardware, and the opposite is possible as well — modifications necessary to run the OS on a device may make the firmware image too large to fit on it, just for example.
-
A few months ago, this was edited to state that only Android 4.4+ requires an ARMv7 processor, while it previously said Android 4+. What's the backstory for this change? Is is the fact that 4.0 by default doesn't support ARMv5, but can be modfified (by switching javascript engines from V8 to JSC, according to groups.google.com/d/msg/android-building/Q_gU1zb6DLc/…) to work on ARMv5, which later was removed (in 4.4)?– mstorsjoJul 10, 2016 at 18:43
-
1@mstorsjo The change was made based on a (since-cleaned-up) comment noting that the 4.0 CDD didn't mention a requirement of v7, but the 4.4 one did. Jul 10, 2016 at 20:14
-
@MatthewRead Thanks. However, at the same time, the note about custom versions supporting ARMv6 changed meaning possibly in an unintentional way: In 4.0-4.3, where ARMv6 wasn't supported by default, but one could modify the source to build for it, there are known ARMv6 builds - but are there actually any such known builds for 4.4+ as well?– mstorsjoJul 10, 2016 at 20:36
-
Sadly, no actual list of the hardware requirements. For example, I can't find a list of minimum x86 cpu instruction sets, like SSE2, SSSE3, SSE4.1, etc. The same problem for arm64 hardware. I can't find which cpu extensions are minimum, like asimd, crc, aes, sha, etc. And Android's build system is so broken we can't determine it using a compile time feature test. Sigh...– jwwApr 29, 2019 at 16:35
Here follows a somewhat simpler answer regarding the RAM memory requirements. According to the above mentioned docs, all versions from "Lollipop" (Android 5.0) up to Android 11 need at least 416 MB memory. This is true if the default display uses "framebuffer resolutions up to qHD (e.g. FWVGA)". Higher resolutions need more memory.
For Android 7.1. "Nougat" and earlier, handhelds with 512MB RAM or less must have ActivityManager#isLowRamDevice
set to true
. [1]
From Android 8.0 "Oreo" onwards, this flag must be set for handhelds that have 1GB RAM or less. [2]