Este posibil ca noile dispozitive Android 11 să nu accepte A/B virtual pentru actualizări fără întreruperi

Google a dat înapoi la solicitarea OEM-urilor să accepte A/B virtual pe noile dispozitive Android 11, ceea ce ar fi deschis calea pentru actualizări fără întreruperi.

Actualizare 1 (25.01.2021 la 14:06 ET): Înainte de lansarea Android 11, Google pare să fi dat înapoi la necesitatea dispozitivelor de lansare care să accepte A/B virtual. Faceți clic pe AICI pentru mai multe informații. Articolul publicat pe 7 aprilie 2021 este păstrat mai jos.

Cu Android 7.0 Nougat, Google a introdus o schemă de partiții concepută pentru a accelera actualizările software. În Nougat, Google a adăugat suport pentru duplicarea anumitor partiții, astfel încât partițiile inactive să poată fi actualizate în fundal și apoi schimbate la active cu o repornire rapidă. Acest Configurarea „partiției A/B” permite „actualizări fără întreruperi” să aibă loc pe dispozitivele Android acceptate, la fel ca sistemul de operare Chrome de la Google. Cu toate acestea, Google nu a impus niciodată utilizarea partițiilor A/B, atât de multe dispozitive care nu acceptă actualizări fără întreruperi. Cu toate acestea, acest lucru s-ar putea schimba cu Android 11, deoarece Google face obligatoriu ca dispozitivele nou lansate să accepte partiții A/B virtuale.

Pentru un pic de fundal, partițiile A/B se referă la setul de partiții numai pentru citire care sunt duplicate. Partițiile duplicate includ de obicei partițiile de sistem, furnizor, boot și produs. Când telefonul descarcă o actualizare, programul de actualizare corectează setul inactiv de partiții (un „slot”) în fundal. Odată ce actualizarea a terminat de aplicat slotului inactiv, utilizatorului i se solicită să repornească dispozitivul. Când utilizatorul își repornește dispozitivul, slotul inactiv schimbă locul cu slotul activ, terminând procesul de actualizare. Slotul activ anterior este lăsat neatins dacă există o problemă cu pornirea slotului nou actualizat. Când apare următoarea actualizare, acest proces se repetă. Dacă sunteți interesat de o explicație mai tehnică, consultați documentația pentru dezvoltatori Google pe partiţiile A/B.

În schimb, dispozitivele fără partiții A/B, cum ar fi Samsung Galaxy S20, OPPO Find X2 și multe altele, aplică actualizări printr-un program de actualizare dedicat într-un proces de recuperare. Acest lucru scoate utilizatorul din Android și îl face să nu își poată folosi dispozitivul timp de câteva minute, putând pierde notificări importante, apeluri sau mesaje text. Google consideră că simplificarea procesului de actualizare duce la ca mai mulți oameni să accepte o actualizare odată ce aceasta este lansată; de fapt, în mai 2017, Google a găsit asta un procent mai mare de utilizatori Pixel decât utilizatorii Nexus rulau cea mai recentă actualizare de securitate. Desigur, utilizatorul poate programa actualizări pentru a avea loc atunci când nu își folosesc în mod activ dispozitivul, dar mulți utilizatori pur și simplu nu își actualizează dispozitivul chiar și atunci când vi se solicită. În plus, neavând partiții A/B, utilizatorul pierde unul dintre beneficiile sale inerente: protejarea acestora de actualizările de sistem greșite.

De exemplu, când Xiaomi a lansat pentru prima dată actualizarea Android 10 pentru Mi A2 Lite, mulți utilizatori au descoperit că dispozitivele lor nu porneau. Din fericire pentru ei, Mi A2 Lite are partiții A/B pentru actualizări fără întreruperi, deci utilizatorii de pe forumurile noastre au găsit că ar putea folosi o comandă fastboot pentru a seta bootloader-ul să pornească setul neatins, activ anterior de partiții. Astfel, nu numai că partițiile A/B oferă utilizatorilor un proces de actualizare mult mai rapid, dar acționează și ca o siguranță pentru actualizările greșite. Producătorii OEM care nu au implementat partiții A/B își pot proiecta în continuare propriul mod de a se proteja împotriva OTA eșecuri, deși de ce să treci prin acele probleme când această protecție face parte din proiectarea A/B partitii? Pentru referință, iată un parțial (și desigur depășit) lista de dispozitive care acceptă partiții A/B pentru actualizări fără probleme și iată un tutorial despre cum să verificați dacă propriul dispozitiv acceptă funcția.

Poate părea derutant de ce le place anumitor OEM Samsung percepe 1.400 USD pentru un smartphone, dar nu va oferi o funcție atât de ingenioasă. Motivul se rezumă de obicei la stocare: OEM-urile nu doresc să sacrifice câțiva gigaocteți de spațiu de stocare pentru a suporta actualizări fără întreruperi. Telefoanele precum Samsung Galaxy S20 au un tonă de software preinstalat, astfel încât duplicarea partițiilor precum /system și /product va duce la duplicarea multor fișiere și aplicații uriașe. Google a reușit să implementeze partiții A/B fără a sacrifica prea mult spațiul de stocare datorită unui truc inteligent pentru a rezolva problema duplicării fișierelor .odex masive. Un alt motiv pentru care OEM-urile ar fi ales să nu implementeze partițiile A/B este costul: ține pasul cu Google modificările constante ale schemelor de partiții ale Android necesită mult efort, deoarece XDA Recognized Developer topjohnwu iti voi spune. Cu excepția cazului în care producătorii OEM sunt forțați, mulți nu se vor deranja să schimbe ceea ce funcționează deja pentru ei.

În cele din urmă, totuși, Google pare să stabilească legea în Android 11. Forțând adoptarea partițiilor virtuale A/B pe dispozitivele nou lansate, ei aproape s-au asigurat că OEM-urile vor trebui să accepte actualizări fără probleme pentru dispozitivele lor de la sfârșitul anului 2020 și 2021. După cum a observat XDA Recognized Developer luca020400, Yifan Hong, un inginer software la Google din echipa Project Treble, a trimis un angajament către AOSP Gerrit intitulat „Necesită Virtual A/B la lansările R.” Commit-ul actualizează Vendor Test Suite, sau VTS, care este un test automat pe care trebuie să îl treacă toate dispozitivele pentru a fi considerate compatibile cu Project Treble. Noul test verifică dacă proprietatea sistemului "ro.virtual_ab.enabled" este setat la adevărat și dacă "ro.virtual_ab.retrofit„ este setat la false pe dispozitivele cu un nivel API de expediere de 30 sau mai mare. Cu alte cuvinte, acest test verifică dacă un dispozitiv care se lansează cu Android 11 sau o versiune ulterioară acceptă partiții A/B virtuale. Partițiile A/B „virtuale” au fost introduse cu Android 10 alături de „partiții dinamice”, care sunt partiții redimensionabile dinamic. Sunt același concept ca și partițiile obișnuite A/B, cu excepția faptului că pot fi redimensionate liber.

Dacă un dispozitiv care se lansează cu Android 11 nu acceptă partiții A/B virtuale, atunci va eșua VTS. Dacă dispozitivul nu reușește VTS, atunci nu poate fi livrat cu Google Mobile Services. Cu alte cuvinte, Google a impus în mod eficient ca OEM-urile să accepte partiții A/B virtuale și, prin extensie, actualizări fără întreruperi.


Actualizare: A/B virtual nu este necesar pentru Android 11

Când am raportat pentru prima dată în aprilie, că Google cere ca toate dispozitivele de lansare Android 11 să accepte mecanism virtual de actualizare A/B, a fost multă emoție pentru că ar fi făcut, în sfârșit, telefoanele Samsung să aibă actualizări fără întreruperi. Din păcate, se dovedește că Google a decis să nu facă ca suportul A/B virtual să fie o cerință. Android 11 Document de definire a compatibilităţii (CDD) citește în prezent „implementările dispozitivului TREBUIE să accepte actualizări ale sistemului A/B” mai degrabă decât „TREBUIE”. Se pare că, la un moment dat, înainte de lansarea Android 11, Google a decis să renunțe la decizia de a necesita suport virtual A/B, probabil la la cererea mai multor OEM. Acest lucru se întâmplă destul de des, dar nu este niciodată comunicat publicului, deoarece este publicată doar versiunea finală a CDD. pe net.