Google gikk tilbake med å kreve at OEM-er støtter virtuell A/B på nye Android 11-enheter, noe som ville ha banet vei for sømløse oppdateringer.
Oppdatering 1 (25.01.2021 @ 14:06 ET): Før utgivelsen av Android 11 ser det ut til at Google har gått tilbake med å kreve at lanseringsenheter støtter virtuell A/B. Klikk her for mer informasjon. Artikkelen som ble publisert 7. april 2021, er bevart nedenfor.
Med Android 7.0 Nougat introduserte Google et partisjonsskjema designet for å øke hastigheten på programvareoppdateringer. I Nougat la Google til støtte for duplisering av visse partisjoner slik at inaktive partisjoner kan oppdateres i bakgrunnen og deretter byttes til aktive med en rask omstart. Dette "A/B-partisjon"-oppsett gir mulighet for "sømløse oppdateringer" foregå på støttede Android-enheter, omtrent som Googles Chrome OS. Google har imidlertid aldri pålagt bruk av A/B-partisjoner, så mange enheter der ute som ikke støtter sømløse oppdateringer. Det kan imidlertid endre seg med Android 11, ettersom Google gjør det obligatorisk for nylanserte enheter å støtte virtuelle A/B-partisjoner.
For litt bakgrunn refererer A/B-partisjoner til settet med skrivebeskyttede partisjoner som er duplisert. Dupliserte partisjoner inkluderer vanligvis system-, leverandør-, oppstarts- og produktpartisjonene. Når telefonen laster ned en oppdatering, lapper oppdateringsprogrammet det inaktive settet med partisjoner (ett "spor") i bakgrunnen. Når oppdateringen er ferdig brukt på det inaktive sporet, blir brukeren bedt om å starte enheten på nytt. Når brukeren starter enheten på nytt, bytter det inaktive sporet plass med det aktive sporet, og fullfører oppdateringsprosessen. Det tidligere aktive sporet blir stående urørt hvis det er et problem med oppstart av det nylig oppdaterte sporet. Når neste oppdatering ruller rundt, gjentas denne prosessen. Hvis du er interessert i en mer teknisk forklaring, se Googles utviklerdokumentasjon på A/B-partisjoner.
I motsetning til dette, bruker enheter uten A/B-partisjoner, som Samsung Galaxy S20, OPPO Find X2 og mange andre, oppdateringer gjennom en dedikert oppdatering i en gjenopprettingsprosess. Dette kaster brukeren ut av Android og gjør dem ute av stand til å bruke enheten sin i flere minutter, potensielt mangler viktige varsler, anrop eller tekstmeldinger. Google mener at forenkling av oppdateringsprosessen fører til at flere faktisk tar en oppdatering når den rulles ut; faktisk i mai 2017, Google fant det en høyere prosentandel av Pixel-brukere enn Nexus-brukere kjørte den siste sikkerhetsoppdateringen. Selvfølgelig kan brukeren planlegge at oppdateringer skal skje når de ikke aktivt bruker enheten sin, men mange brukere oppdaterer ganske enkelt ikke enheten selv når de blir bedt om det. I tillegg, ved å ikke ha A/B-partisjoner, går brukeren glipp av en av de iboende fordelene: å beskytte dem mot feilaktige systemoppdateringer.
For eksempel når Xiaomi lanserte først Android 10-oppdateringen for Mi A2 Lite oppdaget mange brukere at enhetene deres ikke startet opp. Heldigvis for dem har Mi A2 Lite A/B-partisjoner for sømløse oppdateringer, så brukere på våre forum funnet at de kunne bruke en fastboot-kommando for å sette oppstartslasteren til å starte opp det uberørte, tidligere aktive settet med partisjoner. Dermed gir A/B-partisjoner ikke bare brukere en mye raskere oppdateringsprosess, men de fungerer også som en feilsikker for feilaktige oppdateringer. OEM-er som ikke har implementert A/B-partisjoner kan fortsatt utvikle sin egen måte å beskytte mot OTA feil, men hvorfor gå gjennom det problemet når denne beskyttelsen er en del av utformingen av A/B partisjoner? For din referanse, her er en delvis (og riktignok utdatert) liste over enheter som støtter A/B-partisjoner for sømløse oppdateringer, og her er en veiledning om hvordan sjekke om din egen enhet støtter funksjonen.
Det kan virke rart hvorfor enkelte OEM-er liker Samsung tar 1400 dollar for en smarttelefon, men vil ikke tilby en så smart funksjon. Årsaken koker vanligvis ned til lagring: OEM-er ønsker ikke å ofre noen få gigabyte med lagringsplass for å støtte sømløse oppdateringer. Telefoner som Samsung Galaxy S20 har en tonn av forhåndsinstallert programvare, så duplisering av partisjoner som /system og /product vil føre til at mange enorme filer og applikasjoner dupliseres. Google klarte å implementere A/B-partisjoner uten å ofre for mye på lagringsplass takket være et smart triks for å omgå problemet med å duplisere massive .odex-filer. En annen grunn til at OEM-er kan ha valgt å ikke implementere A/B-partisjoner er kostnadene: Å holde tritt med Googles konstante endringer i Androids partisjonsordninger krever mye innsats, som XDA Recognized Developer topjohnwu vil fortelle deg. Med mindre OEM-er blir tvunget til det, vil mange ikke bry seg om å endre det som allerede fungerer for dem.
Til slutt ser det imidlertid ut til at Google fastsetter loven i Android 11. Ved å tvinge til bruk av virtuelle A/B-partisjoner på nylig lanserte enheter, har de nesten forsikret at OEM-er vil måtte støtte sømløse oppdateringer for enhetene fra slutten av 2020 og 2021. Som oppdaget av XDA Recognized Developer luca020400, Yifan Hong, en programvareingeniør hos Google i Project Treble-teamet, sendte inn en forpliktelse til AOSP Gerrit med tittelen "Krev Virtual A/B on R-lanseringer." Commit oppdaterer Vendor Test Suite, eller VTS, som er en automatisert test som alle enheter må bestå for å anses som kompatible med Project Treble. Den nye testen sjekker om systemegenskapen "ro.virtual_ab.enabled
" er satt til sann og hvis "ro.virtual_ab.retrofit
" er satt til falsk på enheter med et API-nivå for frakt på 30 eller høyere. Med andre ord, denne testen sjekker om en enhet som lanseres med Android 11 eller høyere støtter virtuelle A/B-partisjoner. «Virtuelle» A/B-partisjoner ble introdusert med Android 10 sammen med «dynamiske partisjoner», som er partisjoner som kan endre størrelsen på dynamisk. De er det samme konseptet som vanlige A/B-partisjoner, bortsett fra at de fritt kan endre størrelsen.
Hvis en enhet som starter med Android 11 ikke støtter virtuelle A/B-partisjoner, vil den mislykkes med VTS. Hvis enheten feiler VTS, kan den ikke sendes med Google Mobile Services. Med andre ord har Google effektivt gjort det nødvendig for OEM-er å støtte virtuelle A/B-partisjoner, og i forlengelsen sømløse oppdateringer.
Oppdatering: Virtual A/B ikke nødvendig for Android 11
Da vi først rapporterte tilbake i april at Google krever at alle Android 11-lanseringsenheter støtter virtuell A/B-oppdateringsmekanisme, var det mye spenning fordi det endelig ville ha fått Samsung-telefoner til å ha sømløse oppdateringer. Dessverre viser det seg at Google bestemte seg for ikke å gjøre virtuell A/B-støtte et krav. Android 11 Kompatibilitetsdefinisjonsdokument (CDD) står for øyeblikket "enhetsimplementeringer SKAL støtte A/B-systemoppdateringer" i stedet for "MÅ" støtte. Det ser ut til at Google på et tidspunkt før utgivelsen av Android 11 bestemte seg for å gå tilbake med beslutningen om å kreve virtuell A/B-støtte, sannsynligvis kl. oppdrag fra flere OEM-er. Dette skjer ganske ofte, men blir aldri formidlet til offentligheten da bare det endelige utkastet til CDD publiseres på nett.