Cum poate Android Go să ajute telefoanele Android mai vechi să ruleze Android 8.1 Oreo

Android Go este versiunea redusă de la Google a Android Oreo 8.1 pentru dispozitive noi, cu RAM scăzută. După cum se dovedește, poate ajuta la dezvoltarea ROM personalizată și pe dispozitivele mai vechi.

Android Go este versiunea redusă de Android de la Google, bazată pe Android 8.1 Oreo și își propune să fie o versiune optimizată de Android pentru dispozitive low-end cu 1 GB de RAM sau mai puțin. A fost anunțat în luna mai trecută la conferința pentru dezvoltatori Google I/O și în cele din urmă, mai multe detalii au fost dezvăluite în decembrie, mai târziu în acel an. S-a spus că ar fi făcut pentru următoarea generație de dispozitive entry-level, pentru a se asigura că cei din țările în curs de dezvoltare pot folosi în continuare smartphone-uri funcționale pentru a accesa internetul și utilizați aplicații.

Go are o mare varietate de optimizări și îmbunătățiri ale performanței, inclusiv ocuparea cu 50% mai puțin spațiu de stocare decât o instalare medie Android Oreo. Datorită Android Runtime (ART) și optimizărilor kernelului, un dispozitiv care rulează Android Go va rula, în medie, cu 15% mai rapid decât la o instalare obișnuită a Android Oreo pe același dispozitiv. Aceste optimizări sunt realizate printr-o serie de configurații de construcție specializate realizate de Google, pe care le vom explica mai târziu.

Android Go beneficiază și de aplicații speciale „Go”, precum Files Go, YouTube Go și Google Maps Go. Acestea sunt versiuni ușoare ale aplicațiilor realizate de Google, care au cerințe reduse pentru a rula mai eficient. Aceasta înseamnă că cei cu dispozitive Android Go se pot bucura de cele mai multe dintre aceleași beneficii pe care le pot beneficia și utilizatorii obișnuiți de Android Oreo, făcând utilizarea suitei de aplicații Google fără a fi nevoie să cheltuiți mulți bani pentru un buget emblematic sau chiar puțin mai scump dispozitiv.

Totul este legat de extinderea pieței de către Google. Totuși, se pune întrebarea că, dacă Android Go constă în principal dintr-o configurație de construcție și o suită de aplicații Google optimizate, pot dezvoltatorii să își creeze propriile versiuni pentru Android Go? În scurt, da putem.

Câțiva dezvoltatori LineageOS construiesc deja ROM-uri personalizate optimizate pentru Android Go

Asistăm deja la o oarecare acceptare în Android Go de la unii dezvoltatori de ROM personalizate, cum ar fi de către XDA Recognized Developer AdrianDC, cu munca sa pe LineageOS 15.1 cu configurații de construcție Android Go pentru mai multe telefoane vechi Sony. Dispozitivele în cauză sunt Sony Xperia SP, Sony Xperia T, Sony Xperia V și Sony Xperia TX. Toate aceste dispozitive datează din anii 2012 și 2013, dar vor primi LineageOS 15.1 bazat pe Android 8.1 Oreo folosind un Android Configurația Go build, care poate permite dispozitivelor să ruleze aplicațiile Google „Go” în mod fluid, în cazul în care un set de Gapps Android Go va fi în cele din urmă eliberată.

Orice întreținător individual de LOS ar trebui să poată introduce o versiune configurată Android Go, aceasta fiind un set de configurații de construcție și alte optimizări. Ceea ce înseamnă aceasta este că cei care ar fi achiziționat Sony Xperia T, de exemplu, un dispozitiv care rulează Android 4.0.4 Ice Cream Sandwich la lansare, vor putea folosi un versiune mai bine optimizată a Android 8.1 Oreo pe dispozitiv, utilizând aplicații precum YouTube Go și Google Maps Go. Nu va funcționa la niveluri emblematice de performanță, dar ar trebui să fie utilizabil— în special pentru un dispozitiv care datează din 2012.


Cum Android Go poate ajuta telefoanele Android mai vechi să ruleze Android Oreo

Configurațiile de construcție pe Android sunt un set de parametri care se referă la diferite aspecte ale sistemului Android care sunt aplicate la compilarea imaginii sistemului pentru a flash-o pe un dispozitiv. De obicei, acestea schimbă modul în care se comportă sistemul și din care provin principalele optimizări ale Android Go aceste configurații de construcție.

Configurațiile de compilare utilizate pentru compilarea Android Go.

Am vorbit cu XDA Recognized Developer joshuous, care m-a ajutat foarte mult să înțeleg schimbările care au avut loc — ceea ce face cu adevărat Android Go să funcționeze. Unele dintre aceste configurații de compilare nu pot fi modificate fără recompilare și fac parte din schema ROM-ului în sine. Acestea sunt steagurile cu majuscule.

Toate aceste steaguri, totuși, se referă la multe aspecte diferite ale Android legate de stocare și utilizarea memoriei. Acestea includ gestionarea automată a stocării, ucigașul cu memorie scăzută pentru Android, dex (dalvik exfișiere editabile) optimizator și limite RAM pentru rularea aplicațiilor. Fișierele APK constau din aceste fișiere DEX, așa că, într-un fel, este posibil să ne gândim la un fișier APK ca un simplu Fișier ZIP care conține o mulțime de fișiere .dex, care este de fapt ceea ce Android rulează atunci când execută un aplicarea. Gestionarea automată a stocării va fi controlată în schimb de aplicația Files Go, nu de sistemul Android.

Android Go Utilities Modul RAM scăzut al Android

În Android 4.4 KitKat, Google a introdus un nou steag numit „berbec jos", care a avut ca scop suportarea dispozitivelor cu 512 MB de RAM. Face o serie de optimizări sistemului. Aceste modificări sunt extrem de benefice pentru dispozitivele cu RAM mai scăzută.

Gestionare îmbunătățită a memoriei

  • Configurații validate ale nucleului pentru economisirea memoriei: Schimbați la ZRAM.
  • Omorâți procesele memorate în cache dacă sunt pe cale să nu fie stocate în cache și să fie prea mari.
  • Nu permiteți ca serviciile mari să se reintroducă în Serviciile A (astfel încât să nu poată determina uciderea lansatorului).
  • Ucideți procesele (chiar și cele de obicei inutilizabile, cum ar fi actualul IME) care devin prea mari în întreținerea inactivă.
  • Serializați lansarea serviciilor de fundal.
  • Utilizarea reglată a memoriei dispozitivelor cu memorie RAM scăzută: niveluri de ajustare mai stricte ale epuizării memoriei (OOM), cache-uri grafice mai mici etc.

Aceste modificări de mai sus asigură practic că sistemul se asigură că folosește RAM comprimată acolo unde este posibil, prin utilizarea ZRAM. ZRAM este practic un RAMdisk (un mediu de stocare care folosește RAM, mult mai rapid decât utilizarea stocării obișnuite pe dispozitiv) ca fișier de schimb. Un fișier de schimb este utilizat atunci când utilizarea RAM este mare și aplicațiile încă necesită memorie. Acest lucru este mult, mult mai lent decât RAM și ar trebui evitat acolo unde este posibil. În esență, pur și simplu comprimă conținutul memoriei.

Memoria de sistem redusă

  • Procesele system_server și SystemUI au fost tăiate (s-au salvat câțiva MB).
  • Preîncărcați cache-urile dex în Dalvik (s-au salvat câțiva MB).
  • Opțiune validată JIT-off (economisește până la 1,5 MB per proces).
  • Reducerea supraîncărcării cache a fonturilor pe proces.
  • Introdus ArrayMap/ArraySet și utilizat pe scară largă în cadru ca înlocuitor cu amprentă mai ușoară pentru HashMap/HashSet.

Ceea ce se întâmplă în mare parte aici este doar un consum redus de memorie de la diferite procese care rulează pe dispozitiv, pentru a fi cât mai conservator posibil. Serviciile esențiale de sistem au fost eliminate pentru a utiliza cât mai puțină memorie posibil în fundal, deoarece fiecare megabyte de RAM este important.

Android Go utilizează un ucigaș de memorie scăzut modificat și optimizări dex

Având în vedere că Android Go este destinat în principal dispozitivelor cu 1 GB de RAM sau mai puțin, va trebui să existe un management mai agresiv al memoriei. Android Go modifică Low Memory Killer (LMK) în câteva moduri diferite. În primul rând, atunci când o cantitate mare de RAM este epuizată, ucigașul de memorie scăzută trece la un "presiune critică" stat. Acest lucru se datorează faptului că atunci când utilizarea memoriei este mare, sistemul va deveni lent din cauza încercării în mod constant de a accesa un fișier de schimb de pe stocarea dispozitivului. Menținerea liberă a memoriei RAM va preveni nevoia sistemului de a utiliza acest fișier de schimb și va preveni distrugerea memoriei. Deplasarea memoriei are loc atunci când memoria dispozitivului este plină și trebuie să paginați în mod constant fișierul de schimb în spațiul de stocare al dispozitivului, degradând puternic performanța.

Serviciile și serviciile WiFi sunt setate la „viteza-profil," ceea ce înseamnă că metodele selectate din aceste servicii sunt compilate Ahead-of-Time (AOT). (O metodă se referă la un set de cod care poate fi apelat în orice moment după nume.) Acest lucru reduce utilizarea RAM și stocare, deoarece sistemul Android nu va trebui să recompileze continuu serviciile esențiale care rulează pe dispozitiv. Între timp, APK-urile partajate sunt setate la „accelerează”, ceea ce este conceput pentru a oferi o viață suplimentară a bateriei și cicluri suplimentare ale procesorului prin optimizarea instrucțiunilor dex pentru a obține performanțe mai bune.

În ceea ce privește optimizările dex, Android Go face destul de multe. Pentru început, după 10 zile va fi downgrade la o aplicație dacă nu este folosit pentru a economisi spațiu. Retrogradarea aici nu se referă la scăderea numărului real al versiunii aplicației, ci mai degrabă înseamnă că dalvik_cache pentru aplicație va fi șters. Cache-ul Dalvik este folosit astfel încât dispozitivul să nu fie nevoie să recompileze aplicații, în schimb, compilează doar cele mai necesare părți ale acestuia și le pune în cache. Restul este compilat folosind compilatorul Just in Time (JIT) atunci când aplicația este rulată. Dacă aplicația nu este utilizată timp de 10 zile, totuși, atunci părțile esențiale ale aplicației care sunt pre-compilate sunt, de asemenea, eliminate. Acest lucru se face pentru a elibera cât mai mult spațiu posibil. O altă modificare simplă este aceea de a nu permite folosirii RAM a unei aplicații să depășească 256 MB, astfel încât o aplicație să nu poată folosi toată memoria RAM de pe dispozitiv.


Este Android Go viitorul dezvoltării ROM personalizate pe dispozitive low-end?

În prezent, nu știm răspunsul la aceasta, dar viitorul pare strălucitor pentru dezvoltarea ROM personalizată pe dispozitive mai vechi. Pot exista și alte probleme în obținerea unei versiuni mai noi de Android care rulează pe un dispozitiv, dar, teoretic, o actualizare la un Android Go mai optimizat bazat pe Android Oreo ar trebui să faceți un dispozitiv mai vechi, low-end să funcționeze mai bine.