What are the minimum hardware specifications for Android?
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 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.
- 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.
@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.
@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?
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...