Google відмовився від вимоги до OEM-виробників підтримувати віртуальний A/B на нових пристроях Android 11, що відкрило б шлях до безперебійних оновлень.
Оновлення 1 (25.01.2021 о 14:06 за східним часом): Перед випуском Android 11 Google, схоже, відмовився від вимоги до пристроїв запуску підтримувати віртуальний A/B. Натисніть тут для отримання додаткової інформації. Нижче збережено статтю в редакції, опублікованій 7 квітня 2021 року.
З Android 7.0 Nougat Google представив схему розділів, призначену для прискорення оновлення програмного забезпечення. У Nougat Google додав підтримку для дублювання певних розділів, щоб неактивні розділи могли оновлюватися у фоновому режимі, а потім замінюватися на активні за допомогою швидкого перезавантаження. Це Налаштування «розділу A/B» дозволяє здійснювати «плавне оновлення» проводити на підтримуваних пристроях Android, схожих на ОС Chrome від 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 для безперебійного оновлення, тому користувачів на наших форумах знайдено що вони можуть використовувати команду fastboot, щоб налаштувати завантажувач на завантаження недоторканого, раніше активного набору розділів. Таким чином, A/B-розділи не тільки забезпечують користувачам набагато швидший процес оновлення, але вони також діють як захист від невдалих оновлень. Виробники оригінального обладнання, які не реалізували A/B-розділи, все ще можуть розробити власний спосіб захисту від OTA збоїв, хоча навіщо переживати ці проблеми, коли цей захист є частиною дизайну A/B перегородки? Для довідки, ось часткова (і, правда, застаріла) список пристроїв, які підтримують A/B розділи для безперебійного оновлення, і ось навчальний посібник із як перевірити, чи ваш пристрій підтримує цю функцію.
Може здатися незрозумілим, чому деякі виробники оригінального обладнання люблять Samsung бере 1400 доларів за смартфон, але не пропонує такої чудової функції. Зазвичай причина зводиться до сховища: виробники оригінального обладнання не хочуть жертвувати декількома гігабайтами пам’яті для підтримки безперебійних оновлень. Такі телефони, як Samsung Galaxy S20, мають a тонна попередньо встановленого програмного забезпечення, тому дублювання розділів, таких як /system і /product, призведе до дублювання великої кількості файлів і програм. Google вдалося запровадити A/B-розділи, не надто жертвуючи простором для зберігання завдяки хитромудрому трюку щоб вирішити проблему дублювання великих файлів .odex. Ще однією причиною, чому OEM-виробники, можливо, вирішили не впроваджувати A/B-розділи, є вартість: не відставати від Google постійні зміни схем розділів Android вимагають багато зусиль, як визнаний розробник XDA topjohnwu розповість вам. Якщо OEM-виробники не будуть змушені це зробити, багато хто не потурбується про зміну того, що вже працює для них.
Нарешті, Google, схоже, встановлює закон в Android 11. Примусово запровадивши віртуальні A/B-розділи на нещодавно випущених пристроях, вони майже запевнили, що OEM-виробники повинні будуть підтримувати постійні оновлення для своїх пристроїв кінця 2020 і 2021 років. Як помітив XDA Recognized Developer luca020400, Іфань Хонг, інженер-програміст Google із команди Project Treble, надіслав комміт до AOSP Gerrit під назвою "Вимагати віртуального A/B під час запуску R." Комітт оновлює набір тестів постачальника, або 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 фактично зобов’язав виробників комплектного обладнання підтримувати віртуальні розділи 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 онлайн.