Google planlegger å bytte til en "oppstrøms første" utviklingsmodell for Linux-kjernefunksjoner i Android fra og med 2023. Les videre for å lære mer.
Når du ser ordene "Android" og "fragmentering" i samme setning, hopper du sannsynligvis umiddelbart til Android-versjonsdistribusjonsdiagram. Det er noen få enheter som de fleste peker fingrene på når de klager over at Android OS-oppdateringer er trege med å rulle ut over hele linja, men det er bare så mye Google kan gjøre for å makt OEM-er for å utvikle og rulle ut oppdateringer raskere. Det Google derimot kan gjøre er å redusere utviklingstiden og dermed kostnadene ved å rulle ut oppdateringer.
Det første store initiativet i Googles langsiktige prosjekt for å redusere utviklingsbyrder er Prosjekt diskant. Project Treble ble kunngjort sammen med Android 8.0 Oreo i 2017, og modulariserte Android ved å skille OS-rammeverket fra leverandørimplementeringen (HAL-er og den enhetsspesifikke Linux-kjernegaffelen). Dette gjorde det lettere for Android OEM-er å rebase OS-ene sine på toppen av det nyeste AOSP-rammeverket, da de kunne starte opp den nyeste versjonen uten å trenge oppdatert kode fra leverandører. Som et resultat kunne OEM-er klargjøre sine tilpassede Android-gafler raskere enn før, og i forlengelsen rulle ut store OS-oppdateringer raskere.
Det neste trinnet i Googles planer var å strømlinjeforme leveringen av oppdateringer til viktige Android-komponenter. Google kalte dette initiativet Prosjekt hovedlinje da den introduserte den sammen med Android 10 i 2019. Google tok i hovedsak kontroll over viktige OS-komponenter og forbyr OEM-er å endre dem. De satte deretter opp en leveringsmekanisme via Google Play slik at de kunne eksternt rulle ut oppdateringer til disse nøkkelkomponentene uten å måtte vente på at OEM-er skal bruke oppdateringene selv. Mainline forbedret kraftig hvor raskt enheter mottar oppdaterte versjoner av viktige OS-komponenter, og forbedret i sin tur sikkerheten til Android-økosystemet som helhet.
Men det som kommer etterpå er enda viktigere, og er uten tvil den viktigste delen av Googles langsiktige strategi. Da vi tidligere påpekte hvordan Treble modulariserte Android ved å skille OS-rammeverket fra leverandørimplementering inkluderte vi den "enhetsspesifikke Linux-kjernegaffelen" som en del av den leverandøren kode. Alle som er kjent med Linux på stasjonære datamaskiner vil kjenne igjen et problem der: Hvorfor er det klumpet inn med leverandørkode med lukket kilde? Problemet er at mens Android-enheter leveres med Linux-kjernen, har denne kjernen en mye av kode utenfor treet.
Hvordan kom vi dit? Problemet, som skissert av Googles programvareingeniør Todd Kjos på årets Linux Rørleggerkonferanse (via ArsTechnica), er fordi hovedlinje-Linux-kjernen er klaffet flere ganger før den sendes på en Android-enhet. Google gafler hver hovedlinje Linux-kjerner til en "Android Common Kernel"-gren, som følger hovedlinjeutgivelsen nøye, men legger til noen Android-spesifikke patcher. SoC-leverandører som Qualcomm, MediaTek og Samsung gaffel at kjerne for hver SoC de lager. OEM-er tar deretter den SoC-spesifikke kjernen og legger til flere patcher for å implementere støtte for den spesifikke maskinvaren de vil sende.
På grunn av disse endringene, "så mye som 50 % av koden som kjører på en enhet er kode utenfor treet (ikke fra oppstrøms Linux eller AOSP vanlige kjerner)", ifølge Google. Den store mengden kode utenfor treet på disse enhetene gjør sammenslåing av oppstrømsendringer til en lang og utfordrende prosess. Dette er skadelig for enhetssikkerhet, ettersom OEM-er må jobbe hardere for å implementere oppdateringer til sårbarheter som oppdages i Linux-kjernen. Videre etterlater dette de fleste Android-enheter på år gamle kjerneutgivelser, noe som betyr at de går glipp av nye Linux-kjernefunksjoner.
I et forsøk på å løse dette problemet, jobber Google med Android Generic Kernel Image (GKI), som egentlig er en kjerne kompilert rett fra en ACK-gren. GKI isolerer SoC-leverandør og OEM-tilpasninger til plugin-moduler, eliminerer kode utenfor treet og lar Google sende kjerneoppdateringer direkte til sluttbrukeren. I over et år har Google jobbet med en måte å levere GKI-oppdateringer via Play Store, ved bruk av en hovedlinjemodul.
Ifølge våre kilder, enheter som starter med Android 12 og leveres med Linux-kjerne 5.10 må distribuere et Google-signert oppstartsbilde. Googles helt egen Pixel 6 serien vil lanseres med Android 12 ut av esken og leveres med Linux-kjerne 5.10, så de to telefonene kan være de første massemarkedsenhetene som leveres med en GKI.
I tillegg avslørte Googles Todd Kjos at selskapet planlegger å gå over til en "oppstrøms først" utviklingsmodell for nye Linux-kjernefunksjoner. Dette vil hjelpe Google med å sikre at ny kode lander først i hovedlinje Linux-kjernen, noe som vil redusere fremtidig teknisk gjeld som påløper fra mer kodelanding utenfor treet på Android-enheter.
På Linux Rørleggerkonferansen denne uken sa Kjos, "Siden ut-av-tre-moduler er veldig viktige for vår brukssituasjon, forventer vi at vi alltid vil ha et sett med eksport og noen ting som er annerledes eller i tillegg til det som er oppstrøms, men hele dette prosjektet er et flerårig prosjekt som jobber for å bli kvitt så mange ut-av-tre-flekker som mulig, og tilpasse så mye som mulig med oppstrøms." Google har som mål å fullføre arbeidet med å oppstrømme eksisterende funksjoner og isolere leverandørendringer innen utgangen av 2022 og fra og med 2023 planlegger selskapet å ta i bruk denne "oppstrøms først" utviklingsmodellen for å unngå slike problemer i framtid.