Dynamické aktualizácie systému v systéme Android Otázka: Ako Project Treble vylepší budúce verzie systému Android

Google odhalil dynamickú aktualizáciu systému, nový spôsob inštalácie GSI v systéme Android Q, ktorý nevyžaduje odomknutie bootloadera.

Popri vydaní systému Android 8.0 Oreo spoločnosť Google odhalila Projekt Treble: významná zmena architektúry v spôsobe komunikácie rámca OS Android a HAL dodávateľa a linuxového jadra. Treble je hlavná iniciatíva navrhnutá na zníženie verzie platformy Android a fragmentácia bezpečnostných záplata všetky zariadenia so značkou Android, ktoré sú spustené s Android Pie, musia podporovať Project Treble. Výrobcovia OEM a predajcovia testujú kompatibilitu Treble spustením Generic System Image (GSI) – čisto sériovej zostavy Androidu od AOSP – a absolvovaním testu Testovacia sada dodávateľov (VTS) a Compatibility Test Suite-on-Generic System Image (CTS-on-GSI). GSI sa ukázal ako užitočný nielen tým, že umožňuje softvérovým inžinierom pracujúcim pre OEM testovať kompatibilitu Treble, ale tiež otvoril dvere pre veľká komunita vlastných ROM na XDA. Pre vydanie Android Q chce Google urobiť GSI užitočnými pre ďalšiu skupinu: vývojárov aplikácií.

Od prvého stabilného vydania a poklesu zdrojového kódu akéhokoľvek vydania platformy Android zvyčajne prichádza v auguste, vývojári, ktorí by chceli otestovať ďalšie vydanie systému Android na skutočnom zariadení, zvyčajne potrebujú prístup k smartfónu Google, ak nechcú čakať, kým sa aktualizácia dostane k ich vlastnému hardvéru. Google však spolupracoval s výrobcami OEM, aby priniesol Android P beta do niekoľkých zariadení v minulom roku a tento rok na to nadviazali s a Android Q beta. Popri oficiálnej beta verzii systému Android Q spoločnosť Google tento rok vydala aj verziu oficiálny Q beta GSI takže každý vývojár so zariadením kompatibilným s Project Treble si môže nainštalovať najnovšie vydanie Q bez toho, aby musel mesiace čakať, kým sa zostava dostane do jeho zariadení. Tento nový spôsob testovania ďalšieho vydania systému Android poskytuje vývojárom viac príležitostí, a teda aj viac času na testovanie svojich aplikácií zásadné zmeny v systéme Android.

Bohužiaľ, súčasný spôsob inštalácia GSI môže byť ťažké. Vyžaduje si to odomknutie bootloadera – čo znamená vymazanie všetkých používateľských údajov a/alebo zrušenie záruky – a flashovanie obrazu prostredníctvom protokolu rýchleho spustenia. Nie je to rýchly a jednoduchý proces pre vývojárov aplikácií, ak ich zariadenie používa dokonca umožňuje odomknúť bootloader. To je dôvod, prečo pre posledných niekoľko mesiacovGoogle pracuje na novom spôsobe zavádzania GSI. Zadajte novú funkciu s názvom Dynamická aktualizácia systému alebo DSU.

(Táto funkcia bola predtým vyvinutá pod názvami „Živý obrázok“, „Dynamický Android“ a „Android na klepnutie“, takže sa nečudujte, že ju Google o pár týždňov alebo mesiacov nazve inak.)

Dynamické aktualizácie systému v systéme Android Q

Cieľom funkcie DSU je umožniť vývojárovi zaviesť systém do GSI bez toho, aby zasahoval do aktuálnej inštalácie. To znamená, že bootloader nemusí byť odomknutý a používateľské dáta nemusia byť vymazané. Inštalačný proces je tiež výrazne zjednodušený, pretože spoločnosť Google poskytla rozhranie príkazového riadka cez ADB a aplikáciu, ktorú možno ovládať pomocou intencií. Takto vyzerá spustenie GSI pomocou DSU:

V tomto videu* sa Google Pixel 3 XL so systémom Android Q beta 3 reštartuje do GSI. V tomto prostredí môže vývojár aplikácie nainštalovať a otestovať svoju aplikáciu na kompatibilitu Q API. Po dokončení testovania sa môžu jednoducho reštartovať späť do bežného softvéru Q beta 3 na zariadení. V zásade ide o dvojité zavádzanie GSI, takže môžete svoju aplikáciu bezpečne otestovať!

*Toto video sme nahrali na Google I/O 2019, keď DSU ešte nebolo verejne dostupné, takže Q beta 3 zostava na sfilmovanom Pixeli 3 XL bola mierne upravená spoločnosťou Google, aby zahŕňala podporu DSU. Zariadenia so systémom Q beta 4 a novším môžu podporovať DSU, ak spĺňajú požiadavky uvedené nižšie.

Požiadavky na dynamické aktualizácie systému

Spustiť a spustiť to, čo je v podstate duálne spustenie, nebolo pre Google jednoduchou úlohou. Bolo potrebné urobiť veľké zmeny v spôsobe správy oddielov na Pixel 3, testovacom zariadení spoločnosti Google pre DSU. Prvou hlavnou požiadavkou na podporu DSU je teda to, aby zariadenie podporovalo dynamické oddiely. Dynamické oddiely zahŕňajú jeden skutočný oddiel úložiska, ktorý je rozdelený na logické oddiely s nastaviteľnou veľkosťou, ako je systém, dodávateľ, odm, OEM, produkt atď. Počas inštalácie GSI je priestor vyhradený pre nové systémové oddiely a oddiely s používateľskými údajmi prevzatím nepoužitých blokov z existujúceho oddielu s používateľskými údajmi. Keďže tieto nové oddiely môžu mať veľkosť niekoľkých gigabajtov, podpora DSU má zmysel len s logikou oddiely, inak by si zariadenie muselo trvalo rezervovať niekoľko gigabajtov úložného priestoru pre GSI inštalácie.

Medzi ďalšie požiadavky patrí ramdisk, ktorý rozhoduje, či sa má zaviesť systém na obnovenie, systém alebo logický oddiel, a oddiel s metadátami na ukladanie metadát GSI. Vo všeobecnosti sú stavebnými kameňmi podpory DSU požiadavky na spustenie systému Android Q, podľa Project Treble vedie Iliyan Malchev. Nie sme si istí, či všetko to je potrebné na podporu DSU je požiadavka na spustenie systému Android Q, ale môžeme predpokladať, že väčšina, ak nie všetky zariadenia sa spúšťajú so systémom Android Q môcť podporovať DSU, aj keď to od nich Google v súčasnosti nevyžaduje. Dynamické oddiely majú zatiaľ iba Pixel 3, Pixel 3 XL, Pixel 3a a Pixel 3a XL a z týchto zariadení iba Pixel 3 a Pixel 3 XL podporujú DSU v systéme Android Q beta 4. Aj keď podpora DSU nie je potrebná, Google dúfa, že výrobcovia OEM túto funkciu aj tak povolia, pretože to zjednodušuje bezpečné testovanie kompatibility Treble. Napríklad softvérový inžinier OEM môže umiestniť GSI na SD karte takže sa môžu rýchlo zaviesť na viacerých zariadeniach a otestovať kompatibilitu Treble.

Zabezpečenie pre dynamické aktualizácie systému

Keďže DSU do mixu zavádza v podstate druhý operačný systém, Google sa musí uistiť, že s touto novou inštaláciou nemožno manipulovať, aby sa narušila integrita zariadenia. Teda, rovnaké základné bezpečnostné ochrany pre pôvodnú inštaláciu sú zavedené aj pre inštaláciu GSI: Android Verified Boot a SELinux politiky. Okrem toho iba aplikácie s podpisom INSTALL_DYNAMIC_SYSTEM|privilegovaným povolením môžu iniciovať GSI inštaláciu, zatiaľ čo aplikácie s oprávnením na podpis MANAGE_DYNAMIC_SYSTEM môžu povoliť/zakázať alebo vymazať GSI inštalácia. To znamená, že s DSU môžu pracovať iba dôveryhodné aplikácie na úrovni systému.

Aby sa zabezpečilo, že pôvodné používateľské údaje budú chránené, Google pridal extra ochranný mechanizmus v systéme Android Q. s názvom "Kontrolný bod,“ funkcia chráni pred zničením používateľských údajov obnovením partícií s kontrolnými bodmi do ich pôvodného stavu. Kontrolné body sú však užitočné nielen pre DSU. Používajú sa aj na ochranu pred pokazením Hlavná línia projektu Modul APEX a A/B OTA aktualizácie. (Zariadenia s oddielmi A/B už majú ochranu vrátenia, ale tieto vrátenia vyžadujú obnovenie továrenských nastavení, zatiaľ čo kontrolné body používateľských údajov nie.)

Inštalácia GSI

Ak vaše zariadenie podporuje DSU ako séria Pixel 3, je ľahké nainštalovať GSI. Najprv sa musíte uistiť, že príznak funkcie Dynamický systém je povolený jedným z dvoch spôsobov:

  1. Ak používate zostavu userdebug, povoľte príznak settings_dynamic_android v časti Nastavenia > Systém > Možnosti vývojára > Príznaky funkcií.
  2. Ak používate používateľskú zostavu, spustite nasledujúci príkaz prostredia adb:
    setproppersist.sys.fflag.override.settings_dynamic_system 1

Potom si stiahnite najnovšiu verziu GSI pre Android Q beta z Google alebo OEM vášho zariadenia. (DSU umožňuje iba inštaláciu GSI podpísaných spoločnosťou Google alebo výrobcom OEM.) Po stiahnutí použite simg2img previesť riedky obrázok na nespracovaný obrázok. Použite gzip na zabalenie surového obrazu a potom skopírujte výsledný archív do umiestnenia vo vašom zariadení externé úložisko (napr. /data/media/0/Download) alebo skutočné externé pamäťové médium (ako fyzické SD karta). Nakoniec spustite aplikáciu DynamicSystemInstallationService so správnym zámerom začať inštaláciu:

adb shell am start-activity \ -n com.android.dynsystem/com.android.dynsystem.VerificationActivity \ -a android.os.image.action.START_INSTALL \ -d file:///storage/emulated/0/Download/system_raw.gz \ --el KEY_SYSTEM_SIZE $(du -b system_raw.img|cut -f1) \ --el KEY_USERDATA_SIZE 8589934592

Po kliknutí na reštart sa spustí GSI. Použiteľnosť zariadenia v GSI závisí od toho, ako dobre OEM vášho zariadenia implementovalo Treble (alebo skôr, ako málo porušili Treble kompatibilita.) Niektoré zariadenia budú pracovať s GSI lepšie ako iné, ale vo všeobecnosti neočakávajte, že túto inštaláciu budete používať vodič. Máte otestovať svoju aplikáciu a potom ju spustiť reštartovaním. Ak chcete zostať v inštalácii GSI na ďalšie testovanie, môžete použiť gsi_tool príkaz shell.

Môžete nájsť úplné pokyny na inštaláciu GSI pre DSU tu. Chyby je možné nahlásiť na Google Issue Tracker,Reddit, alebo Pretečenie zásobníka.

Dôvod dynamických aktualizácií systému

Keď som hovoril s Iliyanom Malchevom na Google I/O, zopakoval to, čo povedal Hung-ying Tyan z tímu Treble o skoršom prístupe k GSI na novembrový Android Dev Summit. Google vytvoril DSU na získať spätnú väzbu od čo najširšieho publika. Cieľom je zlepšiť kvalitu GSI, čo zase zlepšuje kvalitu budúceho vydania systému Android pretože GSI je najčistejšia forma Androidu. Google je v súčasnosti jedinou spoločnosťou, ktorá testuje kompatibilitu novej verzie GSI (napríklad ako dobre funguje obraz systému Android Q na platforme Android P implementácia dodávateľa), ale čím viac ľudí používa GSI a poskytuje spätnú väzbu, výrobcovia OEM môžu opraviť porušenia kompatibility Treble, takže GSI budú fungovať ešte lepšie v budúcnosti. Iliyan hovorí, že výrobcovia OEM a predajcovia ako Qualcomm majú veľký záujem o opätovné použitie obrázkov dodávateľov z predchádzajúceho vydania systému Android s obrazom systému ďalšej verzie. Iniciatívy ako DSU pomáhajú spoločnosti Google a OEM vyplniť medzeru v pokrytí automatickými testami, ako sú VTS a CTS-on-GSI. Google tak získa viac beta testerov, ktorí poskytnú spätnú väzbu k ďalšiemu vydaniu Androidu, a zároveň budú počuť o porušeniach kompatibility Treble, aby mohli výrobcovia OEM zlepšiť svoju prácu.

Pridanie dynamických aktualizácií systému v systéme Android Q je vítané, ale nebude to riešenie s dvojitým zavádzaním, v ktoré niektorí z vás dúfajú. Ako už bolo spomenuté, nainštalovať možno iba obrazy systému podpísané spoločnosťou Google alebo výrobcami OEM. Keď som sa Iliyana spýtal na možnosť rozšírenia DSU na podporu ekosystému alternatívneho Androidu systémy, povedal, že je to technicky možné urobiť, pretože DSU je jednoducho kanál na dodávanie systému snímky. Každý OEM ho môže použiť, ako chce pokiaľ je konečný výsledok kompatibilný so systémom Android. Google tu nevytvoril alternatívu k systému OTA a DSU nie je určené na použitie na skutočné duálne spustenie. Bez ohľadu na to, práca, ktorú Google urobil na Treble, robí Android modulárnejším, takže by som nebol prekvapený, keby sa natívne duálne bootovanie stalo realitou.