Project Mainline najveća je promjena u Androidu od Project Treble. Evo što to znači i što svi moduli rade, provjerite!
Jedna od najvećih promjena u Androidu posljednjih godina koja je prošla ispod radara, relativno govoreći protiv njegove važnosti, bilo je uvođenje Glavni projekt u Androidu 10. Google nalaže uključivanje određenih modula Mainline u izdanjima Androida, s Android 11 dolazi s a kombinirano obveznih ukupno 25 glavnih modula. Ovdje je objašnjenje o tome što je Project Mainline i što nastoji riješiti, uz popis svih Androidovih modula Project Mainline.
Što je Project Mainline?
Da bismo pravilno razumjeli Project Mainline, morat ćemo se malo vratiti unatrag. Ako se vratite nekoliko godina unatrag, veliki dio razgovora oko ažuriranja Androida bio je usredotočen na problem fragmentacije. Fragmentacija je bila jedan od najvećih izazova koje je Google trebao riješiti na Androidu tijekom ere Ice Cream Sandwich - Lollipop. Iako je Android kao platforma dobivao redovita ažuriranja po uglavnom predvidljivom obrascu, tim je ažuriranjima trebalo jako dugo da dođu do krajnjih potrošača, ako uopće. Dakle, dok je Google popravljao kritične greške i sigurnosne probleme na razini platforme, stvarno uvođenje ovih promjena nije poželjeti. Bilo je/ima mnogo posrednika (dobavljač SoC-a, OEM-ovi, prijevoznici itd.) i puno pokretnih dijelova uključenih u isporuku ažuriranja vaš telefon, a problem s fragmentacijom nije se činio kao da bi se riješio sam od sebe bez potrebe za teškim udarcima intervencije.
Jedan od glavnih pokušaja rješavanja ovog problema došao je u obliku Projekt Treble uz Android 8.0 Oreo, koji je uključivao veliku rearhitekturu Androida, odvajajući komponente okvira Android OS-a od HAL-ova dobavljača i Linux kernela. Projekt Treble je u biti modularizirao Android odvajanjem OS okvira od softvera niže razine specifičnog za uređaj. Na ovaj način proizvođači uređaja (OEM) ne moraju čekati da proizvođači silicija (prodavatelj SoC-a) ažuriraju implementacijski kod svog dobavljača, a OEM-ovi bi mogli samostalno ažurirati okvir Android OS-a. Krajnji rezultat je brže prihvaćanje novijih izdanja Androida od strane OEM-a, jer to više ne moraju pričekajte da posrednik (prodavatelj SoC-a) završi svoj posao prije nego što može početi raditi njihov.
Iako se situacija s ažuriranjem Androida nije dramatično popravila odmah s Project Trebleom, uvelike je omogućila šire OEM sudjelovanje u beta verzijama Androida 10 i Androida 11, kao i olakšavanje proizvođačima originalne opreme da brže ažuriraju više svojih uređaja Vremenska Crta. Osim toga, cijeli koncept GSI (Generic System Image) imao je velik utjecaj na razvoj naknadnog tržišta na našim forumima.
Programer pokreće Android 11 na 22 starija uređaja s Project Treble GSI
Project Mainline proširuje napore Projekta Treble. Dok je Treble smanjio koliko su OEM-ovi ovisni o dobavljačima SoC-a za svako pojedino ažuriranje OS-a, Mainline smanjuje koliko je Google ovisan o OEM-ovima za isporuku sigurnosnih ažuriranja za ključne komponente OS-a. Project Mainline proširuje Treble filozofiju na kritičnije dijelove okvira Androida, uklanjajući OEM-ove kao ovisne posrednike iz ove jednadžbe. Svrha projekta Mainline je da Google preuzme kontrolu nad komponentama okvira i sistemskim aplikacijama koje su ključni za sigurnost i održavanje dosljednosti razvoja daleko od OEM-a. Projekt Mainline s pravom se naziva the najveća promjena u Androidu od Project Treble.
Za Project Mainline, Google koristi module Mainline koji se isporučuju kroz Google Play Services framework i Google Play Store. Svaki glavni modul isporučuje se kao APK datoteka, APEX datoteka ili kao APK-in-APEX. Kada se glavni modul ažurira, korisnik vidi obavijest "Google Play System Update" (GPSU) na svom uređaju. Učinkovito, kako bi isporučio ažuriranja kritičnim komponentama, Google je zaobišao potrebu čekanja da OEM uvede ažuriranje, odabirući sam obaviti zadatak.
Kao Google navodi na web stranici Androida:
Modularne komponente sustava omogućuju Googleu i Android partnerima široku, brzu i neprimjetnu distribuciju ažuriranja uređajima krajnjih korisnika na nenametljiv način. Na primjer, kombinacija fragmentacije medijskih kodeka i kritičnih grešaka može dramatično usporiti usvajanje aplikacije i angažman korisnika. Česta ažuriranja modula povezanih s medijima mogu smanjiti fragmentaciju kodeka kako bi ponašanje medijske aplikacije bilo dosljednije na različitim Android uređajima i popraviti kritične pogreške kako bi se izgradilo povjerenje korisnika.
Android 10 ili noviji pretvara odabrane komponente sustava u module, od kojih neki koriste format spremnika APEX (uveden u Androidu 10), a neki koriste APK format. Modularna arhitektura omogućuje ažuriranje komponenti sustava s kritičnim ispravcima grešaka i drugim poboljšanja po potrebi, bez utjecaja na implementacije dobavljača niže razine ili aplikacije više razine i usluge.
Kao Ars Technica spominje:
Projekt Mainline, poznat i kao "Ažuriranja sustava Google Play", predstavljen je u Androidu 10 kao veliki napor da se osnovne sistemske komponente Androida učine modularnijim i ažuriranijim. Mainline je predstavio novu vrstu datoteke "APEX" posebno za komponente sustava, s ciljem slanja osnovnog Android koda kroz Play Store jednako lako kao što šaljete ažuriranje aplikacije. Prethodno je jedini Androidov blok koda koji se mogao isporučivati bio APK, vrsta datoteke koja je izvorno dizajnirana za aplikacije trećih strana. Ovo je dolazilo sa svim vrstama sigurnosnih ograničenja i moglo se pokrenuti samo kasno u procesu dizanja, tako da je APEX stvoren imajući na umu moćnije komponente sustava. APEX-ove može izraditi samo Google ili proizvođač vašeg uređaja, tako da mogu biti osjetno moćniji i sadržavati kritične komponente za pokretanje kao što je vrijeme izvođenja aplikacije.
Mainline nije samo tehničko rješenje, već i stvaranje više dijelova Androida koje centralno distribuira Google, što uključuje pregovore s proizvođačima uređaja i nagovaranje da svi pristanu na isporuku istog bloka kodirati. Mainline moduli s vremenom postaju obvezni za isporuku, tako da je Mainline zapravo velika suradnja s proizvođačima uređaja kako bi se osiguralo da jedan modul za cijeli ekosustav zadovoljava svačije potrebe. Nije svaki modul Mainline ultra-moćan APEX modul—neki su samo APK-ovi koji su sada kod za Android koji distribuira Google.
Glavni projekt — Moduli
Uz Android 10, Google je naložio uključivanje 13 specifičnih Mainline modula. S Androidom 11, ukupan broj obveznih modula je 25. Ovdje je cijeli popis, zajedno s nekim ključnim detaljima:
Naziv modula |
Naziv paketa |
Tip |
Uređaj nadograđen na ili pokrenut s Androidom 11 |
Uređaj pokrenut s Androidom 10 |
Uređaj nadograđen na Android 10 |
---|---|---|---|---|---|
adbd |
com.google.android.adbd |
VRH |
Mora |
Nepodržano |
Nepodržano |
Android Neural Network API Runtime |
com.google.android.neuralne mreže |
VRH |
Mora |
Nepodržano |
Nepodržano |
Prijava na Captive Portal |
com.google.android.captiveportallogin |
APK |
Mora |
Strogo preporučljivo |
Neobavezno |
Emitiranje |
com.google.android.cellbroadcast |
VRH |
Mora |
Nepodržano |
Nepodržano |
Conscrypt |
com.google.android.conscrypt |
VRH |
Mora |
Strogo preporučljivo |
Neobavezno |
DNS razrješavač |
com.google.android.resolv |
VRH |
Mora |
Strogo preporučljivo |
Neobavezno |
UI dokumenata |
com.google.android.documentsui |
APK |
Mora |
Mora |
Neobavezno |
ExtServices - APK |
com.google.android.ext.services |
APK |
Mora |
Mora |
Mora |
ExtServices - VRH |
com.google.android.extservices |
VRH |
Mora |
Nepodržano |
Nepodržano |
Knjižnica IPsec/IKEv2 |
com.google.android.ipsec |
VRH |
Mora |
Nepodržano |
Nepodržano |
Medijski kodeci |
com.google.android.media.swcodec |
VRH |
Mora |
Mora |
Neobavezno |
Komponente medijskog okvira |
com.google.android.media |
VRH |
Mora |
Mora |
Neobavezno |
Davatelj medija |
com.google.android.mediaprovider |
VRH |
Mora |
Nepodržano |
Nepodržano |
Metapodaci modula |
com.google.android.modulemetadata |
APK |
Mora |
Mora |
Mora |
Komponente mrežnog stoga |
com.google.android.networkstack |
APK |
Mora |
Strogo preporučljivo |
Neobavezno |
Konfiguracija dopuštenja mrežnog snopa |
com.google.android.networkstack.permissionconfig |
APK |
Mora |
Strogo preporučljivo |
Neobavezno |
Kontrolor dopuštenja - APK |
com.google.android.permissioncontroller |
APK |
Mora |
Mora |
Mora |
Kontrolor dopuštenja - VRH |
com.google.android.permission |
VRH |
Mora |
Nepodržano |
Nepodržano |
SDK proširenja |
com.google.android.sdkext |
VRH |
Mora |
Nepodržano |
Nepodržano |
Statsd |
com.google.android.os.statsd |
VRH |
Mora |
Nepodržano |
Nepodržano |
Paket verzije vlaka telemetrije |
com.google.mainline.telemetry |
APK |
Mora |
Nepodržano |
Nepodržano |
Povezivanje |
com.google.android.tethering |
VRH |
Mora |
Nepodržano |
Nepodržano |
Podaci vremenske zone |
com.google.android.tzdata |
VRH |
Ne smije |
Mora |
Neobavezno |
Podaci o vremenskoj zoni 2 |
com.google.android.tzdata2 |
VRH |
Mora |
Nepodržano |
Nepodržano |
Wi-Fi³ |
com.google.android.wifi |
VRH |
Mora |
Nepodržano |
Nepodržano |
Kako bismo pružili neki kontekst gornjim stupcima, stupac pod nazivom "Uređaj nadograđen na ili pokrenut s Androidom 11" uključuje pojedinosti o tome mora li modul biti prisutan (ili ne smije biti prisutan, u slučaju podataka vremenske zone zbog uključivanja njegove alternative) na svim uređajima koji su ili nadograđeni na Android 11 ili se pokreću s Androidom 11 izvan kutija. Slično tome, uređaji koji se pokreću s Androidom 10 moraju uključivati nekoliko modula, preporučuje se uključivanje nekoliko drugih, a ostali ih ne podržavaju. Za uređaje koji su nadograđeni na Android 10 (za razliku od lansiranih s Androidom), popis potrebnih modula je kraći.
Što radi svaki modul Mainline?
Evo kratkog objašnjenja za svaki od modula Mainline:
Adbd
Modul adbd upravlja adb i IDE sesijama otklanjanja pogrešaka naredbenog retka. Modularizacija adbd-a omogućuje Googleu da brže isporuči poboljšanja performansi i ispravi greške. Ovo je ključno jer su neke pogreške u prošlosti bile povezane s pražnjenjem baterije i mogle su uzrokovati da uređaji nastave koristiti 100% CPU dok se telefon ne ugasi. Stoga je dobivanje ovih popravaka ključno za Google jer programeri aplikacija i OEM-ovi naširoko koriste adb za testiranje.
Android Neural Networks API Runtime
Ovo je biblioteka koja se nalazi između aplikacije i pozadinskih upravljačkih programa. API je zauzvrat Android C API za izvođenje računalno intenzivnih operacija strojnog učenja na mobilnim uređajima i za omogućavanje hardverski ubrzanih operacija zaključivanja.
Emitiranje
Cell Broadcast odnosi se na hitna i nehitna upozorenja (kao što su AMBER upozorenja). Ovaj se modul bavi zadacima oko ovih upozorenja i drugim pomoćnim funkcijama kao što su dekodiranje SMS-a i geofencing za bežična hitna upozorenja.
Conscrypt
Modul Conscrypt upravlja Androidovom TLS implementacijom i drugim kriptografskim funkcijama kao što su generatori ključeva, ciperi i sažetci poruka. Isporuka ovog modula omogućuje Googleu da ubrza sigurnosna poboljšanja, bez potrebe za oslanjanjem na OTA ažuriranja.
DNS razrješavač
Kao što naziv govori, DNS razrješivač rješava DNS, tj. pretvara čitljive URL-ove u IP adrese. Modul sadrži kod koji implementira razrješavač DNS stubova, a isporuka ovog modula omogućuje Googleu bolju zaštitu korisnika od presretanja DNS-a i napada ažuriranja konfiguracije.
UI dokumenata
Documents UI je modul odgovoran za kontrolu pristupa određenim datotekama za komponente koje upravljaju dozvolama za dokumente. Kako Google navodi, pretvaranje pristupa pohrani i dozvola u modul povećava privatnost i sigurnost za krajnje korisnike, dok značajka runtime resource overlay (RRO) omogućuje proizvođačima originalne opreme tematiziranje iskustva (odnosno na aplikaciju Datoteke) ako im je potrebno do. Kao modul, svi Google-Android uređaji isporučivat će se s istim iskustvom korisničkog sučelja za dokumente.
ExtServices
Ovaj modul uključuje komponente okvira za osnovne funkcije OS-a kao što su rangiranje obavijesti, strategije automatskog popunjavanja teksta, predmemorija za pohranu, čuvar paketa i druge usluge.
Knjižnica IPsec/IKEv2
Ovaj modul knjižnice bavi se novim i postojećim značajkama oko međusobnog bežičnog LAN-a (IWLAN) i VPN-ovi, poput pregovaranja o sigurnosnim parametrima poput ključeva, algoritama i tunela konfiguracije. Ideja s modularizacijom ovih funkcija je promicanje dosljednosti ekosustava i pružanje načina za isporuku brzih rješenja za probleme sigurnosti i interoperabilnosti.
To su tri bifurkirana modula, ali imaju funkcije koje ovise jedna o drugoj. Ovi medijski moduli rukuju vrstama medija i kodovima, komuniciraju s ExoPlayerom, izlažu kontrole prijenosa i informacije o reprodukciji okviru, optimiziraju indeksirane metapodatke itd. Zapamtiti Stagefright, exploit koji je promijenio Android i doveo do samog koncepta mjesečnih sigurnosnih ažuriranja platforme? To se iskorištavanje oslanjalo na ranjivosti unutar biblioteke za reprodukciju medija. Dakle, modularizacija medijskih komponenti omogućuje Googleu brzu i opsežnu reakciju u slučaju pronalaska sigurnosnih grešaka u ovoj često ciljanoj komponenti.
Funkcija ovog modula je odmah jasna iz njegovog imena, iako njegova svrha nije. Modul Metapodaci modula sadrži...metapodatke o popisu modula na uređaju. I to je otprilike to.
Komponente mrežnog niza, Konfiguracija dopuštenja mrežnog niza, Prijava na Captive Portal
Modul Network Stack Components pruža uobičajene IP usluge, nadzor mrežne povezanosti, detekciju portala za zatvorenu prijavu. Modul za konfiguraciju dopuštenja definira dopuštenje koje drugim modulima omogućuje izvršavanje zadataka povezanih s mrežom. Modul za prijavu na Captive Portal bavi se Captive Portalima — web stranicama koje se prikazuju kada spojen na određene javne Wi-Fi mreže, gdje se od korisnika traži unos pojedinosti za pristup internetu pristup.
Kontrolor dopuštenja
Ovaj modul donosi ažurirana pravila privatnosti i elemente korisničkog sučelja oko dodjele dopuštenja i upravljanja njima. Ako ovo zvuči poznato onome što Package Installer radi, to je zato što jest. Funkcije poput dodjele dopuštenja za vrijeme izvođenja, upravljanja i praćenja korištenja bile su dio aplikacije Package Installer do Androida 9. U Androidu 10 aplikacija Package Installer podijeljena je u odjeljke kako bi se omogućilo ažuriranje logike dopuštenja. Modul Permission Controller isporučuje se kao APK datoteka, a u Androidu 11 modul može automatski opozvati dopuštenja za vrijeme izvođenja za aplikacije koje se nisu koristile dulje vrijeme.
SDK proširenja
Ovaj modul je malo težak za razumjeti i posljedično objasniti. Svakom izdanju Androida dodijeljena je razina SDK-a (obično +1 od prethodnika). Kada aplikacija cilja određeni SDK, pretpostavlja se da je razvojni programer uzeo u obzir ponašanje platforme i promjene API-ja koje je donijelo izdanje Androida.
Modul SDK Extensions odlučuje o razini "extension SDK" uređaja i izlaže API-je za aplikacije za postavljanje upita o razini SDK proširenja. To je otprilike sve što navodi službena dokumentacija. ArsTechnica, ipak, spominje da je ovo vjerojatno sekundarni API sloj koji će se isporučivati putem Trgovine Play.
Statsd, paket inačice telemetrije
Statsd je odgovoran za prikupljanje metrike uređaja. Paket verzije telemetrije Train, s druge strane, ne sadrži aktivni kod niti bilo kakvu vlastitu funkcionalnost. Jednostavno sadrži broj verzije za "Telemetry Train" za koji Google kaže da je skup modula povezanih s metrikom. Na temelju broja verzije, Google Play krajnjim korisnicima prikazuje verziju sigurnosne zakrpe i utvrđuje jesu li dostupna ažuriranja za module povezane s metrikom.
Povezivanje
Modul Tethering dijeli internetsku vezu uređaja s drugim povezanim klijentskim uređajima putem Wi-Fi-ja, USB-a, Bluetootha ili Etherneta. Modul uključuje komponente povezivanja i njihove ovisnosti. Korištenjem ovog Tethering modula, OEM-ovi se mogu osloniti na jednu, standardnu referentnu implementaciju i donijeti dosljedno iskustvo na svim uređajima.
Podaci vremenske zone
Modul podataka vremenske zone ažurira ljetno računanje vremena (DST) i vremenske zone na Android uređajima, standardizirajući i podatke (koji mogu i mijenja se prilično često kao odgovor na vjerske, političke i geopolitičke razloge) i mehanizam ažuriranja u cijelom ekosustavu. Android 8.1 i Android 9 koristili su mehanizam ažuriranja podataka vremenske zone temeljen na APK-u, a Android 10 ga zamjenjuje mehanizmom ažuriranja modula temeljenom na APEX-u. Google navodi da AOSP nastavlja uključivati kod platforme neophodan za ažuriranja temeljena na APK-u, tako da uređaji koji se nadograđuju na Android 10 i dalje mogu primati ažuriranja podataka o vremenskoj zoni partnera putem APK. Međutim, Google upozorava da ažuriranja temeljena na APK-u zamjenjuju ažuriranja temeljena na APEX-u.
Wi-Fi
Ovo je modul za Wi-Fi funkcionalnost. Krajnji korisnici sada mogu dobiti dosljedno Wi-Fi iskustvo na Android uređajima, kao i popravke problema interoperabilnosti putem ažuriranja modula, aplikacije programeri mogu dobiti smanjenu fragmentaciju platforme, a proizvođači originalne opreme mogu ispuniti zahtjeve nositelja dok istovremeno smanjuju troškove za pojedince prilagodbe.
Nadajmo se da ovaj članak naglašava koliko je Project Mainline važan za Googleov Android ekosustav.