As per the title, what hardware do I need to be able to run various versions of 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 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.
- 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.
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
From Android 8.0 "Oreo" onwards, this flag must be set for handhelds that have 1GB RAM or less.