Android 11 sa dodáva s DSU Loader v rámci možností vývojára, ktorý vám umožní sťahovať a inštalovať kompatibilné GSI automaticky! Prečítajte si viac!
Dobrý ekosystém aplikácií je jedným z najdôležitejších pilierov úspechu operačného systému. Google aj Apple uznávajú hodnotu dobrých aplikácií na svojich platformách, a preto sa obe spoločnosti snažia vyvážiť potreby svojich používateľov a vývojárov aplikácií. Používatelia neustále tlačia na zmeny v operačných systémoch, a hoci väčšina ľudí vo všeobecnosti oceňuje nové funkcie, tieto zmeny nie sú vždy zábavné pre vývojárov aplikácií, pretože môžu zmeniť veľa základných funkcií a správanie. Vývojárom, ktorí neustále pracujú na tom, aby boli ich aplikácie relevantné, sa tieto zmeny pridávajú k ich rastúcemu pracovnému zoznamu. Aj keď tieto zmeny priamo neovplyvnia ich aplikácie, vývojári sa stále musia uistiť, že ich aplikácie budú fungovať pri novej aktualizácii operačného systému. Google urobil v priebehu rokov veľa zmien, aby tento proces uľahčil vývojárom aplikácií pre Android, a teraz je to novinka funkcia v systéme Android 11, nazývaná DSU Loader, ešte viac uľahčí vývojárom aplikácií testovať ich aplikácie na novom Androide verzií.
Začína to projektom Treble
Projekt Treble, predstavený v systéme Android 8.0, je hlavný re-architektúra operačného systému Android. Cieľom projektu Treble bolo rozdeliť operačný systém Android na dva veľké časti: rámec a implementáciu dodávateľa („dodávateľ“ sa tu vzťahuje na výrobcu akéhokoľvek proprietárneho hardvérového komponentu nachádzajúceho sa v zariadení, zvyčajne na kremík). Rámec OS Android je samotný operačný systém vrátane všetkých systémových aplikácií, používateľského rozhrania a jeho komponentov a rozhraní API, ktoré sú zdieľané medzi zariadeniami so systémom Android. Implementácia dodávateľa obsahuje HAL (Hardware Abstraction Layers) dodávateľa a linuxové jadro a moduly linuxového jadra.
Keďže výrobcovia OEM dodávajú smartfóny s mnohými rôznymi hardvérovými komponentmi od mnohých rôznych dodávateľov, musia urobiť veľa práce, aby hardvér uviedli do prevádzky v jednom vydaní operačného systému Android. Potom s každou novou aktualizáciou operačného systému Android musia urobiť ešte viac práce, aby sa uistili, že ich hardvér funguje s novou verziou. Ale s Project Treble, ktorý štandardizuje ABI (Application Binary Interface) medzi rámcom OS Android a HAL pre konkrétnu verziu Androidu, Výrobcovia Android OEM môžu začať testovať aktualizácie svojich zariadení bez toho, aby museli čakať, kým výrobcovia kremíka a ďalší výrobcovia komponentov aktualizujú svoju stranu kód. Táto zmena sa výrazne zrýchlila spôsob, akým sa spracúvajú aktualizácie systému Android.
To je podstata toho, čo Project Treble urobil pre aktualizácie systému Android, ale čo je dôležitejšie pre aplikáciu Vývojári tu je, že Treble umožnil použitie Generic System Images (GSI) pre kompatibilitu testovanie.
Vznik GSI
Aby OEM mohli otestovať, či správne implementovali Project Treble, Google nariaďuje, aby OEM mohol na zariadení zaviesť čistú zostavu Androidu z AOSP. Toto čisté zostavenie Androidu sa nazýva Generic System Image alebo GSI. Ak sa GSI spustí a väčšina základného hardvéru funguje správne, potom OEM vie, že jeho zariadenie spĺňa požiadavky Project Treble. Pôvodným účelom GSI bolo teda testovanie kompatibility Treble, ale ako sme videli v komunite vývojárov tu v XDA-Developers, dajú sa použiť aj na iné účely. Videli sme, ako sú GSI by v podstate umožnilo zariadeniam s ťažkým Androidom UX využívať najnovšiu verziu Androidu s funkčnými funkciami do niekoľkých dní od nového vydania. Google si však za GSI predstavuje ďalší účel: dať vývojárom aplikácií možnosť testovať svoje aplikácie v novej verzii Androidu na fyzickom zariadení, ktoré už vlastnia.
So systémom Android 10 spoločnosť Google vydala svoje vlastné zostavy GSI pre vývojárov. Google upevnil myšlienku, že vývojári aplikácií by mali používať GSI na spustenie čistej zostavy Androidu na ich vlastnom hardvéri, čo uľahčuje testovanie správania ich aplikácie oproti bežnému Androidu. Táto metóda sa tak pridala k existujúcim možnostiam testovania kompatibility aplikácií v systéme Android bez toho, aby sa zmenilo správanie OEM, ostatné sú pomocou smartfónu Pixel, pomocou oficiálneho emulátora Android v rámci Android Studio alebo nasadením zostavení aplikácie do inštancie zariadenia v cloude.
Napriek všetkému pohodliu, ktoré GSI priniesli, bola ich inštalácia stále ťažkopádnym procesom. Vývojári aplikácií nemusia byť spokojní s ručným blikaním obrazu systému na zariadení so systémom Android, pretože to zvyčajne poznajú iba fanúšikovia alebo vývojári OS Android. Inštalácia GSI si vyžadovala flashovanie obrazu systému cez fastboot, čo si vyžaduje zakázanie Android Verified Boot a odomknutie bootloadera. Odomknutie bootloadera zase vyžaduje úplné vymazanie používateľských údajov. A ako všetci vieme, neexistuje presne jeden proces alebo návod na odomknutie bootloadera každého zariadenia so systémom Android, takže nie je potrebné nájsť žiadnu konzistentnosť. Napríklad zariadenia Samsung nemajú rýchle spustenie, zatiaľ čo zariadenia Xiaomi vás nútia preskočiť cez niekoľko obručí, aby ste odomkli bootloader. Je to pohodlný neporiadok, ktorý má potenciál zamotať sa do niečoho jednoduchšieho.
Tu prichádzajú na rad dynamické aktualizácie systému.
Dynamické aktualizácie systému jednoducho inštalujú GSI
Google si uvedomil, že súčasný spôsob inštalácie GSI nie je dokonalým riešením, a tak začal pracovať na lepšom riešení. V systéme Android 10 Google začal testovať dynamické aktualizácie systémualebo DSU. DSU je nový spôsob, ako dočasne nainštalovať GSI bez toho, aby ste museli použiť príkazy rýchleho spustenia na flashovanie obrazu systému, čím sa prepíše pôvodná inštalácia. Pomocou DSU môžete zaviesť systém GSI, otestovať svoju aplikáciu a potom pohodlne reštartovať späť do pôvodnej inštalácie, ktorá zostala nedotknutá.
Dôvod, prečo DSU môže nainštalovať GSI bez toho, aby sa dotkol pôvodnej inštalácie, je ten, že vytvára nové obrazy systému a dátových oddielov, ktoré sú dočasne uložené v /data/gsi. Tieto obrazy sa potom pripájajú počas zavádzania a nie pôvodné systémové a dátové oddiely. Pretože telefón potrebuje ďalší úložný priestor pre tieto nové dočasné obrázky, váš telefón musí mať na palube „logické oddiely“, čo sú oddiely s dynamickou zmenou veľkosti. Logické oddiely sú nový systém rozdelenia používateľského priestoru pre Android, ktorý je povinný pre zariadenia so systémom Android 10. Ak je vaše zariadenie spustené so systémom Android 10, malo by podporovať inštaláciu GSI prostredníctvom DSU.
V systéme Android 10 všetko, čo musíte urobiť nainštalovať GSI cez DSU je zmeniť vlastnosť systému a potom spustiť DynamicSystemUpdatesInstallationService odoslaním zámeru s cestou k GSI ako zámeru navyše.
Aj keď sa tento proces môže zdať neznámy, v porovnaní s používaním je oveľa jednoduchší a menej rušivý príkazy rýchleho spustenia a riešenie problémov so všetkým, vrátane pôvodnej inštalácie zotreté. Na používanie DSU potrebujete určité znalosti o ADB a zámeroch, ale pre väčšinu vývojárov aplikácií by to nemal byť problém. Napriek tomu nie je dôvod, aby sa tento proces nedal ešte zjednodušiť. Navyše je tu skutočnosť, že inštalácia GSI cez DSU stále vyžaduje odomknutie bootloaderu a vymazanie všetkých používateľských údajov v procese. Na tento účel spoločnosť Google implementovala zmeny na zlepšenie oboch aspektov inštalácie GSI. V systéme Android 11 eliminovali potrebu vôbec používať príkazový riadok na inštaláciu GSI. Samostatne tiež umožnili inštaláciu GSI bez odomknutia bootloadera.
DSU Loader v systéme Android 11
DSU Loader je nový nástroj prítomný v možnostiach vývojára systému Android 11, ktorý vám to umožňuje Stiahnuť ▼ a Inštalácia najnovšie GSI od spoločnosti Google bez toho, aby ste museli zadávať príkazy rýchleho spustenia alebo ADB. Jednoducho klepnite na možnosť DSU Loader v Nastaveniach a zobrazí sa dialógové okno so zoznamom podporovaných GSI priamo od Google. Tieto podporované GSI budú založené na vašom aktuálnom OS a architektúre, takže môžete nainštalovať iba GSI, ktoré sú novšie ako vaša verzia OS a ktoré zodpovedajú vašej architektúre SoC. Jednoducho si vyberte GSI, ktorý chcete nainštalovať, a ten sa stiahne zo serverov Google a nainštaluje sa automaticky na pozadí.
S DSU Loader sa vývojári nikdy nemusia dotknúť príkazového riadku, aby nainštalovali GSI. Aspoň taký je sen, pretože stále zostáva vyriešiť jeden problém.
Cesta vpred
V súčasnosti na inštaláciu GSI cez DSU Loader potrebujete odomknutý bootloader. Aj keď to môže zmariť účel celého utrpenia, nemalo by to tak byť a bolo nám povedané, že sa to napraví. Google naplánoval, že používatelia budú môcť spúšťať GSI podpísané spoločnosťou Google prostredníctvom DSU bez toho, aby museli odomknúť bootloader. V skutočnosti to Google nariaďuje všetky spúšťacie zariadenia so systémom Android 10 obsahujú verejné kľúče Android Verified Boot GSI pre Android 10, Android 11 a Android 12 podpísaných spoločnosťou Google. Zahrnutie verejných kľúčov AVB do ramdisku zariadenia zabezpečí, že AVB neodmietne GSI, ktoré sa pokúšate zaviesť. To je dôvod, prečo súčasná metóda zahŕňa odomknutie bootloadera - flashovaním prázdneho obrazu vbmeta do oddielu vbmeta zakážete AVB, aby neodmietlo GSI, ktoré sa chystáte flashovať. Zakázanie AVB je však hlavným bezpečnostným rizikom, pretože to znamená, že akékoľvek zmeny systém/boot/produkt/dodávateľ sa dá načítať do zariadenia, a preto to chce Google urobiť preč s touto požiadavkou.
Kedy teda môžete očakávať zavedenie GSI cez DSU bez toho, aby ste museli odomknúť bootloader alebo použiť akékoľvek nástroje príkazového riadku? Dúfajme, že čoskoro, ako nám spoločnosť Google spomenula, že museli vyriešiť niekoľko problémov s úvodnými ukážkami vývojárov systému Android 11, kým to všetko začne správne fungovať. V budúcnosti možno očakávať inštaláciu budúcich vývojárskych náhľadov GSI cez DSU bez toho, aby bolo potrebné odomknúť bootloader. Možno, že keď budú sprístupnené ukážky pre vývojárov systému Android 12, budete ho môcť úplne spustiť pomocou nástroja DSU Loader v možnostiach vývojára systému Android 11. Pre vývojárov aplikácií to znamená, že bude existovať ďalší spôsob, ako otestovať svoje aplikácie na fyzickom hardvéri s novou verziou Androidu.