Project Mainline is de grootste verandering in Android sinds Project Treble. Dit is wat het betekent en wat alle modules doen, check it out!
Een van de grootste veranderingen in Android in de afgelopen jaren die onder de radar vlogen, relatief gezien tegen het belang ervan in, was de introductie van Project Hoofdlijn bij Android 10. Google verplicht de opname van specifieke Mainline-modules in Android-releases, met Android 11 komt binnen met een gecombineerd verplicht totaal van 25 Mainline-modules. Hier is een uitleg over wat Project Mainline is en wat het beoogt op te lossen, naast een lijst met alle Project Mainline-modules van Android.
Wat is Project Mainline?
Om Project Mainline goed te begrijpen, zullen we even moeten terugspoelen. Als je een paar jaar teruggaat, ging veel van het gesprek over Android-updates over het fragmentatieprobleem. Fragmentatie was een van de grootste uitdagingen voor Google om op te lossen op Android rond het Ice Cream Sandwich - Lollipop-tijdperk. Hoewel Android als platform regelmatig updates ontving volgens een grotendeels voorspelbaar patroon, duurde het erg lang voordat deze updates de eindgebruikers bereikten, of helemaal niet. Dus terwijl Google kritieke bugs en beveiligingsproblemen op platformniveau aan het oplossen was, liet de daadwerkelijke uitrol van deze wijzigingen veel te wensen over. Er waren/zijn veel tussenpersonen (SoC-leverancier, OEM's, vervoerders, enz.) en veel bewegende onderdelen betrokken bij het leveren van updates aan je telefoon, en het fragmentatieprobleem leek niet vanzelf op te lossen zonder enige harde aanpak interventies.
Een van de belangrijkste inspanningen om dit probleem aan te pakken, kwam in de vorm van Project Treble naast Android 8.0 Oreo, waarbij Android ingrijpend opnieuw werd ontworpen, waarbij de componenten van het Android OS-framework werden gescheiden van de HAL's van de leverancier en de Linux-kernel. Project Treble heeft in wezen Android gemodulariseerd door het OS-framework te scheiden van de apparaatspecifieke software op een lager niveau. Op deze manier hoeven apparaatfabrikanten (OEM's) niet te wachten tot siliciumfabrikanten (SoC-leverancier) hun implementatiecode van de leverancier bijwerken, en kunnen OEM's het Android OS-framework onafhankelijk bijwerken. Het eindresultaat is een snellere acceptatie van nieuwere Android-releases van de OEM, omdat dit niet langer nodig is wacht tot de tussenpersoon (SoC-leverancier) eerst zijn werk afmaakt voordat ze kunnen beginnen van hen.
Hoewel de Android-updatesituatie niet meteen dramatisch verbeterde met Project Treble, maakte het grotendeels een bredere OEM mogelijk deelname aan Android 10- en Android 11-bèta's en het voor OEM's gemakkelijker maken om meer van hun apparaten sneller te updaten tijdlijn. Bovendien heeft het hele concept van de GSI (Generic System Image) een grote invloed gehad op de aftermarket-ontwikkeling op onze forums.
Ontwikkelaar start Android 11 op 22 oudere apparaten met een Project Treble GSI
Project Mainline verlengt de inspanningen van Project Treble. Terwijl Treble verminderde hoe afhankelijk OEM's waren van SoC-leveranciers voor elke afzonderlijke OS-update, vermindert Mainline hoe afhankelijk Google is van OEM's voor het leveren van beveiligingsupdates voor belangrijke OS-componenten. Project Mainline breidt de Treble-filosofie uit naar meer kritieke delen van het Android-framework, waarbij OEM's als afhankelijke tussenpersonen uit deze vergelijking worden verwijderd. Het doel van Project Mainline is dat Google de controle over raamwerkcomponenten en systeemapplicaties die dat wel zijn, ontneemt van cruciaal belang voor beveiliging en het behouden van ontwikkelingsconsistentie, weg van OEM's. Project Mainline wordt met recht genoemd de grootste verandering in Android sinds Project Treble.
Voor Project Mainline maakt Google gebruik van Mainline-modules die worden geleverd via het Google Play Services-framework en de Google Play Store. Elke Mainline-module wordt geleverd als een APK-bestand, een APEX-bestand of als een APK-in-APEX. Wanneer een Mainline-module wordt bijgewerkt, ziet de gebruiker een melding "Google Play System Update" (GPSU) op zijn apparaat. Om updates voor kritieke componenten te leveren, heeft Google in feite de noodzaak omzeild om te wachten tot een OEM een update uitrolt, door ervoor te kiezen de taak zelf uit te voeren.
Als Google stelt op de Android-website:
Dankzij modulaire systeemcomponenten kunnen Google- en Android-partners updates breed, snel en naadloos verspreiden naar apparaten van eindgebruikers op een niet-opdringerige manier. De combinatie van fragmentatie van mediacodecs en kritieke bugs kan bijvoorbeeld de acceptatie van apps en de betrokkenheid van gebruikers drastisch vertragen. Frequente updates van mediagerelateerde modules kunnen codec-fragmentatie verminderen om het gedrag van media-apps consistenter te maken op verschillende Android-apparaten en kritieke bugs op te lossen om het vertrouwen van de gebruiker op te bouwen.
Android 10 of hoger zet geselecteerde systeemcomponenten om in modules, waarvan sommige de APEX-containerindeling gebruiken (geïntroduceerd in Android 10) en andere de APK-indeling. Dankzij de modulaire architectuur kunnen systeemcomponenten worden bijgewerkt met kritieke bugfixes en andere verbeteringen waar nodig, zonder implementaties van lagere leveranciers of apps van hoger niveau te beïnvloeden Diensten.
Als Ars Technica vermeldt:
Project Mainline, ook wel 'Google Play-systeemupdates' genoemd, werd in Android 10 geïntroduceerd als een grote inspanning om kernsysteemcomponenten van Android meer modulair en updatebaar te maken. Mainline heeft een nieuw "APEX"-bestandstype geïntroduceerd, speciaal voor systeemcomponenten, met als doel de kern-Android-code net zo gemakkelijk via de Play Store te verzenden als een app-update. Voorheen was het enige verzendbare codeblok van Android de APK, een bestandstype dat oorspronkelijk is ontworpen voor apps van derden. Dit kwam met allerlei beveiligingsbeperkingen en kon pas laat in het opstartproces opstarten, dus APEX is gemaakt met krachtigere systeemcomponenten in gedachten. APEX's kunnen alleen worden gemaakt door Google of de fabrikant van uw apparaat, dus ze kunnen merkbaar krachtiger zijn en essentiële opstartcomponenten bevatten, zoals de runtime van de app.
Mainline is niet alleen een technische oplossing, het gaat er ook om meer delen van Android centraal te laten distribueren Google, waarbij wordt onderhandeld met apparaatfabrikanten en ervoor wordt gezorgd dat ze allemaal overeenkomen hetzelfde blok te verzenden code. Mainline-modules worden uiteindelijk verplicht om te verzenden, dus Mainline is eigenlijk een grote samenwerking met apparaatfabrikanten om ervoor te zorgen dat een enkele ecosysteembrede module aan ieders behoeften voldoet. Niet elke Mainline-module is een ultrakrachtige APEX-module. Sommige zijn slechts APK's die nu door Google gedistribueerde Android-code zijn.
Project Hoofdlijn — Modules
Met Android 10 heeft Google de opname van 13 specifieke Mainline-modules verplicht gesteld. Met Android 11 is het totale aantal verplichte modules 25. Hier is de volledige lijst, naast enkele belangrijke details:
module naam |
Verpakkingsnaam |
Type |
Apparaat geüpgraded naar of gelanceerd met Android 11 |
Apparaat Gelanceerd met Android 10 |
Apparaat geüpgraded naar Android 10 |
---|---|---|---|---|---|
adbd |
com.google.android.adbd |
TOP |
Moeten |
Niet ondersteund |
Niet ondersteund |
Android Neural Network API-runtime |
com.google.android.neuralnetworks |
TOP |
Moeten |
Niet ondersteund |
Niet ondersteund |
Captive Portal-login |
com.google.android.captiveportallogin |
APK |
Moeten |
Sterk aangeraden |
Optioneel |
Cell-uitzending |
com.google.android.cellbroadcast |
TOP |
Moeten |
Niet ondersteund |
Niet ondersteund |
Concrypt |
com.google.android.conscrypt |
TOP |
Moeten |
Sterk aangeraden |
Optioneel |
DNS-resolver |
com.google.android.resolv |
TOP |
Moeten |
Sterk aangeraden |
Optioneel |
Documenten UI |
com.google.android.documentsui |
APK |
Moeten |
Moeten |
Optioneel |
ExtServices - APK |
com.google.android.ext.services |
APK |
Moeten |
Moeten |
Moeten |
ExtServices - APEX |
com.google.android.extservices |
TOP |
Moeten |
Niet ondersteund |
Niet ondersteund |
IPsec/IKEv2-bibliotheek |
com.google.android.ipsec |
TOP |
Moeten |
Niet ondersteund |
Niet ondersteund |
Media-codecs |
com.google.android.media.swcodec |
TOP |
Moeten |
Moeten |
Optioneel |
Media Framework-componenten |
com.google.android.media |
TOP |
Moeten |
Moeten |
Optioneel |
Media-aanbieder |
com.google.android.mediaprovider |
TOP |
Moeten |
Niet ondersteund |
Niet ondersteund |
Module Metagegevens |
com.google.android.modulemetadata |
APK |
Moeten |
Moeten |
Moeten |
Netwerkstackcomponenten |
com.google.android.networkstack |
APK |
Moeten |
Sterk aangeraden |
Optioneel |
Machtigingsconfiguratie netwerkstack |
com.google.android.networkstack.permissionconfig |
APK |
Moeten |
Sterk aangeraden |
Optioneel |
Toestemmingscontroleur - APK |
com.google.android.permissioncontroller |
APK |
Moeten |
Moeten |
Moeten |
Toestemmingscontroleur - APEX |
com.google.android.toestemming |
TOP |
Moeten |
Niet ondersteund |
Niet ondersteund |
SDK-extensies |
com.google.android.sdkext |
TOP |
Moeten |
Niet ondersteund |
Niet ondersteund |
Statistieken |
com.google.android.os.statsd |
TOP |
Moeten |
Niet ondersteund |
Niet ondersteund |
Telemetry Train-versiepakket |
com.google.mainline.telemetry |
APK |
Moeten |
Niet ondersteund |
Niet ondersteund |
Tethering |
com.google.android.tethering |
TOP |
Moeten |
Niet ondersteund |
Niet ondersteund |
Tijdzonegegevens |
com.google.android.tzdata |
TOP |
Moet niet |
Moeten |
Optioneel |
Tijdzonegegevens 2 |
com.google.android.tzdata2 |
TOP |
Moeten |
Niet ondersteund |
Niet ondersteund |
Wifi³ |
com.google.android.wifi |
TOP |
Moeten |
Niet ondersteund |
Niet ondersteund |
Om enige context te geven aan de bovenstaande kolommen, bevat de kolom met de titel "Apparaat geüpgraded naar of gelanceerd met Android 11" details over of de module aanwezig moet zijn (of niet aanwezig, in het geval van tijdzonegegevens vanwege de opname van het alternatief) op alle apparaten die ofwel zijn geüpgraded naar Android 11, of worden gelanceerd met Android 11 uit de doos. Evenzo moeten apparaten die met Android 10 worden gelanceerd een paar modules bevatten, wordt sterk aanbevolen om een paar andere op te nemen en worden ze niet ondersteund door de rest. Voor apparaten die zijn geüpgraded naar Android 10 (in tegenstelling tot gelanceerd met Android), is de lijst met vereiste modules korter.
Wat doet elke Mainline-module?
Hier is een korte uitleg voor elk van de Mainline-modules:
toegevoegd
De adbd-module beheert adb- en IDE-foutopsporingssessies op de opdrachtregel. Door adbd te moduleren, kan Google sneller prestatieverbeteringen en bugfixes leveren. Dit is cruciaal omdat sommige bugs in het verleden verband hielden met het leeglopen van de batterij en ervoor konden zorgen dat apparaten 100% CPU bleven gebruiken totdat de telefoon het begaf. Het is dus cruciaal voor Google om deze fixes uit te brengen, aangezien adb veel wordt gebruikt door app-ontwikkelaars en OEM's om te testen.
Android Neural Networks API-runtime
Dit is een bibliotheek die zich tussen een app en backend-stuurprogramma's bevindt. De API is op zijn beurt een Android C API voor het uitvoeren van computerintensieve machine learning-bewerkingen op mobiele apparaten en om hardwareversnelde inferentiebewerkingen mogelijk te maken.
CellBroadcast
Cell Broadcast verwijst naar nood- en niet-noodwaarschuwingen (zoals AMBER-waarschuwingen). Deze module houdt zich bezig met taken rond deze waarschuwingen, en met andere ondersteunende functies zoals SMS-decodering en geofencing voor draadloze noodwaarschuwingen.
Concrypt
De Conscrypt-module verwerkt de TLS-implementatie van Android en andere cryptografische functies zoals sleutelgeneratoren, cipers en berichtsamenvattingen. Door dit als een module te verzenden, kan Google beveiligingsverbeteringen versnellen, zonder afhankelijk te zijn van OTA-updates.
DNS-resolver
Zoals de naam al aangeeft, lost de DNS-resolver DNS op, d.w.z. het converteert door mensen leesbare URL's in IP-adressen. De module bevat de code die de DNS-stub-resolver implementeert, en door deze als module te verzenden, kan Google de gebruiker beter beschermen tegen DNS-onderschepping en aanvallen van configuratie-updates.
Documenten UI
Documents UI is de module die verantwoordelijk is voor het beheren van de toegang tot specifieke bestanden voor componenten die documentrechten afhandelen. Zoals Google stelt, verhoogt het maken van opslagtoegang en machtigingen in een module de privacy en veiligheid voor eindgebruikers, terwijl de runtime resource overlay (RRO)-functie stelt OEM's in staat om de ervaring te thematiseren (verwijzend naar de app Bestanden) als ze dat nodig hebben naar. Als module worden alle Google-Android-apparaten geleverd met dezelfde Documents UI-ervaring.
ExtServices
Deze module bevat raamwerkcomponenten voor de kernfunctionaliteit van het besturingssysteem, zoals notificatierangschikking, strategieën voor het automatisch invullen van tekstovereenkomsten, opslagcache, pakketwaakhond en andere services.
IPsec/IKEv2-bibliotheek
Deze bibliotheekmodule houdt zich bezig met nieuwe en bestaande functies rond Interworking Wireless LAN (IWLAN) en VPN's, zoals het onderhandelen over beveiligingsparameters zoals sleutels, algoritmen en tunnel configuraties. Het idee achter het modulariseren van deze functies is om de consistentie van het ecosysteem te bevorderen en een manier te bieden om snelle oplossingen te bieden voor beveiligings- en interoperabiliteitsproblemen.
Dit zijn drie gesplitste modules, maar ze hebben functies die van elkaar afhankelijk zijn. Deze mediamodules verwerken mediatypen en -codes, werken samen met de ExoPlayer, tonen transportbesturingen en afspeelinformatie aan het framework, optimaliseren geïndexeerde metadata, enz. Herinneren Stagefright, de exploit die Android heeft veranderd en het concept van maandelijkse beveiligingsupdates voor het platform tot stand heeft gebracht? Die exploit was gebaseerd op kwetsbaarheden in de bibliotheek voor het afspelen van media. Een modularisering van de mediacomponenten stelt Google dus in staat om snel en breed te reageren in het geval er beveiligingsbugs worden gevonden in dit vaak gerichte onderdeel.
De functie van deze module is meteen duidelijk uit de naam, hoewel het doel dat niet is. Module Metadata module bevat...metadata over de lijst met modules op het apparaat. En dat is het zo'n beetje.
Netwerkstackcomponenten, machtigingsconfiguratie netwerkstack, aanmelding voor captive portal
De Network Stack Components-module biedt algemene IP-services, monitoring van netwerkconnectiviteit, detectie van captive login portals. De module Toestemmingsconfiguratie definieert de toestemming die andere modules in staat stelt om netwerkgerelateerde taken uit te voeren. De Captive Portal Login-module behandelt Captive Portals - webpagina's die worden weergegeven wanneer verbonden met bepaalde openbare Wi-Fi-netwerken, waar de gebruiker wordt gevraagd om gegevens in te voeren om internet te krijgen toegang.
Toestemmingscontroleur
Deze module levert bijwerkbaar privacybeleid en UI-elementen rond het verlenen en beheren van machtigingen. Als dit bekend klinkt voor wat Package Installer doet, dan is dat omdat het zo is. Functies zoals het verlenen van runtimerechten, beheer en gebruiksregistratie maakten deel uit van de Package Installer-app tot Android 9. In Android 10 is de Package Installer-app opgesplitst in secties om de toestemmingslogica te kunnen updaten. De Permission Controller-module wordt geleverd als een APK-bestand en in Android 11 kan de module automatisch runtime-machtigingen intrekken voor apps die gedurende langere tijd niet zijn gebruikt.
SDK-extensies
Deze module is een beetje moeilijk te begrijpen en daarom uit te leggen. Elke Android-release krijgt een SDK-niveau toegewezen (meestal +1 ten opzichte van zijn voorganger). Wanneer een app een bepaalde SDK target, wordt aangenomen dat de ontwikkelaar rekening heeft gehouden met de gedrags- en API-veranderingen van het platform die de Android-release met zich meebrengt.
SDK Extensions-module bepaalt het "extensie-SDK" -niveau van het apparaat en stelt API's beschikbaar voor apps om het extensie-SDK-niveau op te vragen. Dat is ongeveer alles wat de officiële documentatie vermeldt. ArsTechnica, vermeldt echter dat dit waarschijnlijk een secundaire API-laag is die via de Play Store wordt verzonden.
Statsd, Telemetry Train-versiepakket
Statsd is verantwoordelijk voor het verzamelen van apparaatstatistieken. Het Telemetry Train Version-pakket bevat daarentegen geen actieve code of enige eigen functionaliteit. Het bevat eenvoudigweg een versienummer voor de "Telemetry Train", waarvan Google zegt dat het een set aan metrische gegevens gerelateerde modules is. Op basis van het versienummer geeft Google Play de versie van de beveiligingspatch weer aan eindgebruikers en zoekt het uit of er updates beschikbaar zijn voor metrische modules.
Tethering
De Tethering-module deelt de internetverbinding van het apparaat met andere aangesloten clientapparaten via Wi-Fi, USB, Bluetooth of Ethernet. De module bevat de tethering-componenten en hun afhankelijkheden. Door deze Tethering-module te gebruiken, kunnen OEM's vertrouwen op een enkele standaardreferentie-implementatie en een consistente ervaring bieden op alle apparaten.
Tijdzonegegevens
De module Tijdzonegegevens werkt de zomertijd (DST) en tijdzones op Android-apparaten bij, waarbij zowel de gegevens (die kunnen en verandert nogal vaak als reactie op religieuze, politieke en geopolitieke redenen) en het updatemechanisme in het hele ecosysteem. Android 8.1 en Android 9 gebruikten een APK-gebaseerd updatemechanisme voor tijdzonegegevens en Android 10 vervangt dit door een APEX-gebaseerd module-updatemechanisme. Google stelt dat AOSP de platformcode blijft opnemen die nodig is voor op APK gebaseerde updates, dus apparaten die upgraden naar Android 10 kunnen nog steeds door partners verstrekte tijdzonegegevensupdates ontvangen via de APK. Wel waarschuwt Google dat op APK gebaseerde updates een op APEX gebaseerde update vervangen.
Wifi
Dit is de module voor Wi-Fi-functionaliteit. Eindgebruikers kunnen nu een consistente Wi-Fi-ervaring krijgen op Android-apparaten, evenals oplossingen voor interoperabiliteitsproblemen via module-updates, app ontwikkelaars kunnen minder platformfragmentatie krijgen en OEM's kunnen aan de eisen van de vervoerder voldoen en tegelijkertijd de kosten voor het individu verlagen aanpassingen.
Hopelijk laat dit artikel zien hoe belangrijk Project Mainline is voor het Android-ecosysteem van Google.