Google odhalil Dynamic System Update, nový způsob instalace GSI v Android Q, který nevyžaduje odemykání bootloaderu.
Spolu s vydáním Androidu 8.0 Oreo Google odhalil Projekt Treble: zásadní přepracování způsobu komunikace mezi rámcem operačního systému Android a HAL dodavatele a linuxovým jádrem. Treble je hlavní iniciativa navržená ke snížení verze platformy Android a fragmentace bezpečnostních záplata všechna zařízení se značkou Android spouštěná s Android Pie musí podporovat Project Treble. OEM a dodavatelé testují kompatibilitu Treble zavedením Generic System Image (GSI) – čistě sériového sestavení Androidu od AOSP – a absolvováním Testovací sada dodavatele (VTS) a Compatibility Test Suite-on-Generic System Image (CTS-on-GSI). GSI se ukázal jako užitečný nejen tím, že umožňuje softwarovým inženýrům pracujícím pro OEM testovat kompatibilitu Treble, ale také otevřel dveře pro velká vlastní komunita ROM na XDA. Pro vydání Android Q chce Google učinit GSI užitečnými pro další skupinu: vývojáře aplikací.
Od prvního stabilního vydání a výpadku zdrojového kódu jakékoli dané verze platformy Android obvykle přichází v srpnu, vývojáři, kteří by chtěli otestovat další vydání Androidu na skutečném zařízení, obvykle potřebují přístup ke smartphonu Google, pokud nechtějí čekat, až aktualizace dosáhne jejich vlastního hardwaru. Google však spolupracoval s výrobci OEM, aby přinesli Android P beta do několika zařízení v loňském roce a letos na to navázali s Android Q beta. Kromě oficiální beta verze Androidu Q letos Google také vydal oficiální Q beta GSI takže každý vývojář se zařízením kompatibilním s Project Treble může nainstalovat nejnovější verzi Q, aniž by musel čekat měsíce, než se sestava dostane do jeho zařízení. Tento nový způsob testování příštího vydání Androidu dává vývojářům více příležitostí, a tím i více času na testování svých aplikací zásadní změny v Androidu.
Bohužel současný způsob instalace GSI může být obtížné. Vyžaduje odemknutí bootloaderu – což znamená vymazání všech uživatelských dat a/nebo zrušení záruky – a flashování obrazu pomocí protokolu rychlého spouštění. Není to rychlý a jednoduchý proces pro vývojáře aplikací, pokud jejich zařízení dokonce umožňuje odemknutí bootloaderu. To je důvod, proč pro posledních několik měsícůGoogle zapracoval na novém způsobu spouštění GSI. Zadejte novou funkci nazvanou Dynamická aktualizace systému nebo DSU.
(Tato funkce byla dříve vyvinuta pod názvy „Live Image“, „Dynamic Android“ a „Android on Tap“, takže se nedivte, že ji Google za pár týdnů nebo měsíců nazve jinak.)
Dynamické aktualizace systému v systému Android Q
Cílem funkce DSU je umožnit vývojářům nabootovat do GSI bez zasahování do aktuální instalace. To znamená, že zavaděč nemusí být odemčen a uživatelská data nemusí být vymazána. Proces instalace je také výrazně zjednodušen, protože Google poskytl rozhraní příkazového řádku přes ADB a aplikaci, kterou lze ovládat pomocí intentů. Takto vypadá zavedení GSI pomocí DSU:
V tomto videu* se Google Pixel 3 XL se systémem Android Q beta 3 restartuje do GSI. V tomto prostředí může vývojář aplikace nainstalovat a otestovat svou aplikaci na kompatibilitu Q API. Po dokončení testování se mohou jednoduše restartovat zpět do běžného softwaru Q beta 3 na zařízení. V zásadě používáte duální bootování GSI, takže můžete svou aplikaci bezpečně otestovat!
*Toto video jsme natočili na Google I/O 2019, kdy DSU ještě nebylo veřejně dostupné, takže Q beta 3 sestavení na natočeném Pixelu 3 XL bylo mírně upraveno společností Google tak, aby zahrnovalo podporu DSU. Zařízení se systémem Q beta 4 a novějším mohou podporovat DSU, pokud splňují níže uvedené požadavky.
Požadavky na dynamické aktualizace systému
Zprovoznit a spustit to, co je v podstatě duální spouštění, nebylo pro Google snadným úkolem. Zásadní změny bylo třeba provést ve způsobu správy oddílů na Pixel 3, testovacím prostředí společnosti Google pro DSU. Prvním hlavním požadavkem na podporu DSU je tedy to, aby zařízení podporovalo dynamické oddíly. Dynamické oddíly zahrnují jeden skutečný oddíl úložiště, který je rozdělen na logické oddíly s měnitelnou velikostí, jako je systém, dodavatel, odm, OEM, produkt atd. Během instalace GSI je prostor rezervován pro nové systémové oddíly a oddíly s uživatelskými daty odebráním nevyužitých bloků ze stávajícího oddílu uživatelských dat. Protože tyto nové oddíly mohou mít velikost několik gigabajtů, má podpora DSU smysl pouze s logikou oddíly, jinak by zařízení muselo trvale vyhradit několik gigabajtů úložného prostoru pro GSI instalací.
Mezi další požadavky patří ramdisk, který rozhoduje, zda zavést systém pro obnovu, systém nebo logický oddíl, a oddíl metadat pro ukládání metadat GSI. Obecně jsou stavebními kameny pro podporu DSU požadavky na spuštění systému Android Q, podle Project Treble vede Iliyan Malchev. Nejsme si jisti, jestli všechno to je potřeba pro podporu DSU je požadavek na spuštění Android Q, ale můžeme předpokládat, že většina, ne-li všechna zařízení, se spouští se systémem Android Q umět podporují DSU, i když je Google aktuálně nevyžaduje. Dynamické oddíly mají zatím pouze Pixel 3, Pixel 3 XL, Pixel 3a a Pixel 3a XL a z těchto zařízení pouze Pixel 3 a Pixel 3 XL podporují DSU v Android Q beta 4. Ačkoli podpora DSU není vyžadována, Google doufá, že OEM tuto funkci přesto povolí, protože zjednodušuje bezpečné testování kompatibility Treble. Například softwarový inženýr OEM může umístit GSI na SD kartě takže se mohou rychle spustit na více zařízeních a otestovat kompatibilitu Treble.
Zabezpečení pro dynamické aktualizace systému
Vzhledem k tomu, že DSU zavádí do mixu v podstatě druhý operační systém, Google se musí ujistit, že s touto novou instalací nelze manipulovat a narušit integritu zařízení. Tedy, stejné základní bezpečnostní ochrany pro původní instalaci jsou na místě i pro instalaci GSI: Zásady Android Verified Boot a SELinux. Kromě toho mohou GSI iniciovat pouze aplikace s podpisem INSTALL_DYNAMIC_SYSTEM|privilegovaným oprávněním instalace, zatímco aplikace s oprávněním k podpisu MANAGE_DYNAMIC_SYSTEM mohou povolit/zakázat nebo vymazat GSI instalace. To znamená, že s DSU mohou pracovat pouze důvěryhodné aplikace na úrovni systému.
Aby byla zajištěna ochrana původních uživatelských dat, přidal Google extra ochranný mechanismus v systému Android Q. Volal "Kontrolní bod“, tato funkce chrání před zničením uživatelských dat obnovením oddílů s kontrolními body do jejich původního stavu. Kontrolní body jsou však užitečné nejen pro DSU. Používají se také k ochraně před zpackanými Hlavní linie projektu Modul APEX a A/B OTA aktualizace. (Zařízení s oddíly A/B již mají ochranu proti vrácení, ale tato vrácení vyžadují obnovení továrních dat, zatímco kontrolní body uživatelských dat nikoli.)
Instalace GSI
Pokud vaše zařízení podporuje DSU jako řada Pixel 3, je snadné nainstalovat GSI. Nejprve se musíte ujistit, že příznak funkce Dynamický systém je povolen jedním ze dvou způsobů:
- Pokud používáte sestavení userdebug, povolte příznak settings_dynamic_android v Nastavení > Systém > Možnosti vývojáře > Příznaky funkcí.
- Pokud používáte uživatelské sestavení, spusťte následující příkaz prostředí adb:
setproppersist.sys.fflag.override.settings_dynamic_system 1
Poté si stáhněte nejnovější Android Q beta GSI z Google nebo OEM vašeho zařízení. (DSU umožňuje pouze instalaci GSI podepsaných společností Google nebo OEM.) Po stažení použijte simg2img převést řídký obrázek na surový obrázek. Pomocí gzip zabalte nezpracovaný obraz a poté zkopírujte výsledný archiv do umístění ve vašem zařízení externí úložiště (např. /data/media/0/Download) nebo skutečné externí paměťové médium (jako fyzické SD Kartu). Nakonec spusťte aplikaci DynamicSystemInstallationService se správným záměrem zahájit instalaci:
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
Jakmile kliknete na restart, zavedete GSI. Použitelnost zařízení v GSI závisí na tom, jak dobře OEM vašeho zařízení implementovalo Treble (nebo spíše, jak málo porušovalo Treble kompatibilita.) Některá zařízení budou pracovat s GSI lépe než jiná, ale obecně neočekávejte, že tuto instalaci budete používat denně Řidič. Máte aplikaci otestovat a poté ji restartovat. Pokud chcete zůstat v instalaci GSI pro další testování, můžete použít gsi_tool příkaz shell.
Úplné pokyny k instalaci GSI pro DSU lze nalézt tady. Chyby lze hlásit na Google Issue Tracker,Redditnebo Přetečení zásobníku.
Důvod dynamických aktualizací systému
Když jsem mluvil s Iliyanem Malchevem na Google I/O, zopakoval, co řekl Hung-ying Tyan z týmu Treble o včasném přístupu ke GSI na Listopadový Android Dev Summit. Google vytvořil DSU získat zpětnou vazbu od co nejširšího publika. Cílem je zlepšit kvalitu GSI, což zase zlepšuje kvalitu budoucího vydání Androidu protože GSI je nejčistší forma Androidu. Google je v současnosti jedinou společností, která testuje kompatibilitu GSI příští verze (například jak dobře funguje obraz systému Android Q na Androidu P implementace dodavatele), ale čím více lidí flashuje GSI a poskytuje zpětnou vazbu, mohou OEM opravit porušení kompatibility Treble, takže GSI budou fungovat ještě lépe v budoucnost. Iliyan říká, že ze strany výrobců OEM a dodavatelů, jako je Qualcomm, je velký zájem o opětovné použití obrazů dodavatelů z předchozího vydání systému Android s obrazem systému další verze. Iniciativy jako DSU pomáhají Googlu a OEM zaplnit mezeru v pokrytí automatickými testy, jako jsou VTS a CTS-on-GSI. Google tak získá více beta testerů, aby poskytli zpětnou vazbu k dalšímu vydání Androidu, a zároveň se doslechli o porušení kompatibility Treble, aby OEM mohli zlepšit svou práci.
Přidání dynamických aktualizací systému do systému Android Q je vítáno, ale nebude to řešení duálního spouštění, ve které někteří z vás doufají. Jak již bylo zmíněno dříve, lze nainstalovat pouze bitové kopie systému podepsané společností Google nebo OEM. Když jsem se zeptal Iliyana na možnost rozšíření DSU na podporu ekosystému alternativního Androidu řekl, že je to technicky možné udělat, protože DSU je prostě kanál pro doručení systému snímky. Každý OEM jej může používat, jak chce pokud je konečný výsledek kompatibilní se systémem Android. Google zde nevytvořil alternativu k systému OTA a DSU není určeno k použití pro skutečné duální spouštění. Bez ohledu na to, díky práci, kterou Google udělal na Treble, je Android modulárnější, takže bych nebyl překvapen, kdyby se nativní duální spouštění stalo realitou.