Google се отказа от изискването на производителите на оригинално оборудване да поддържат виртуален A/B на новите устройства с Android 11, което би проправило пътя за безпроблемни актуализации.
Актуализация 1 (25.01.2021 г. @ 14:06 ET): Преди пускането на Android 11, Google изглежда се отказа от изискването за стартиращи устройства да поддържат виртуален A/B. Щракнете тук за повече информация. Статията, публикувана на 7 април 2021 г., е запазена по-долу.
С Android 7.0 Nougat Google представи схема за разделяне, предназначена да ускори софтуерните актуализации. В Nougat Google добави поддръжка за дублиране на определени дялове, така че неактивните дялове да могат да се актуализират във фонов режим и след това да бъдат заменени с активни с бързо рестартиране. Това Настройката на „A/B дял“ позволява „безпроблемни актуализации“ да се проведе на поддържани устройства с Android, подобно на Chrome OS на Google. Google обаче никога не е налагал използването на A/B дялове, толкова много устройства не поддържат безпроблемни актуализации. Това обаче може да се промени с Android 11, тъй като Google прави задължително за новите устройства да поддържат виртуални A/B дялове.
За малко предистория, A/B дяловете се отнасят до набора от дялове само за четене, които се дублират. Дублираните дялове обикновено включват дяловете на системата, доставчика, зареждането и продукта. Когато телефонът изтегля актуализация, програмата за актуализация коригира неактивния набор от дялове (един „слот“) във фонов режим. След като актуализацията приключи с прилагането към неактивния слот, потребителят получава подкана да рестартира устройството си. Когато потребителят рестартира устройството си, неактивният слот разменя мястото си с активния слот, завършвайки процеса на актуализиране. Предишният активен слот остава недокоснат, ако има проблем със зареждането на току-що актуализирания слот. Когато се появи следващата актуализация, този процес се повтаря. Ако се интересувате от по-техническо обяснение, вижте документацията за разработчици на Google на A/B дялове.
За разлика от тях устройства без A/B дялове, като Samsung Galaxy S20, OPPO Find X2 и много други, прилагат актуализации чрез специален актуализатор в процес на възстановяване. Това изхвърля потребителя от Android и го прави неспособен да използва устройството си за няколко минути, потенциално пропускайки важни известия, обаждания или текстови съобщения. Google вярва, че опростяването на процеса на актуализация води до това, че повече хора действително приемат актуализация, след като бъде пусната; всъщност през май 2017 г. Google откри това по-висок процент от потребителите на Pixel, отколкото потребителите на Nexus, са изпълнявали най-новата актуализация на защитата. Разбира се, потребителят може да планира актуализации, когато не използва активно устройството си, но много потребители просто не актуализират устройството си, дори когато бъдат подканени. В допълнение, като няма A/B дялове, потребителят пропуска едно от присъщите предимства: защитата им от неуспешни системни актуализации.
Например, когато Xiaomi за първи път пусна актуализацията на Android 10 за Mi A2 Lite много потребители откриха, че техните устройства не се зареждат. За тяхно щастие, Mi A2 Lite има A/B дялове за безпроблемни актуализации, така че намерени потребители на нашите форуми че могат да използват команда за бързо зареждане, за да настроят буутлоудъра да зарежда недокоснатия, активен преди това набор от дялове. По този начин A/B дяловете не само предоставят на потребителите много по-бърз процес на актуализиране, но също така действат като предпазител за неуспешни актуализации. OEM производителите, които не са внедрили A/B дялове, все още могат да разработят свой собствен начин за защита срещу OTA неизправности, но защо да търпите тези проблеми, когато тази защита е част от дизайна на A/B прегради? За ваша справка, ето частичен (и несъмнено остарял) списък с устройства, които поддържат A/B дялове за безпроблемни актуализации, а ето и урок за как да проверите дали собственото ви устройство поддържа функцията.
Може да изглежда озадачаващо защо някои OEM производители харесват Samsung таксува $1400 за смартфон, но няма да предложи такава изящна функция. Причината обикновено се свежда до съхранението: OEM производителите не искат да жертват няколко гигабайта място за съхранение, за да поддържат безпроблемни актуализации. Телефони като Samsung Galaxy S20 имат a тон на предварително инсталиран софтуер, така че дублирането на дялове като /system и /product ще доведе до дублиране на много огромни файлове и приложения. Google успя да внедри A/B дялове, без да жертва прекалено много място за съхранение благодарение на хитър трик за да заобиколите проблема с дублирането на масивни .odex файлове. Друга причина производителите на оригинално оборудване може да са избрали да не прилагат A/B дялове е цената: поддържане на Google постоянните промени в схемите за дялове на Android изискват много усилия, тъй като XDA Recognized Developer topjohnwu ще ви кажа. Освен ако производителите на оригинално оборудване не са принудени, много от тях няма да си направят труда да променят това, което вече работи за тях.
И накрая обаче изглежда, че Google налага закона в Android 11. Като наложиха приемането на виртуални A/B дялове на новоизлезли устройства, те почти гарантираха, че OEM производителите ще трябва да поддържат безпроблемни актуализации за своите устройства от края на 2020 г. и 2021 г. Както е забелязано от XDA Recognized Developer luca020400, Ифан Хонг, софтуерен инженер в Google в екипа на Project Treble, изпрати ангажимент към AOSP Gerrit, озаглавен „Изискване на виртуален A/B при стартиране на R." Ангажиментът актуализира Vendor Test Suite или VTS, който е автоматизиран тест, който всички устройства трябва да преминат, за да се считат за съвместими с Project Treble. Новият тест проверява дали системното свойство "ro.virtual_ab.enabled
" е зададено на true и ако "ro.virtual_ab.retrofit
" е зададено на false на устройства с ниво на API за доставка 30 или по-високо. С други думи, този тест проверява дали устройство, стартирано с Android 11 или по-нова версия, поддържа виртуални A/B дялове. „Виртуалните“ A/B дялове бяха въведени с Android 10 заедно с „динамичните дялове“, които са динамично преоразмеряеми дялове. Те са същата концепция като обикновените A/B дялове, с изключение на това, че могат да бъдат свободно преоразмерени.
Ако устройство, което се стартира с Android 11, не поддържа виртуални A/B дялове, тогава то ще се провали с VTS. Ако устройството не изпълни VTS, тогава то не може да се достави с Google Mobile Services. С други думи, Google на практика задължи OEM производителите да поддържат виртуални A/B дялове и като разширение безпроблемни актуализации.
Актуализация: Virtual A/B не се изисква за Android 11
Когато за първи път съобщихме през април, че Google изисква всички стартиращи устройства с Android 11 да поддържат механизъм за виртуална A/B актуализация, имаше много вълнение, защото най-накрая щеше да накара телефоните на Samsung да имат безпроблемни актуализации. За съжаление се оказва, че Google са решили да не направят виртуална A/B поддръжка изискване. Android 11 Документ за дефиниция на съвместимост (CDD) в момента гласи „внедряванията на устройства ТРЯБВА да поддържат A/B системни актуализации“, а не „ТРЯБВА“ поддръжка. Изглежда в някакъв момент преди пускането на Android 11, Google реши да се откаже от решението си да изисква виртуална A/B поддръжка, вероятно на волята на няколко OEM производители. Това се случва доста често, но никога не се съобщава на обществеността, тъй като се публикува само окончателният проект на CDD на линия.