Många av oss är ledsna över att Nexus 5 inte får någon officiell uppdatering till Android 7.0. Särskilt när vi såg och såg Google fortsätta att bygga enhetsträd i koden för Hammerhead - det betyder att någon, någonstans, arbetade med det. Och när Sony meddelade vilka telefoner som skulle få en uppdatering till Android 7.0, så märkte många att Xperia Z3 inte var med på listan. Även om idén om att telefoner från 2014 inte uppdateras sent i 2016 inte är särskilt överraskande, var det faktum att Z3 var en del av Sonys Android Concept Initiative - ett fint namn för ett Android 7.0 Beta-program - men gjorde inte nedskärningen och att Google arbetade på Nougat för Nexus 5 och då bara plötsligt slutade var.
Situationen har att internet ställer den uppenbara frågan - varför? Svaret är att Z3 och Nexus 5 faktiskt inte officiellt kan köra Android 7.0, även om det kan vara en beta. Läs vidare. Det kommer alla att vara vettigt.
Android-plattformsuppdateringar är inte lika viktiga för konsumenterna som vi gör dem till. Här på Android Central blir vi glada över allt nytt och glänsande, vi berättar så snart vi kan (ofta efter att du redan vet för att läckor inträffar) och sedan blir vi alla glada tillsammans. Verkligheten är att Google Play Services och månatliga patchar låter dig göra allt du gör på din telefon under lång tid, och när en must-have-app kommer ut som kräver nästa version av Android kommer du förmodligen att ha en ny telefon eller uppdateringen.
Vi kan fortfarande vilja det, men det är just så saker går tills någon Google går framåt och ändrar det. Då hör du prata om Googles järnhand och EU-klagomål och Gud vet vad mer. Status quo suger, men det är fortfarande status quo.
Android 7.0 har inget officiellt stöd för Snapdragon 800.
Speciellt för Android-uppdateringen behöver vi inte leta längre än kraven och hårdvaran för Xperia Z3 eller Nexus 5 (och många andra telefoner) för ett troligt svar på varför vissa telefoner inte kan uppdateras. Vi kan inte bekräfta detta med officiella uttalanden eller dokument eller en fin bild, men vi är säkra nog för att prata om det och varför det fungerade som det gjorde.
Android 7.0 i AOSP har tagit bort stöd för MSM8974-chipset. Snapdragon 800 SoC använder detta chip tillsammans med Adreno 330 GPU. Detta betyder att telefoner (och surfplattor - hej, Nexus 7) som använder Snapdragon 800 inte stöds. Men detta förklarar inte varför Z3 lyckades köra betaen och köra den bra. För det kommer Google Play-kompatibilitet in i bilden.
Ingen från något av de berörda företagen talar om dessa frågor och begäran om ett officiellt uttalande har inte returnerats, men internet har några ledtrådar om allt. Här ser vi Ola Olsson, från Sony Mobile Communications, prata lite om det i en kommentar på Google+.
Ja, det här är tråkigt men vi vill inte spela skyllespelet vilket innebär att vi inte kan säga mer om de tekniska begränsningarna. Även om vi verkligen ville ge dig N på z3 (c), skulle vi inte kunna göra det. Inte om vi ville passera Google CTS.
Du hittar liknande svar någon annanstans, och det här är att Sony inte kastar någon under bussen och hanterar saker på ett professionellt och företags sätt. Det viktiga där är nämnandet av Google CTS.
Google CTS är Compatibility Testing Suite som används för att se till att en enhet kan certifieras för att använda Google Play. Android är en gratis applikationsplattform som vem som helst kan ta och använda på något sätt den vill, men Google Play är det inte. Det är ett verkligt kommersiellt företag med vinst och Google har full och fullständig kontroll över allt som är kopplat till det.
De faktiska reglerna och kraven som krävs för Android 7.0 CTS-efterlevnad är lite av ett mysterium - antingen partner kan inte prata om det eller inte vill prata om det - men vi vet hur viktigt det är. Din produkt måste kunna köra alla appar som är inriktade på din plattformsversion. Det betyder att om du använder Android 7.0 måste du stödja alla appar som är designade för Android Nougat. Du kan kolla dokumentationen för Android 6.0.1 CTS om du är nyfiken. Dokumentationen för Android 7.0 CTS bör leva på samma plats när den har uppdaterats.
Under betatestningen för Android N - strax efter lanseringen av version fyra - fick utvecklarna höra att Android N API: er var slutförda och de kunde börja rikta in sig på appar för dem i Google Play. En av de saker Android N gör för utvecklare är att låta dem använda Vulkan och OpenGL ES 3.1 API: er med både SDK och NDK. För det behöver du dock hårdvarusupport. Snapdragon 800 erbjuder inte hårdvarustöd för någon av dem, och appar som inte är utformade för att falla tillbaka till en äldre version av OpenGL skulle inte köras.
Nu har vi, som nämnts, inte tillgång till de senaste Android CTS-dokumenten. För Android 6.0.1 sa det att hårdvara måste stödja OpenGL ES 1.0, 2.0 och 3.0 eller 3.1. Jag har fått höra att det ändrades för att säga "stödja OpenGL ES 1.0, 2.0, 3.0 och antingen 3.1 eller Vulkan, " men Google har inte sagt något officiellt. Men detta förklarar verkligen varför stöd för Snapdragon 800 togs bort och telefoner som Nexus 5 och Z3 inte kommer att se en officiell uppdatering, och jag är övertygad om att det är detta.
Android är öppet, men Google Play är det inte; det finns regler inblandade.
Det här är ett långt, invecklat och förvirrande ämne - ungefär som Android-uppdateringar i allmänhet. Till slut vet vi två saker: Sony Xperia Z3 kommer inte att uppdateras till Android 7.0 eftersom den inte skulle klara CTS av tekniska skäl, och Snapdragon 800 SoC erbjuder inte OpenGL ES 3.1-stöd. Det faktum att ingen telefon som använder Snapdragon 800 eller 801 (801 använder också Adreno 330 GPU) har meddelats att få en uppdatering är också lite berättande.
Låt oss vara ärliga - det här suger. Som entusiaster vill vi få en uppdatering även om det inte ändrar någonting. Den praktiska uppfattningen att plattformsuppdateringar inte är lika viktiga som vi ser ut till är bra, och jag tror att det är sant, men det tillfredsställer inte den inre nörd. Men det är också oundvikligt. Android måste utveckla och stödja nya (och bättre) teknologier som Vulkan. När dessa kräver hårdvarosupport måste det göras ett avbrott. Kanske kunde den här gången undvikas - General Mobile 4G, en Android One-enhet som använder Snapdragon 410 och är på alla sätt svagare på hårdvarufronten än någon telefon som kör Snapdragon 800 - har redan Android Nougat och detta kastar en enorm skiftnyckel till och med den mest troliga teorin.
Bryter Google sina egna regler här när det gäller CTS? Eller är allt vi har hört och tror att vi vet allt skitsnack och det är verkligen en olycklig komplott att göra oss arg? (Jag är ganska säker på att Google bryter sina egna regler för det kan, men jag är lika säker på att allt är skitsnack, så jag har fortfarande ingen aning.)
Sammanfattningen är att om du har en telefon som Xperia Z3, eller Nexus 5 eller Galaxy S5 och verkligen vill ha Android 7.0 Nougat, måste du förmodligen hämta det från den fina gruppbyggnadsanpassade programvaran för telefonerna på XDA.