Nye Android 11-enheder understøtter muligvis ikke virtuel A/B for Seamless Updates

Google gik tilbage med at kræve, at OEM'er understøtter virtuel A/B på nye Android 11-enheder, hvilket ville have banet vejen for problemfri opdateringer.

Opdatering 1 (25/01/2021 @ 14:06 ET): Før udgivelsen af ​​Android 11 ser det ud til, at Google er gået tilbage og krævede, at lanceringsenheder understøtter virtuel A/B. Klik her for mere information. Artiklen som offentliggjort den 7. april 2021 er bevaret nedenfor.

Med Android 7.0 Nougat introducerede Google et partitionsskema designet til at fremskynde softwareopdateringer. I Nougat tilføjede Google understøttelse til duplikering af bestemte partitioner, så inaktive partitioner kan blive opdateret i baggrunden og derefter skiftet til aktive med en hurtig genstart. Det her "A/B partition"-opsætning giver mulighed for "sømløse opdateringer" at finde sted på understøttede Android-enheder, ligesom Googles Chrome OS. Google har dog aldrig påbudt brugen af ​​A/B-partitioner, så mange enheder derude, der ikke understøtter problemfri opdateringer. Det kan dog ændre sig med Android 11, da Google gør det obligatorisk for nyligt lancerede enheder at understøtte virtuelle A/B-partitioner.

For lidt baggrund henviser A/B-partitioner til sættet af skrivebeskyttede partitioner, der er duplikeret. Duplikerede partitioner inkluderer typisk system-, leverandør-, boot- og produktpartitionerne. Når telefonen downloader en opdatering, retter opdateringsprogrammet det inaktive sæt af partitioner (én "slot") i baggrunden. Når opdateringen er færdig med at blive anvendt på det inaktive slot, bliver brugeren bedt om at genstarte sin enhed. Når brugeren genstarter sin enhed, bytter den inaktive slot plads med den aktive slot, hvilket afslutter opdateringsprocessen. Den tidligere aktive slot forbliver urørt, hvis der er et problem med at starte den nyligt opdaterede slot. Når den næste opdatering ruller rundt, gentages denne proces. Hvis du er interesseret i en mere teknisk forklaring, se Googles udviklerdokumentation på A/B-partitioner.

I modsætning hertil anvender enheder uden A/B-partitioner, såsom Samsung Galaxy S20, OPPO Find X2 og mange andre, opdateringer gennem en dedikeret opdatering i en gendannelsesproces. Dette sparker brugeren ud af Android og gør dem ude af stand til at bruge deres enhed i flere minutter, hvilket potentielt går glip af vigtige meddelelser, opkald eller sms'er. Google mener, at en forenkling af opdateringsprocessen fører til, at flere mennesker rent faktisk tager en opdatering, når den rulles ud; faktisk i maj 2017, Google fandt det en højere procentdel af Pixel-brugere end Nexus-brugere kørte den seneste sikkerhedsopdatering. Selvfølgelig kan brugeren planlægge opdateringer til at ske, når de ikke aktivt bruger deres enhed, men mange brugere opdaterer simpelthen ikke deres enhed, selv når de bliver bedt om det. Ved ikke at have A/B-partitioner går brugeren desuden glip af en af ​​sine iboende fordele: at beskytte dem mod fejlagtige systemopdateringer.

For eksempel når Xiaomi lancerede først Android 10-opdateringen til Mi A2 Lite opdagede mange brugere, at deres enheder ikke startede. Heldigvis for dem har Mi A2 Lite A/B-partitioner til problemfri opdateringer, så brugere på vores fora fundet at de kunne bruge en fastboot-kommando til at sætte bootloaderen til at starte det uberørte, tidligere aktive sæt af partitioner. Således giver A/B-partitioner ikke kun brugerne en meget hurtigere opdateringsproces, men de fungerer også som en fejlsikker for fejlagtige opdateringer. OEM'er, der ikke har implementeret A/B-partitioner, kan stadig udvikle deres egen måde at beskytte mod OTA fejl, men hvorfor gå igennem de problemer, når denne beskyttelse er en del af designet af A/B skillevægge? Til din reference er her en delvis (og ganske vist forældet) liste over enheder, der understøtter A/B-partitioner for problemfri opdateringer, og her er en tutorial om hvordan du tjekker, om din egen enhed understøtter funktionen.

Det kan virke forvirrende, hvorfor visse OEM'er kan lide Samsung opkræver $1.400 for en smartphone, men tilbyder ikke så smart en funktion. Årsagen koger normalt ned til lagerplads: OEM'er ønsker ikke at ofre et par gigabyte lagerplads for at understøtte problemfri opdateringer. Telefoner som Samsung Galaxy S20 har en ton af forudinstalleret software, så duplikering af partitioner som /system og /product vil føre til, at en masse store filer og applikationer bliver duplikeret. Google formåede at implementere A/B-partitioner uden at ofre for meget på lagerplads takket være et smart trick at omgå problemet med at duplikere massive .odex-filer. En anden grund til, at OEM'er måske har valgt ikke at implementere A/B-partitioner, er omkostningerne: At holde trit med Googles konstante ændringer af Androids partitionsskemaer kræver en masse indsats, som XDA Recognized Developer topjohnwu vil fortælle dig. Medmindre OEM'er er tvunget til det, vil mange ikke gider at ændre det, der allerede virker for dem.

Endelig ser det ud til, at Google er ved at fastlægge loven i Android 11. Ved at tvinge indførelsen af ​​virtuelle A/B-partitioner på nyligt lancerede enheder har de næsten forsikret, at OEM'er bliver nødt til at understøtte problemfri opdateringer til deres enheder i slutningen af ​​2020 og 2021. Som opdaget af XDA Recognized Developer luca020400, Yifan Hong, en softwareingeniør hos Google på Project Treble-teamet, indsendte en tilsagn til AOSP Gerrit med titlen "Kræv Virtual A/B on R-lanceringer." Forpligtelsen opdaterer Vendor Test Suite eller VTS, som er en automatiseret test, som alle enheder skal bestå for at blive betragtet som kompatible med Project Treble. Den nye test kontrollerer, om systemegenskaben "ro.virtual_ab.enabled" er sat til sand og hvis "ro.virtual_ab.retrofit" er indstillet til falsk på enheder med et forsendelses-API-niveau på 30 eller højere. Med andre ord kontrollerer denne test, om en enhed, der starter med Android 11 eller nyere, understøtter virtuelle A/B-partitioner. "Virtuelle" A/B-partitioner blev introduceret med Android 10 sammen med "dynamiske partitioner", som er partitioner, der kan ændres dynamisk. De er det samme koncept som almindelige A/B-partitioner, bortset fra at de frit kan ændres størrelse.

Hvis en enhed, der starter med Android 11, ikke understøtter virtuelle A/B-partitioner, vil den fejle VTS. Hvis enheden fejler VTS, kan den ikke sendes med Google Mobile Services. Med andre ord har Google reelt gjort det påkrævet for OEM'er at understøtte virtuelle A/B-partitioner og i forlængelse heraf sømløse opdateringer.


Opdatering: Virtuel A/B er ikke påkrævet til Android 11

Da vi først rapporterede tilbage i april, at Google kræver, at alle Android 11-lanceringsenheder understøtter virtuel A/B-opdateringsmekanisme, var der en masse spænding, fordi det endelig ville have fået Samsung-telefoner til at have sømløse opdateringer. Desværre viser det sig, at Google besluttede ikke at stille virtuel A/B-support til et krav. Android 11'er Kompatibilitetsdefinitionsdokument (CDD) lyder i øjeblikket "enhedsimplementeringer SKAL understøtte A/B-systemopdateringer" i stedet for "SKAL" understøttelse. Det ser ud til, at Google på et tidspunkt forud for udgivelsen af ​​Android 11 besluttede at gå tilbage med sin beslutning om at kræve virtuel A/B-support, sandsynligvis kl. ordre fra flere OEM'er. Dette sker ret ofte, men formidles aldrig til offentligheden, da kun det endelige udkast til CDD offentliggøres online.