Google backade med att kräva att OEM-tillverkare stöder virtuell A/B på nya Android 11-enheter, vilket skulle ha banat väg för sömlösa uppdateringar.
Uppdatering 1 (25/01/2021 @ 14:06 ET): Innan Android 11 släpptes tycks Google ha backat om att kräva att lanseringsenheter stöder virtuell A/B. Klicka här för mer information. Artikeln som publicerades den 7 april 2021 finns bevarad nedan.
Med Android 7.0 Nougat introducerade Google ett partitionsschema utformat för att påskynda programuppdateringar. I Nougat lade Google till stöd för att duplicera vissa partitioner så att inaktiva partitioner kan uppdateras i bakgrunden och sedan bytas till aktiva med en snabb omstart. Detta Inställningen "A/B-partition" tillåter "sömlösa uppdateringar" att äga rum på Android-enheter som stöds, ungefär som Googles Chrome OS. Google har dock aldrig föreskrivit användningen av A/B-partitioner, så många enheter där ute som inte stöder sömlösa uppdateringar. Det kan dock ändras med Android 11, eftersom Google gör det obligatoriskt för nylanserade enheter att stödja virtuella A/B-partitioner.
För lite bakgrund hänvisar A/B-partitioner till uppsättningen skrivskyddade partitioner som är duplicerade. Duplicerade partitioner inkluderar vanligtvis system-, leverantörs-, start- och produktpartitionerna. När telefonen laddar ner en uppdatering patchar uppdateringsprogrammet den inaktiva uppsättningen av partitioner (en "slot") i bakgrunden. När uppdateringen har installerats på den inaktiva kortplatsen uppmanas användaren att starta om sin enhet. När användaren startar om sin enhet byter den inaktiva platsen mot den aktiva platsen, vilket avslutar uppdateringsprocessen. Den tidigare aktiva luckan lämnas orörd om det finns problem med att starta upp den nyligen uppdaterade luckan. När nästa uppdatering rullar runt, upprepas denna process. Om du är intresserad av en mer teknisk förklaring, se Googles utvecklardokumentation på A/B-partitioner.
Däremot applicerar enheter utan A/B-partitioner, som Samsung Galaxy S20, OPPO Find X2 och många andra, uppdateringar genom en dedikerad uppdatering i en återställningsprocess. Detta kastar ut användaren ur Android och gör att de inte kan använda sin enhet under flera minuter, och eventuellt saknar viktiga aviseringar, samtal eller sms. Google tror att en förenkling av uppdateringsprocessen leder till att fler faktiskt tar en uppdatering när den väl rullas ut; faktiskt, i maj 2017, Google hittade det en högre andel Pixel-användare än Nexus-användare körde den senaste säkerhetsuppdateringen. Naturligtvis kan användaren schemalägga uppdateringar när de inte aktivt använder sin enhet, men många användare uppdaterar helt enkelt inte sin enhet även när de uppmanas. Dessutom, genom att inte ha A/B-partitioner, går användaren miste om en av dess inneboende fördelar: att skydda dem från felaktiga systemuppdateringar.
Till exempel när Xiaomi rullade först ut Android 10-uppdateringen för Mi A2 Lite upptäckte många användare att deras enheter inte startade. Lyckligtvis för dem har Mi A2 Lite A/B-partitioner för sömlösa uppdateringar, så användare på våra forum hittade att de kunde använda ett fastboot-kommando för att ställa in starthanteraren att starta den orörda, tidigare aktiva uppsättningen av partitioner. Således ger inte bara A/B-partitioner användarna en mycket snabbare uppdateringsprocess, utan de fungerar också som en felsäker för felaktiga uppdateringar. OEM-tillverkare som inte har implementerat A/B-partitioner kan fortfarande utveckla sitt eget sätt att skydda sig mot OTA misslyckanden, men varför gå igenom det där problemet när detta skydd är en del av designen av A/B partitioner? För din referens, här är en partiell (och visserligen föråldrad) lista över enheter som stöder A/B-partitioner för sömlösa uppdateringar, och här är en handledning om hur du kontrollerar om din egen enhet stöder funktionen.
Det kan verka förbryllande varför vissa OEM-tillverkare gillar Samsung tar 1 400 $ för en smartphone men kommer inte att erbjuda en så snygg funktion. Anledningen handlar vanligtvis om lagring: OEM-tillverkare vill inte offra några gigabyte lagringsutrymme för att stödja sömlösa uppdateringar. Telefoner som Samsung Galaxy S20 har en ton av förinstallerad programvara, så att duplicera partitioner som /system och /product kommer att leda till att många enorma filer och applikationer dupliceras. Google lyckades implementera A/B-partitioner utan att offra alltför mycket på lagringsutrymme tack vare ett smart knep för att komma runt problemet med att duplicera massiva .odex-filer. En annan anledning till att OEM-tillverkare kan ha valt att inte implementera A/B-partitioner är kostnaden: att hålla jämna steg med Googles ständiga förändringar av Androids partitionsscheman kräver mycket ansträngning, som XDA Recognized Developer topjohnwu ska berätta för dig. Om inte OEM-tillverkare tvingas göra det kommer många inte att bry sig om att ändra det som redan fungerar för dem.
Äntligen verkar Google dock fastställa lagen i Android 11. Genom att tvinga fram virtuella A/B-partitioner på nylanserade enheter har de nästan försäkrat att OEM-tillverkare måste stödja sömlösa uppdateringar för sina enheter från slutet av 2020 och 2021. Som upptäckts av XDA Recognized Developer luca020400, Yifan Hong, en mjukvaruingenjör på Google i Project Treble-teamet, lämnade in ett åtagande till AOSP Gerrit med titeln "Kräv virtuell A/B på R-lanseringar." Bekräftelsen uppdaterar Vendor Test Suite, eller VTS, som är ett automatiskt test som alla enheter måste klara för att anses vara kompatibla med Project Treble. Det nya testet kontrollerar om systemegenskapen "ro.virtual_ab.enabled
" är satt till sant och om "ro.virtual_ab.retrofit
" är inställt på falskt på enheter med en leverans API-nivå på 30 eller högre. Med andra ord, det här testet kontrollerar om en enhet som startar med Android 11 eller högre stöder virtuella A/B-partitioner. "Virtuella" A/B-partitioner introducerades med Android 10 tillsammans med "dynamiska partitioner", som är dynamiskt storleksändringsbara partitioner. De är samma koncept som vanliga A/B-partitioner förutom att de kan ändras fritt.
Om en enhet som startar med Android 11 inte stöder virtuella A/B-partitioner, kommer den att misslyckas med VTS. Om enheten misslyckas med VTS kan den inte levereras med Google Mobile Services. Med andra ord, Google har faktiskt gjort det nödvändigt för OEM-tillverkare att stödja virtuella A/B-partitioner, och i förlängningen sömlösa uppdateringar.
Uppdatering: Virtual A/B krävs inte för Android 11
När vi först rapporterade tillbaka i april att Google kräver att alla lanseringsenheter för Android 11 stöder virtuell A/B-uppdateringsmekanism, det var mycket spänning eftersom det äntligen skulle ha fått Samsung-telefoner att ha sömlösa uppdateringar. Tyvärr visar det sig att Google beslutat att inte ställa virtuellt A/B-stöd till ett krav. Android 11:or Kompatibilitetsdefinitionsdokument (CDD) står för närvarande "enhetsimplementeringar SKA stödja A/B-systemuppdateringar" snarare än "MÅSTE" stöd. Det verkar som att Google vid någon tidpunkt före lanseringen av Android 11 beslutat att gå tillbaka sitt beslut att kräva virtuell A/B-support, troligen kl. på uppdrag av flera OEM-tillverkare. Detta händer ganska ofta men förmedlas aldrig till allmänheten eftersom endast det slutliga utkastet till CDD publiceras uppkopplad.