Why Isn’t Android P (Pie) Available for My Phone
The conversation usually starts something like this:
“Hey … You’re that guy that used to work at the computer store. Can you tell me why my phone doesn’t have the newest version of Android yet?”
Usually by this time I am trying to fake an emergency because it would take forever to explain because it is a complex topic that involves a stupefying array of programming, engineering, the corporate nonsense.
So, this article will attempt to discuss, in the simplest way possible, why Android is released on devices at different times.
The Hardware Abstraction Layer
If you are an Android mobile phone user, you are probably thinking that all Android phones are Android phones. I hear this all the time “Sure there are some minor differences to the cameras, and such but the core of an Android device is Android … right.” Well not quite. It’s those differences that make each Android phone very different. In fact, the radio, modem, storage type, the SD card reader, camera, GPS controller, and in some cases the display and special features all play a role in making a (for example) Samsung Galaxy S8 different from a Sony Xperia XZ1.
Picture from The Android Open Source Project.
In the Android OS there is a layered structure to how what you do in apps interacts with the hardware. There are two major layers that apply directly to your phone’s hardware. If you look at the image above you will see that the bottom most layer is the Linux kernel, that is the specific piece of the software that interacts with the microprocessor (or SOC – System on a Chip) in your phone, whether your phone uses a Qualcom Snapdragon, a Mediatek, or a Huawei HiSilicon Kirin the Linux Kernel is the layer of the OS that interacts directly with the processor executing commands. Usually the Kernel is modified and rewritten to work efficiently with the SOC. That work is usually handled by the developer of the SOC, and only has some minor modifications made by a phone’s manufacturer.
The next layer above the kernel is the is the HAL (Hardware Extraction Layer). This layer of the OS connects the hardware devices of your phone to the kernel and the upper layers that run the applications and the UI on an Android phone. When you tap on the camera app this layer connects the camera to the camera app, when you open Google Maps it connects the app to your phone’s GPS. This is actually the layer that requires the most work because each model of android phone is different. This is the biggest, most complex bottleneck to device specific releases of Android.
This isn’t so much a problem for Android one phones where for the most part they follow a similar design and use standardized Qualcom components making the Hardware Abstraction layer more standardized. The problem occurs with mid-range and high end phones where there are more features and capabilities. For instance Samsung’s Galaxy S9 phones use Samsung’s Category 18 LTE modem. That requires custom software added to the Hardware Abstraction Layer to make it work. The same is true for the thermal cameras on a CAT phone, and the high frequency display on the Razer Phone. In fact phones like the Samsung Galaxy Note series have specialized hardware and require custom software to make the Wacom EMR digitizer to work. Another example is the camera found on Sony Xperia XZ series that use their Exemor, and Bionz image processors require custom software as well.
With development constantly focused on new phones older phones tend to get side tracked in the development of Android updates. That’s why it can take up to a year for a major update to be released for a phone. Luckily Google is working at making the update process simpler to alleviate some of the workload from HAL development, and simplify the development of the Android OS.