Many of us are sad that the Nexus 5 isn't getting any official update to Android 7.0. Especially when we watched and saw Google continue to build device trees in the code for Hammerhead — that means someone, somewhere, was working on it. And when Sony announced which phones were going to receive an update to Android 7.0, many noticed that the Xperia Z3 wasn't on the list. While the idea that phones from 2014 not getting updated late in 2016 isn't particularly surprising, the fact that the Z3 was part of Sony's Android Concept Initiative — a fancy name for an Android 7.0 Beta program — but didn't make the cut and that Google was working on Nougat for the Nexus 5 then just suddenly stopped was.
The situation has the internet asking the obvious question — why? The answer is that the Z3 and Nexus 5 actually can't officially run Android 7.0, even though could as a beta. Read on. It will all make sense.
Android platform updates aren't as important to consumers as we make them out to be. Here at Android Central we get excited about anything new and shiny, we tell you as soon as we can (often after you already know because leaks happen) and then we all get excited together. The reality is that Google Play Services and monthly patches will let you do everything you do on your phone for a long time, and by the time a must-have app comes out that requires the next version of Android you'll probably have a new phone or the update.
We can still want it, but this is just how things go until
someone Google steps forward and changes it. Then you'll hear talk about Google's iron fist and EU complaints and God knows what else. The status quo sucks, but it still is the status quo.
Android 7.0 has no official support for the Snapdragon 800.
For the Android 7.0 update, in particular, we need to look no further than the requirements and the hardware of the Xperia Z3 or Nexus 5 (and plenty of other phones) for a likely answer about why certain phones aren't able to be updated. We can't confirm this using official statements or documents or a fancy slide, but we're sure enough to talk about it and why it worked out the way it did.
Android 7.0 in AOSP has removed support for the MSM8974 chipset. The Snapdragon 800 SoC uses this chip along with the Adreno 330 GPU. This means phones (and tablets — hello, Nexus 7) using the Snapdragon 800 are not supported. But this doesn't explain why the Z3 was able to run the beta, and run it well. For that, Google Play compatibility comes into the picture.
Nobody from any of the companies involved is talking about these issues, and requests for an official statement haven't been returned, but the internet has some clues about it all. Here we see Ola Olsson, of Sony Mobile Communications, talk a bit about it in a comment on Google+.
Yeah, this is sad but we don't want to play the blame game which means that we can't say more about the technical limitations. Even if we really wanted to give you N on the z3(c), we wouldn't [have] been able to do it. Not if we wanted to pass the Google CTS.
You'll find similar responses elsewhere, and this is Sony not throwing anyone under the bus and handling things in a professional, corporate way. The important thing there is the mention of Google CTS.
Google CTS is the Compatibility Testing Suite used to make sure a device can be certified to use Google Play. Android is a free application platform that anyone can take and use in any way it likes, but Google Play is not. It's a true for-profit commercial venture and Google has full and complete control over everything associated with it.
The actual rules and requirements needed for Android 7.0 CTS compliance are a bit of a mystery — either partners can't talk about it or don't want to talk about it — but we know the gist of it. Your product has to be able to run any app targeted for your platform version. That means if you're using Android 7.0, you need to support any app designed for Android Nougat. You can check out the Android 6.0.1 CTS documentation if you're curious. The Android 7.0 CTS documentation should live in the same place once it's been updated.
During the beta testing for Android N — just after the release of version four — developers were told that Android N APIs were finalized and they could start targeting apps for them in Google Play. One of the things Android N does for developers is let them use the Vulkan and OpenGL ES 3.1 APIs with both the SDK and the NDK. For that, though, you need hardware support. The Snapdragon 800 does not offer hardware support for either, and apps not designed to fall back to an older version of OpenGL would not run.
Now, as mentioned, we don't have access to the latest Android CTS documents. For Android 6.0.1, it said that hardware had to support OpenGL ES 1.0, 2.0 and 3.0 or 3.1. I've been told that was amended to say "support OpenGL ES 1.0, 2.0, 3.0 and either 3.1 or Vulkan," but Google has said nothing officially. But this certainly explains why support for the Snapdragon 800 was removed and phones like the Nexus 5 and the Z3 aren't going to see an official update, and I'm confident that this is the reason.
Android is open, but Google Play is not; there are rules involved.
This is a long, convoluted and confusing subject — much like Android updates in general. In the end, we know two things: the Sony Xperia Z3 will not be updated to Android 7.0 because it would not pass the CTS for technical reasons, and the Snapdragon 800 SoC does not offer OpenGL ES 3.1 support. The fact that no phone using the Snapdragon 800 or 801 (the 801 also uses the Adreno 330 GPU) has been announced as getting an update is a bit telling, too.
Let's be honest — this sucks. As enthusiasts, we want to get an update even if it doesn't change anything. The practical view that platform updates aren't as important as we make them out to be is fine, and I do think it's true, but that doesn't satisfy the inner geek. But it's also inevitable. Android has to advance and support new (and better) technologies like Vulkan. When these require hardware support, there has to be a cutoff. Maybe this time, the cutoff could have been avoided — the General Mobile 4G, an Android One device that uses the Snapdragon 410 and is in every way weaker on the hardware front than any phone running the Snapdragon 800 — already has Android Nougat and this throws a huge wrench into even the most plausible theory.
Is Google breaking its own rules here in regard to the CTS? Or is everything we have heard and think we know all bullshit and it really is some sinister plot to make us angry? (I'm fairly certain Google is breaking its own rules because it can, but I'm just as certain that everything is bullshit, so I still have no idea.)
The bottom line is that if you have a phone like the Xperia Z3, or the Nexus 5 or the Galaxy S5 and really want Android 7.0 Nougat, you'll probably have to get it from the fine group building custom software for the phones on XDA.