Et nyt projekt kaldet Dynamic Android vil lade udviklere teste AOSP Android Q GSI'er på enhver enhed, der kører Android Q eller nyere.
Tak til Projekt Diskant, har smartphone-enhedsproducenter leveret Android Pie-softwareopdateringer hurtigere, end de var i stand til at gøre det til Android Oreo-opdateringen, i det mindste for flagskibssmartphones. Google ønsker dog ikke kun at se OEM'er høste fordelene ved Project Treble. Selskabet har tidligere udtrykt interesse ved at frigive et generisk systembillede (GSI) af Android Q til udviklere, så de ikke behøver at stole på emulatorer, skal du bruge en cloud-tjeneste, eller vente på en opdatering på deres egen enhed for at teste en app mod det seneste API-niveau. I teorien burde frigivelse af en GSI tillade enhver udvikler med en Project Treble-kompatibel enhed (oprindeligt Android 8.0 Oreo og nyere, men betragtes nu som kun enheder, der lanceres med Android 9 Pie) for at teste den nyeste Android version. Alt, hvad udvikleren skal gøre, er at flashe et systembillede oven på deres eksisterende softwareinstallation – intet behov for en tilpasset gendannelse, opstart eller leverandørbillede.
Der er dog flere problemer med den nuværende GSI-installationsproces. Først skal du have en ulåst bootloader, som er ikke muligt på Huawei- eller Honor-enheder (uden at betale et gebyr), HMD Globals Nokia-enheder (undtagen Nokia 8), eller enheder med amerikansk mobilselskab. Dernæst behandle vil være svært for alle, der ikke er bekendt med blinkende billeder via fastboot. Til sidst, hvis du blinker en GSI nu, skal du slette det interne lager helt, hvilket betyder, at du sandsynligvis vil have en ekstra enhed at teste på. Lige nu er flashing af en GSI kun noget, som OEM'er bruger til at teste Project Treble-kompatibilitet på deres enheder, og derudover appellerer det kun til die-hard brugerdefinerede ROM-entusiaster. Googles nye "Dynamiske Android"-projekt kan se ud til at ændre det.
Dynamisk Android – Test nemt AOSP GSI'er på enhver Android Q-enhed
I de sidste par måneder har Google arbejdet på en måde at opstarte en GSI på uden at skulle låse bootloaderen op. Kort sagt er Google ved at udvikle en app, der har særlige tilladelser, der gør det muligt at downloade en GSI, reservere lagerplads til den og markere GSI'en som bootbar. Der er flere komponenter til dette projekt, så lad os diskutere dem én for én.
Dynamisk Android og Android On Tap
To nye tjenester føjes til Android Q: Dynamic Android og Android On Tap-tjenesterne. Mens Dynamic Android håndterer installationen af en GSI, informerer Android On Tap systemapps med tilbagekald og broadcast-hensigter. For eksempel advarer Android On Tap KeyguardManager om at bede brugeren om at bekræfte en installationsanmodning, hvis enheden er beskyttet af en PIN-kode, adgangskode eller et mønster. AOT advarer også brugeren, når de er startet op i en GSI.
Ifølge beskrivelsen af "DynamicAndroidManager" tilbyder tjenesten en mekanisme til at bruge en ny Android billede midlertidigt." Efter installationen kan enheden genstarte i det nyligt installerede billede med en nyoprettet /data. Genstart i GSI'en returnerer brugeren til det originale systembillede, men det nyligt installerede billede og dets data er blot deaktiveret og slettes ikke. Hvis brugeren vælger at gøre det, kan GSI'en og dens data dog fjernes fuldstændigt.
Kilder: [1], [2], [3], [4]
GSID
GSI-dæmonen tildeler plads i /data-partitionen til at gemme GSI-billedet og dets data og gøre billedet bootbart. GSI'ens metadata gemmes i /metadata, mens selve GSI'en og dens data gemmes i /data/gsi. Som standard tildeler GSID 8 GB brugerdata til den nyligt installerede GSI. Generelt søger GSID efter mindst 40 % ledig plads, før en installation påbegyndes. Endelig forhindrer dæmonen brugeren i at installere en GSI i en GSI af indlysende årsager.
Kilder: [1], [2], [3], [4]
Sikkerhed
Android Verified Boot (AVB) er aktiveret for det nyligt installerede EXT4-systembillede (system_gsi monteret på /system). Google har også implementeret SELinux-politikker for de nye tjenester. Endelig kræver installation af en GSI, at en app har den nye MANAGE_DYNAMIC_ANDROID-tilladelse. Dette er en tilladelse på signaturniveau, hvilket betyder, at appen skal være underskrevet af OEM.
Kilder: [1], [2]
ADB- og Fastboot-kommandoer
GSI'er vil også kunne installeres via nye ADB-kommandoer. Den nye ADB gsi_tool shell-kommando giver brugerne mulighed for at deaktivere, genaktivere, installere og bevare brugerdata, installer og opret brugerdata, installer og slet brugerdata, eller kontroller status for installation.
gsi_tool - command-line tool for installing GSI images.
Usage:
gsi_tool <disable|install|wipe|status> [options]
disable Disable the currently installed GSI.
enable Enable a previously disabled GSI.
installInstall a new GSI. Specify the image sizewith
--gsi-size and the desired userdata size with
--userdata-size (the latter defaults to 8GiB)
--wipe (remove old gsi userdata first)
wipe Completely remove a GSI and its associated data
status Showstatus
To nye fastboot-kommandoer vil blive tilføjet til at styre GSI, selvom fastboot-installationen ikke understøttes, da fastboot ikke kan montere brugerdata.
fastboot gsi wipe
fastboot gsi disable
Kilder: [1], [2]
Hvem vil dette gavne?
Jeg vil gerne sige, at app-udviklere vil kunne drage fordel af Dynamic Android og Android On Tap, men jeg er ikke helt sikker. Selvom Google har udtrykt interesse for netop det, er der ingen garanti for, at denne funktion vil være tilgængelig i alle Android Q-udgivelser fra ikke-Google OEM'er. For at drage fordel af dette på enheden skal softwaren have en GSI-vælger-app, der er signeret med det samme certifikat som ROM. Jeg er heller ikke sikker på, at installation af GSI'er fra ADB vil være mulig uden ADB-rod på grund af SELinux-politikker.Opdatering: En ny begå bekræfter, at ADB root vil være påkrævet for at bruge GSI_tool. Hvis dette ikke er beregnet til, at app-udviklere skal teste deres apps på en ren version af Android, vil det sandsynligvis kun gavne ingeniører fra OEM'er, der ønsker at teste Compatibility Test Suite (CTS) og Vendor Test Suite (VTS) på deres enheder.
Særlig tak til XDA Recognized udvikler luca020400 for hans hjælp i denne artikel.