Google planerar att byta till en "uppströms första" utvecklingsmodell för Linux-kärnfunktioner i Android med start 2023. Läs vidare för att lära dig mer.
När du ser orden "Android" och "fragmentering" i samma mening, hoppar du förmodligen omedelbart till Distributionsdiagram för Android-versionen. Det finns några enheter som de flesta pekar med sina fingrar på när de klagar på att Android OS-uppdateringar är långsamma att rulla ut över hela linjen, men det finns bara så mycket Google kan göra för att tvinga OEM att utveckla och rulla ut uppdateringar snabbare. Vad Google däremot kan göra är att minska utvecklingstiden och därmed kostnaden för att rulla ut uppdateringar.
Det första stora initiativet i Googles långsiktiga projekt för att minska utvecklingsbördan är Projekt Treble. Project Treble lanserades tillsammans med Android 8.0 Oreo 2017 och modulariserade Android genom att separera OS-ramverket från leverantörens implementering (HALs och den enhetsspecifika Linux-kärngaffeln). Detta gjorde det enklare för Android OEMs att bygga om sina operativsystem ovanpå det senaste AOSP-ramverket eftersom de kunde starta upp den senaste versionen utan att behöva uppdaterad kod från leverantörer. Som ett resultat kunde OEM-tillverkare förbereda sina anpassade Android-gafflar snabbare än tidigare, och i förlängningen rulla ut stora OS-uppdateringar snabbare.
Nästa steg i Googles planer var att effektivisera leveransen av uppdateringar till viktiga Android-komponenter. Google kallade detta initiativ Projekt huvudlinje när den introducerade den tillsammans med Android 10 2019. Google tog i huvudsak kontroll över viktiga OS-komponenter och förbjuder OEM-tillverkare att modifiera dem. De satte sedan upp en leveransmekanism via Google Play så att de kunde rulla ut uppdateringar av dessa nyckelkomponenter på distans utan att behöva vänta på att OEM-tillverkare själva ska applicera korrigeringarna. Mainline förbättrade avsevärt hur snabbt enheter tar emot uppdaterade versioner av viktiga OS-komponenter, vilket i sin tur förbättrar säkerheten för Android-ekosystemet som helhet.
Men vad som kommer härnäst är ännu viktigare, och är utan tvekan den viktigaste delen av Googles långsiktiga strategi. När vi tidigare påpekade hur Treble modulariserade Android genom att separera OS-ramverket från leverantörsimplementering inkluderade vi den "enhetsspecifika Linux-kärngaffeln" som en del av den leverantören koda. Alla som är bekanta med Linux på stationära datorer kommer att känna igen ett problem där: Varför är det klumpat ihop med leverantörskod med sluten källkod? Problemet är att medan Android-enheter levereras med Linux-kärnan, har den kärnan en massa av out-of-tree-kod.
Hur kom vi dit? Problemet, som beskrivs av Googles mjukvaruingenjör Todd Kjos på årets Linux Plumbers Conference (via ArsTechnica), beror på att mainline Linux-kärnan är kluven flera gånger innan den skickas på en Android-enhet. Google klaffar varje huvudlinje Linux-kärna till en "Android Common Kernel"-gren, som noggrant följer huvudversionen men lägger till några Android-specifika patchar. SoC-leverantörer som Qualcomm, MediaTek och Samsung gaffel den där kärna för varje SoC de gör. OEM: er tar sedan den SoC-specifika kärnan och lägger till ytterligare patchar för att implementera stöd för den specifika hårdvara de vill skicka.
På grund av dessa förändringar, "så mycket som 50 % av koden som körs på en enhet är out-of-tree-kod (inte från uppströms Linux eller AOSP vanliga kärnor)", enligt Google. Den stora mängden out-of-tree-kod på dessa enheter gör sammanslagning av uppströmsändringar till en lång och utmanande process. Detta är skadligt för enhetssäkerheten, eftersom OEM-tillverkare måste arbeta hårdare för att implementera patchar till sårbarheter som upptäcks i Linux-kärnan. Dessutom lämnar detta de flesta Android-enheter kvar på år gamla kärnutgåvor, vilket innebär att de går miste om nya Linux-kärnfunktioner.
I ett försök att lösa detta problem arbetar Google på Android Generic Kernel Image (GKI), som i huvudsak är en kärna som kompileras direkt från en ACK-gren. GKI isolerar SoC-leverantörer och OEM-anpassningar till plugin-moduler, eliminerar out-of-tree-kod och tillåter Google att skicka kärnuppdateringar direkt till slutanvändaren. I över ett år har Google arbetat på ett sätt att leverera GKI-uppdateringar via Play Store, genom att använda en Mainline-modul.
Enligt våra källor, enheter som startar med Android 12 och levereras med Linux-kärna 5.10 måste distribuera en Google-signerad startavbildning. Googles alldeles egna Pixel 6 serien kommer att lanseras med Android 12 ur kartongen och levereras med Linux-kärnan 5.10, så de två telefonerna kan vara de första massmarknadsenheterna som levereras med en GKI.
Dessutom avslöjade Googles Todd Kjos att företaget planerar att gå över till en "upstream first"-utvecklingsmodell för nya Linux-kärnfunktioner. Detta kommer att hjälpa Google att se till att ny kod landar först i Linux-kärnan, vilket kommer att minska framtida tekniska skulder som uppstår genom att mer kod landar utanför trädet på Android-enheter.
På Linux Plumbers Conference denna vecka sa Kjos, "Eftersom moduler utanför trädet är väldigt viktiga för vårt användningsfall, förväntar vi oss att vi alltid kommer att ha en uppsättning exporter och vissa saker som är annorlunda eller utöver vad som är uppströms, men hela det här projektet är ett flerårigt projekt som arbetar för att bli av med så många out-of-tree patches som vi kan, och anpassa så mycket som möjligt med uppströms." Google siktar på att slutföra sitt arbete med att uppströmma befintliga funktioner och isolera leverantörsbyten i slutet av 2022 och från och med 2023 planerar företaget att anta denna "uppströms första" utvecklingsmodell för att undvika sådana problem i framtida.