One of Android’s greatest strengths, and source of occasional frustrations, is its wide variety of software variations. Samsung, Huawei, Sony, and even Google offer their own take on the core Android experience, introducing their own unique features and ideas to improve on the basic software below. This is all made possible thanks to a common base operating system (OS), providing core functionality. All of the Android OS variants that you know and love are based on AOSP – the Android Open Source Project.
The AOSP is an open-source operating system development project maintained by Google. Being open-source, anyone is free to review and contribute code and fixes to the project repository. Although Google oversees its general direction and the bulk of development. The AOSP regularly incorporates the latest bug and security patches for Android. Google also unveils major new features of the OS each year at its I/O developer conference. Android 11 being the latest edition with Android 12 heading our way later in 2021.
As well as being open to contributions, the Android Open Source Project is free to use and alter under an open-source license. Manufacturers like Amazon and Samsung are free to tweak the project for their own purposes and have developed their own spin-offs, including the multi-purpose Fire OS and Tizen. This has turned out to be an important factor in Huawei’s continued development of EMUI and Harmony OS following US trade-sanctions and lost access to Google apps.
It’s also important to note that most phone manufacturers obtain versions of AOSP from a chipset vendor, such as Qualcomm. This is because Android has to be tailored to the low-level hardware via drivers, which we’ll get to later on. This has historically been the cause of delayed Android updates. Ultimately, Google is happy with this arrangement, as it encourages developers to use Android for a wide range of internet-connected gadgets. In return, an array of companies each contribute fixes and improvements to the OS. It’s a win-win.
Inside the Android Open Source Project
As I’m sure you can imagine, operating systems are complex beasts. Android is no different. AOSP covers a range of software layers within the operating system, providing access points and tools for hardware and app developers alike.
The “lower-level” layers are where device manufacturers code the OS to work with their specific hardware. The Linux Kernel, for example, is the core program that manages the CPU resources, system memory, networking, etc, so that apps and services can run. The Hardware Abstraction Layer (HAL) layer links common app APIs for Bluetooth, sound, etc, with the device’s microphone, speakers, and more.
“Higher-level” layers are used by app developers. Native Libraries enable developers to build content with commonly supported low-level libraries like OpenGL ES, Webkit, and more. Above that, Android Frameworks provides app developers with hook-ins for common OS functions that we all use every day. These range from location data, pushing notifications, and making phone calls. The Android Runtime is the middle man, converting app code into native instructions for the underlying hardware.
Combined all together, the Android Open Source Project stack (pictured above) is a complete solution for Android hardware and software developers.
The AOSP isn’t just an ever-growing codebase though. Google also provides design and development tools as part of the project, ranging from compatibility documentation to best security practices and app design principles. Google also hosts a selection of test suites to help developers ensure their devices implement APIs and features correctly.
AOSP vs Android
The Android Open Source Project is often confused with “stock Android” but that’s an oversimplification.
The AOSP contains everything developers need to build Android but it doesn’t include everything you need for a finished smartphone. First, Google and the AOSP can’t provide kernel device drivers for every hardware configuration out there. By device driver, we mean the firmware required for a phone’s hardware, such as the processor or cameras. Phone and SoC manufacturers, such as Qualcomm and Samsung, have to incorporate these drivers into their Android build. This is partly why updates take time to trickle down from AOSP to actual devices.
AOSP also doesn’t come with Google’s suite of software applications, such as its Chrome browser, YouTube, and even the Google Play Store. It also doesn’t include a number of Google’s under the hood technologies and APIs that enable features like mobile payments, voice commands, and cloud storage. These are licensed separately as Google Mobile Services (GMS).
When Huawei lost access to US technologies, it could no longer license GMS but could keep using AOSP. As such, Huawei began replacing GMS features with its in-house Huawei Mobile Service (HMS). However, this means that apps that rely on GMS have to be rebuilt using HMS to work correctly. Hence Huawei’s problem with Android apps.
Any manufacturer that wants to install GMS on top of Android has to obtain a GMS license and a Mobile Application Distribution Agreement (MADA) for their device and then pass several compatibility tests. There’s the Android Compatibility Test Suite (CTS) to validate software and hardware components and APIs. Then the Google Mobile Services Test Suite (GTS) and Vendor Test Suite (VTS) to test multimedia capabilities, OS kernel, and HAL capabilities. Another condition for obtaining a GMS license is to pre-load a number of Google’s apps on a new device.
The difference between AOSP and GMS has become a very important distinction following the US-China trade dispute.
The future of AOSP
The Android Open Source Project continues to be the foundation of Android’s success, thanks to countless hours of developer input from around the world. While Android devices aren’t going anywhere soon, Google is already looking to a future operating system.
Google Fuchsia first popped up on GitHub in August 2016 but we’ve heard little about it since. We still don’t know too much about Fuchsia and if or when it will appear for consumers. It appears to be designed for an even wider range of devices than Android. Fuchsia also features Google’s own non-Linux kernel called Zircon and supports Google’s Dart scripting language. At the moment, Fuchsia is open source and free software just like Android. Let’s hope any future plans stay that way. Interested developers can download and build the OS from the Fushsia website.