Google kwam terug op het eisen dat OEM's virtuele A/B ondersteunen op nieuwe Android 11-apparaten, wat de weg zou hebben vrijgemaakt voor naadloze updates.
Update 1 (25-01-2021 om 14:06 ET): Vóór de release van Android 11 lijkt Google terug te zijn gekomen op het eisen van lanceringsapparaten die virtuele A/B ondersteunen. Klik hier voor meer informatie. Het artikel zoals gepubliceerd op 7 april 2021, is hieronder bewaard gebleven.
Met Android 7.0 Nougat introduceerde Google een partitieschema dat is ontworpen om software-updates te versnellen. In Nougat heeft Google ondersteuning toegevoegd voor het dupliceren van bepaalde partities, zodat inactieve partities op de achtergrond kunnen worden bijgewerkt en vervolgens naar actief kunnen worden gewisseld door snel opnieuw op te starten. Dit De configuratie van de "A/B-partitie" maakt "naadloze updates" mogelijk zal plaatsvinden op ondersteunde Android-apparaten, net zoals Google's Chrome OS. Google heeft echter nooit het gebruik van A/B-partities verplicht gesteld, omdat er zoveel apparaten zijn die geen naadloze updates ondersteunen. Dat zou echter kunnen veranderen met Android 11, omdat Google het verplicht stelt voor nieuw gelanceerde apparaten om virtuele A/B-partities te ondersteunen.
Voor wat achtergrondinformatie: A/B-partities verwijzen naar de set alleen-lezen partities die worden gedupliceerd. Gedupliceerde partities omvatten doorgaans de systeem-, leveranciers-, opstart- en productpartities. Wanneer de telefoon een update downloadt, patcht de updater de inactieve set partities (één "slot") op de achtergrond. Zodra de update is toegepast op het inactieve slot, wordt de gebruiker gevraagd het apparaat opnieuw op te starten. Wanneer de gebruiker zijn apparaat opnieuw opstart, wisselt het inactieve slot van plaats met het actieve slot, waardoor het updateproces wordt voltooid. Het voorheen actieve slot blijft onaangeroerd als er een probleem is met het opstarten van het nieuw bijgewerkte slot. Wanneer de volgende update plaatsvindt, wordt dit proces herhaald. Als u geïnteresseerd bent in een meer technische uitleg, raadpleeg de ontwikkelaarsdocumentatie van Google op A/B-partities.
Apparaten zonder A/B-partities, zoals de Samsung Galaxy S20, OPPO Find X2 en vele anderen, passen daarentegen updates toe via een speciale updater in een herstelproces. Hierdoor wordt de gebruiker uit Android verwijderd en kan hij of zij het apparaat enkele minuten niet gebruiken, waardoor mogelijk belangrijke meldingen, oproepen of sms-berichten worden gemist. Google is van mening dat het vereenvoudigen van het updateproces ertoe leidt dat meer mensen daadwerkelijk een update nemen zodra deze uitrolt; in feite, in mei 2017, Google heeft dat gevonden een hoger percentage Pixel-gebruikers dan Nexus-gebruikers voerden de nieuwste beveiligingsupdate uit. Natuurlijk kan de gebruiker plannen dat er updates plaatsvinden wanneer hij zijn apparaat niet actief gebruikt, maar veel gebruikers updaten hun apparaat eenvoudigweg niet, zelfs niet wanneer daarom wordt gevraagd. Bovendien mist de gebruiker, door geen A/B-partities te hebben, een van de inherente voordelen ervan: bescherming tegen mislukte systeemupdates.
Bijvoorbeeld wanneer Xiaomi rolde eerst de Android 10-update uit voor de Mi A2 Lite ontdekten veel gebruikers dat hun apparaten niet opstartten. Gelukkig voor hen heeft de Mi A2 Lite A/B-partities voor naadloze updates gebruikers op onze forums gevonden dat ze een fastboot-opdracht konden gebruiken om de bootloader in te stellen om de onaangeroerde, voorheen actieve set partities op te starten. A/B-partities bieden gebruikers dus niet alleen een veel sneller updateproces, maar fungeren ook als een failsafe voor mislukte updates. OEM's die geen A/B-partities hebben geïmplementeerd, kunnen nog steeds hun eigen manier bedenken om bescherming te bieden tegen OTA mislukkingen, maar waarom zou je die moeite doen als deze bescherming deel uitmaakt van het ontwerp van A/B partities? Ter referentie: hier is een gedeeltelijke (en weliswaar verouderde) lijst met apparaten die A/B-partities ondersteunen voor naadloze updates, en hier is een tutorial over hoe u kunt controleren of uw eigen apparaat de functie ondersteunt.
Het lijkt misschien een raadsel waarom bepaalde OEM's dit leuk vinden Samsung vraagt $ 1.400 voor een smartphone, maar biedt niet zo'n handige functie. De reden komt meestal neer op opslag: OEM's willen geen paar gigabytes aan opslagruimte opofferen om naadloze updates te ondersteunen. Telefoons zoals de Samsung Galaxy S20 hebben een ton van vooraf geïnstalleerde software, dus het dupliceren van partities zoals /system en /product zal ertoe leiden dat veel grote bestanden en applicaties worden gedupliceerd. Google is erin geslaagd A/B-partities te implementeren zonder al te veel opslagruimte op te offeren dankzij een slimme truc om het probleem van het dupliceren van enorme .odex-bestanden te omzeilen. Een andere reden waarom OEM's ervoor hebben gekozen geen A/B-partities te implementeren zijn de kosten: het bijhouden van die van Google voortdurende wijzigingen in de partitieschema's van Android vergen veel inspanning, aldus XDA Recognized Developer topjohnwu zal je vertellen. Tenzij OEM's daartoe worden gedwongen, zullen velen niet de moeite nemen om te veranderen wat al voor hen werkt.
Maar uiteindelijk lijkt Google de wet vast te leggen in Android 11. Door de acceptatie van virtuele A/B-partities op nieuw gelanceerde apparaten af te dwingen, zijn ze er vrijwel zeker van dat OEM's naadloze updates voor hun apparaten van eind 2020 en 2021 zullen moeten ondersteunen. Zoals opgemerkt door XDA Recognized Developer luca020400, heeft Yifan Hong, een software-ingenieur bij Google in het Project Treble-team, een commit ingediend bij de AOSP Gerrit met de titel 'Vereist virtuele A/B bij R-lanceringen." De commit werkt de Vendor Test Suite of VTS bij, een geautomatiseerde test die alle apparaten moeten doorstaan om als compatibel te worden beschouwd met Project Treble. De nieuwe test controleert of de systeemeigenschap "ro.virtual_ab.enabled
" is ingesteld op waar en als "ro.virtual_ab.retrofit
" is ingesteld op false op apparaten met een verzend-API-niveau van 30 of hoger. Met andere woorden: deze test controleert of een apparaat dat wordt gestart met Android 11 of hoger virtuele A/B-partities ondersteunt. "Virtuele" A/B-partities werden geïntroduceerd met Android 10 naast "dynamische partities", die dynamisch aanpasbare partities zijn. Ze hebben hetzelfde concept als gewone A/B-partities, behalve dat de grootte ervan vrijelijk kan worden aangepast.
Als een apparaat dat opstart met Android 11 geen virtuele A/B-partities ondersteunt, mislukt VTS. Als het apparaat geen VTS-status heeft, kan het niet worden verzonden met Google Mobile Services. Met andere woorden: Google heeft het feitelijk verplicht gesteld dat OEM's virtuele A/B-partities en bij uitbreiding naadloze updates ondersteunen.
Update: Virtuele A/B niet vereist voor Android 11
Toen we in april voor het eerst meldden dat Google vereist dat alle Android 11-lanceerapparaten de virtueel A/B-updatemechanisme, er was veel opwinding omdat Samsung-telefoons eindelijk naadloze updates zouden hebben gekregen. Helaas blijkt dat Google heeft besloten om virtuele A/B-ondersteuning niet verplicht te stellen. Android 11's Compatibiliteitsdefinitiedocument (CDD) luidt momenteel "apparaatimplementaties MOETEN A/B-systeemupdates ondersteunen" in plaats van "MOET" ondersteuning. Het lijkt erop dat Google ergens vóór de release van Android 11 heeft besloten terug te komen op zijn besluit om virtuele A/B-ondersteuning te eisen, waarschijnlijk op in opdracht van verschillende OEM's. Dit gebeurt vrij vaak, maar wordt nooit aan het publiek bekendgemaakt, aangezien alleen de definitieve versie van de CDD wordt gepubliceerd online.