Met Dynamic Android kunnen ontwikkelaars AOSP testen op elk Android Q-apparaat

Met een nieuw project genaamd Dynamic Android kunnen ontwikkelaars AOSP Android Q GSI's testen op elk apparaat met Android Q of hoger.

Dankzij Project TrebleFabrikanten van smartphoneapparaten hebben Android Pie-software-updates sneller geleverd dan ze konden doen voor de Android Oreo-update, althans voor vlaggenschip-smartphones. Google wil echter niet dat alleen OEM's de vruchten plukken van Project Treble. Het bedrijf heeft eerder belangstelling getoond bij het vrijgeven van een Generic System Image (GSI) van Android Q voor ontwikkelaars, zodat ze niet afhankelijk zijn van emulators, gebruik een cloud dienstverlening, of wachten op een update op hun eigen apparaat om een ​​app te testen op het nieuwste API-niveau. In theorie zou het uitbrengen van een GSI elke ontwikkelaar met een Project Treble-compatibel apparaat (oorspronkelijk Android) in staat moeten stellen om te werken 8.0 Oreo en hoger, maar wordt nu beschouwd als alleen apparaten die worden gelanceerd met Android 9 Pie) om de nieuwste Android te testen versie. Het enige wat de ontwikkelaar hoeft te doen is een systeemkopie flashen bovenop de bestaande software-installatie; er is geen aangepaste herstel-, opstart- of leveranciersimage nodig.

Er zijn echter verschillende problemen met het huidige GSI-installatieproces. Ten eerste heb je een ontgrendelde bootloader nodig, die is niet mogelijk op Huawei- of Honor-apparaten (zonder te betalen een vergoeding), de Nokia-apparaten van HMD Global (exclusief de Nokia-8), of apparaten van Amerikaanse providers. Vervolgens de proces zal moeilijk zijn voor iedereen die niet bekend is met het flitsen van afbeeldingen via fastboot. Ten slotte moet je bij het nu flashen van een GSI de interne opslag volledig wissen, wat betekent dat je waarschijnlijk een reserveapparaat nodig hebt om op te testen. Op dit moment is het flashen van een GSI alleen iets dat OEM's gebruiken om de compatibiliteit van Project Treble op hun apparaten te testen, en verder is het alleen aantrekkelijk voor die-hard liefhebbers van custom ROM's. Het nieuwe ‘Dynamic Android’-project van Google lijkt daar misschien verandering in te brengen.

Dynamisch Android: test eenvoudig AOSP GSI's op elk Android Q-apparaat

De afgelopen maanden heeft Google gewerkt aan een manier om een ​​GSI veilig op te starten zonder de bootloader te hoeven ontgrendelen. Kortom, Google ontwikkelt een app die speciale machtigingen heeft waarmee het een GSI kan downloaden, er opslagruimte voor kan reserveren en de GSI als opstartbaar kan markeren. Dit project bestaat uit verschillende componenten, dus laten we ze één voor één bespreken.

Dynamische Android en Android On Tap

Aan Android Q worden twee nieuwe diensten toegevoegd: de Dynamic Android- en Android On Tap-diensten. Terwijl Dynamic Android de installatie van een GSI afhandelt, informeert Android On Tap systeemapps met terugbelverzoeken en uitzendintenties. Android On Tap waarschuwt de KeyguardManager bijvoorbeeld om de gebruiker te vragen een installatieverzoek te bevestigen als het apparaat is beveiligd met een pincode, wachtwoord of patroon. AOT waarschuwt de gebruiker ook wanneer deze in een GSI wordt opgestart.

Volgens de beschrijving voor 'DynamicAndroidManager' biedt de dienst 'een mechanisme om een ​​nieuw Android-apparaat te gebruiken image tijdelijk." Na de installatie kan het apparaat opnieuw opstarten naar de nieuw geïnstalleerde image met een nieuw gemaakte image /data. Als u opnieuw opstart terwijl u zich in de GSI bevindt, keert de gebruiker terug naar het oorspronkelijke systeemimage, maar het nieuw geïnstalleerde image en de bijbehorende gegevens worden alleen uitgeschakeld en niet verwijderd. Als de gebruiker daarvoor kiest, kunnen de GSI en de gegevens ervan echter volledig worden verwijderd.

Bronnen: [1], [2], [3], [4]

GSID

De GSI-daemon wijst ruimte toe in de /data-partitie om de GSI-image en de bijbehorende gegevens op te slaan en om de image opstartbaar te maken. De metadata van de GSI worden opgeslagen in /metadata, terwijl de GSI zelf en zijn gegevens worden opgeslagen in /data/gsi. Standaard wijst GSID 8 GB aan gebruikersgegevens toe voor de nieuw geïnstalleerde GSI. Over het algemeen zoekt GSID naar minimaal 40% vrije ruimte voordat met een installatie wordt begonnen. Tenslotte verhindert de daemon dat de gebruiker een GSI binnen een GSI installeert, om voor de hand liggende redenen.

Bronnen: [1], [2], [3], [4]

Beveiliging

Android Verified Boot (AVB) is ingeschakeld voor de nieuw geïnstalleerde EXT4-systeemimage (system_gsi gekoppeld aan /system). Google heeft ook SELinux-beleid voor de nieuwe diensten geïmplementeerd. Ten slotte vereist de installatie van een GSI dat een app de nieuwe MANAGE_DYNAMIC_ANDROID-machtiging heeft. Dit is toestemming op handtekeningniveau, wat betekent dat de app moet worden ondertekend door de OEM.

Bronnen: [1], [2]

ADB- en Fastboot-opdrachten

GSI's kunnen ook worden geïnstalleerd via nieuwe ADB-opdrachten. Met het nieuwe ADB gsi_tool shell-commando kunnen gebruikers uitschakelen, opnieuw inschakelen, installeren en behouden userdata, installeer en creëer userdata, installeer en wis userdata, of controleer de status van de installatie.

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

Er zullen twee nieuwe fastboot-opdrachten worden toegevoegd om de GSI te beheren, hoewel fastboot-installatie niet wordt ondersteund omdat fastboot geen gebruikersgegevens kan koppelen.

fastboot gsi wipe
fastboot gsi disable

Bronnen: [1], [2]

Wie zal dit ten goede komen?

Ik wil zeggen dat app-ontwikkelaars kunnen profiteren van Dynamic Android en Android On Tap, maar ik ben er niet helemaal zeker van. Hoewel Google daar interesse in heeft getoond, is er geen garantie dat deze functie beschikbaar zal zijn in elke Android Q-release OEM's die niet van Google zijn. Om hiervan op het apparaat te profiteren, heeft de software een GSI picker-app nodig die is ondertekend met hetzelfde certificaat als de ROM. Ik ben er ook niet zeker van dat het installeren van GSI's vanuit ADB mogelijk zal zijn zonder ADB root vanwege het SELinux-beleid.Update: Een nieuwe verbinden bevestigt dat ADB-root vereist is om GSI_tool te gebruiken. Als dit niet bedoeld is voor app-ontwikkelaars om hun apps te testen op een schone versie van Android, dan zal dit waarschijnlijk alleen het geval zijn profiteren van ingenieurs van OEM's die de Compatibility Test Suite (CTS) en Vendor Test Suite (VTS) willen testen op hun apparaten.

Speciale dank aan XDA erkende ontwikkelaar luca020400 voor zijn hulp bij dit artikel.