The shelf life of phones is embarrassingly low. For no apparent reason.
The shelf life of phones is embarrassingly low. For no apparent reason.
So, Google did an in-house bringup for 7.0 - and "normal" OEMs aren't able to do that. Qualcomm usually provides a lot of pre-compiled binaries to the OEM, which either require nasty hacks to work on newer versions of Android (which won't pass CTS - so can't be shipped), or just straight up don't work. The blame here rests largely with chip manufacturers and their short support cycles.
Of course, LineageOS[1] remains an option if you're looking for extended support for the Nexus 6. (disclaimer, I'm a device maintainer for Lineage)
What's the difference in how they operate with suppliers?
I don't understand the problems with backward compatibility. They already provide it via the Android SDK (the support library).
Java/Dex/Dalvik/ART or whatever it's called now that runs the shit works on Linux 3.0 probably. (Android 2.3 was released with Linux 2.6.35 [+ patches, I assume && hope], and that's currently the lowest supported API Level (that is api level 9)).
Google should put some resources into kernel development for a year or so.Get the changes they want into Linux 5.0 and make it the android long-term-release kernel. Then no further changes to the kernel unless its 0.0.1 security patches.
Probably the only instance that I'm aware of where an OEM has actually mainlined support for their own mobile devices is Samsung with some of their Tizen reference devices - "trats"[2], "trats2"[3] (which is pretty much identical to the Galaxy S3), "tm2" and "tm2e"[4]. Of course, these will probably never gain support for certain things like 3D acceleration and the modem in mainline, but it's certainly a good start. (Note: a few Nexus devices seem to have mainline DTS[5], but I'm not sure how complete they are).
[1]: https://android.googlesource.com/kernel/common/ [2]: https://github.com/torvalds/linux/blob/master/arch/arm/boot/... [3]: https://github.com/torvalds/linux/blob/master/arch/arm/boot/... [4]: https://github.com/torvalds/linux/tree/master/arch/arm64/boo... [5]: https://github.com/torvalds/linux/tree/master/arch/arm64/boo...
It doesn't have to be a mainstream kernel. The only important part is that it is a fixed kernel version so drivers and such does not need to be re-written with each new android release.
This is how it is done already. Google picks a kernel release (historically 3.0, 3.4, 3.10, 3.18, 4.4 etc.) and ports Android patches to that kernel while developing new features as well. Then SoC vendors do their bringups using that kernel tree.
A device is released with a specific kernel version and it doesn't get upgraded in devices lifetime even if the same device gets several Android upgrades. Native Nougat devices released in 2017 have kernel 4.4 which was released in early 2016, which is not even considered a new kernel by the upstream standards.
What do you expect the benefit everyone gains from sticking to the same kernel for 5 years? What is the point of developing a SoC in 2017 and bringing it up using Linux 2.6.32 instead of Linux 4.4? What is the benefit for Quallcomm, for Google or for users?
Google is generally pretty good about keeping source compatibility, but ABIs change, and sometimes completely unrelated changes break everything for no obvious reason. Some things I've encountered include:
* sensor blobs crashing when using a clang-built libc, but working with a gcc-built one.
* blobs crashing when using jemalloc, but not dlmalloc (dlmalloc was removed with 7.0).
* Vendors introducing hacks in the OS - workarounds to deal with broken HW media encoders (which misinterpret pixel formats), misbehaving GL blobs, or devices which expect one pixel format for their display when the system provides another (e.g. RGB vs BGR).
* closed-source OpenGL drivers which use-after-free - the bug's probably existed since forever, but it only manifests after 7.0.
[1]: https://github.com/LineageOS/android_kernel_samsung_smdk4412...
That's why XDA is full of ROMs that "just need to get GPS working and camera sometimes crashes" :(
How come Google doesn't try to source better hardware for their phones? Also, is this the cause of why Apple in-housed a lot of things?
Also, how come there isn't an isolation layer for these blobs, something like docker for the phone? (So they get their runtime dependencies, and communicate with them via a socket-shim?)
Android users should push for longer support. I had an original Nexus 1 and I was quite disappointed when it could no longer be upgraded. It cost me $600.
The situation is pretty complex but the support libs & play services are available on virtually all devices (API 9+ IIRC, but anything older would not be able to run most modern apps).
As an iPhone 5S user, I don't feel like I'm disadvantaged at all from having a phone that is three generations behind.
But I guess that's up to the developer anyhow.
Thanks for your reply. (A few of my friends also use 5s and they also feel it's still pretty okay.)
https://support.google.com/nexus/answer/4457705#nexus_device...
https://9to5google.com/2017/03/15/nexus-6-android-7-1-1-down...
(Not letting google off the hook here. What they're doing isn't great and they should do better. Just saying your statement isn't entirely correct)
I took this shot of my Nexus One next to the new S8 Plus, highlighting 7 years of advance in technology:
No it wasn't, and I didn't even get this phone new but a year into its life. This phone came out in 2014. It got its fair share of updates.