Hoe Android Go oudere Android-telefoons kan helpen Android 8.1 Oreo te gebruiken

Android Go is Google's uitgeklede versie van Android Oreo 8.1 voor nieuwe apparaten met weinig RAM. Het blijkt dat het ook kan helpen bij de ontwikkeling van aangepaste ROM's op oudere apparaten.

Android Go is de uitgeklede versie van Android van Google, gebaseerd op Android 8.1 Oreo, en heeft tot doel een geoptimaliseerde versie van Android te zijn voor goedkope apparaten met 1 GB RAM of lager. Het werd afgelopen mei aangekondigd tijdens de Google I/O Developer-conferentie, en uiteindelijk werden later dat jaar in december meer details onthuld. Er werd gezegd dat het gemaakt was voor de volgende generatie instapapparaten, om ervoor te zorgen dat die in ontwikkelingslanden kunnen nog steeds gebruik maken van functionerende smartphones om toegang te krijgen tot internet en gebruik apps.

Go heeft een breed scala aan prestatie-optimalisaties en verbeteringen, waaronder het in beslag nemen van 50 procent minder opslagruimte dan een gemiddelde Android Oreo-installatie. Dankzij Android Runtime (ART) en kerneloptimalisaties zal een apparaat met Android Go gemiddeld 15 procent sneller draaien dan een gewone Android Oreo-installatie op hetzelfde apparaat. Deze optimalisaties worden gemaakt via een aantal gespecialiseerde buildconfiguraties gemaakt door Google, die we later zullen uitleggen.

Android Go profiteert ook van speciale "Go" -applicaties, zoals Bestanden gaan, YouTube Go En Google Maps Go. Dit zijn lichtgewicht versies van applicaties van Google, die minder eisen stellen om efficiënter te werken. Dit betekent dat mensen met Android Go-apparaten kunnen genieten van de meeste van dezelfde voordelen als gewone Android Oreo-gebruikers gebruik van de applicatiesuite van Google zonder veel geld uit te geven aan een vlaggenschip of zelfs een iets duurder budget apparaat.

Het gaat erom dat Google zijn markt uitbreidt. Toch rijst de vraag of ontwikkelaars hun eigen builds van Android Go kunnen maken als Android Go grotendeels bestaat uit een buildconfiguratie en een reeks geoptimaliseerde Google-apps? In het kort, Ja dat kunnen we.

Een paar LineageOS-ontwikkelaars bouwen al voor Android Go geoptimaliseerde aangepaste ROM's

We zien al een zekere acceptatie in Android Go door sommige aangepaste ROM-ontwikkelaars, zoals door XDA Recognized Developer AdrianDC, met zijn werk aan LineageOS 15.1 met Android Go-buildconfiguraties voor verschillende oude Sony-telefoons. Het gaat om de Sony Xperia SP, Sony Xperia T, Sony Xperia V en de Sony Xperia TX. Deze apparaten dateren allemaal uit de jaren 2012 en 2013, maar ontvangen toch LineageOS 15.1 gebaseerd op Android 8.1 Oreo met behulp van een Android Ga een configuratie bouwen, waardoor de apparaten mogelijk Google 'Go'-apps vloeiend kunnen uitvoeren, mocht er uiteindelijk een Android Go-set Gapps komen uitgegeven.

Elke individuele LOS-onderhouder zou een voor Android Go geconfigureerde build moeten kunnen introduceren, bestaande uit een reeks buildconfiguraties en andere optimalisaties. Wat dit betekent is dat degenen die bijvoorbeeld de Sony Xperia T hebben gekocht, een apparaat met Android 4.0.4 Ice Cream Sandwich bij de lancering, een beter geoptimaliseerde build van Android 8.1 Oreo op het toestel, waarbij gebruik wordt gemaakt van applicaties als YouTube Go en Google Maps Go. Het zal niet op topprestatieniveaus draaien, maar het zou zo moeten zijn bruikbaar—vooral voor een apparaat dat dateert uit 2012.


Hoe Android Go oudere Android-telefoons kan helpen Android Oreo te gebruiken

Build-configuraties op Android zijn een reeks parameters die betrekking hebben op verschillende aspecten van het Android-systeem die worden toegepast bij het compileren van de systeemimage om op een apparaat te flashen. Meestal veranderen deze hoe het systeem zich gedraagt, en daar komen de belangrijkste optimalisaties van Android Go vandaan deze buildconfiguraties.

De buildconfiguraties die worden gebruikt voor het compileren van Android Go.

Ik sprak met XDA Recognized Developer lekker, die mij enorm heeft geholpen de veranderingen te begrijpen die plaatsvonden – wat Android Go echt doet werken. Sommige van deze buildconfiguraties kunnen niet worden gewijzigd zonder opnieuw te compileren, en maken deel uit van de blauwdruk van de ROM zelf. Dit zijn de vlaggen met volledige hoofdletters.

Al deze vlaggen hebben echter betrekking op veel verschillende aspecten van Android met betrekking tot opslag en geheugengebruik. Deze omvatten automatisch opslagbeheer, Android's geheugenmoordenaar met weinig geheugen, de dex (Dalvik executable bestanden) optimizer en RAM-limieten voor het uitvoeren van apps. APK-bestanden bestaan ​​uit deze DEX-bestanden, dus in zekere zin is het mogelijk om een ​​APK-bestand eenvoudigweg te zien als een ZIP-bestand met veel .dex-bestanden, wat eigenlijk is wat Android uitvoert wanneer het een .dex-bestand uitvoert sollicitatie. Automatisch opslagbeheer wordt in plaats daarvan beheerd door de Files Go-applicatie, niet door het Android-systeem.

Android Go-hulpprogramma's De lage RAM-modus van Android

In Android 4.4 KitKat introduceerde Google een nieuwe vlag genaamd "lage ram", die bedoeld was om apparaten met 512 MB RAM te ondersteunen. Het brengt een aantal optimalisaties aan het systeem door. Deze veranderingen zijn enorm gunstig voor apparaten met een lager RAM-geheugen.

Verbeterd geheugenbeheer

  • Gevalideerde geheugenbesparende kernelconfiguraties: Wissel naar ZRAM.
  • Dood in de cache opgeslagen processen als deze niet meer in de cache worden opgeslagen en te groot zijn.
  • Sta niet toe dat grote services zichzelf terug in A Services plaatsen (zodat ze er niet voor kunnen zorgen dat de launcher wordt gedood).
  • Dood processen (zelfs normaal gesproken niet te vernietigen processen zoals de huidige IME) die te groot worden bij inactief onderhoud.
  • Serialiseer de lancering van achtergrondservices.
  • Afgestemd geheugengebruik van apparaten met weinig RAM: strengere aanpassingsniveaus voor out-of-memory (OOM), kleinere grafische caches, enz.

Deze bovenstaande wijzigingen zorgen er in principe voor dat het systeem waar mogelijk gecomprimeerd RAM gebruikt, door het gebruik van ZRAM. ZRAM is in feite een RAM-schijf (een opslagmedium dat RAM gebruikt, veel sneller dan gewone opslag op het apparaat) als wisselbestand. Een wisselbestand wordt gebruikt wanneer het RAM-gebruik hoog is en toepassingen nog steeds geheugen nodig hebben. Dit is veel, veel langzamer dan RAM en moet waar mogelijk worden vermeden. In wezen comprimeert het eenvoudigweg de inhoud van het geheugen.

Verminderd systeemgeheugen

  • System_server- en SystemUI-processen bijgesneden (verschillende MB's bespaard).
  • Laad dex-caches vooraf in Dalvik (bespaar verschillende MB's).
  • Gevalideerde JIT-off-optie (bespaart tot 1,5 MB per proces).
  • Minder lettertypecache-overhead per proces.
  • ArrayMap/ArraySet geïntroduceerd en op grote schaal in het raamwerk gebruikt als een lichtere vervanging voor HashMap/HashSet.

Wat hier vooral gebeurt, is slechts een verminderd geheugengebruik van verschillende processen die op het apparaat draaien, om zo conservatief mogelijk te zijn. Essentiële systeemdiensten zijn verwijderd om zo min mogelijk geheugen op de achtergrond te gebruiken, aangezien elke megabyte RAM belangrijk is.

Android Go maakt gebruik van een aangepaste Low Memory Killer en dex-optimalisaties

Aangezien Android Go voornamelijk bedoeld is voor apparaten met 1 GB RAM of minder, zal er een agressiever geheugenbeheer nodig zijn. Android Go wijzigt de Low Memory Killer (LMK) op een aantal verschillende manieren. Ten eerste, wanneer een groot deel van het RAM-geheugen wordt opgebruikt, gaat de low memory killer naar een "kritische druk" staat. Dit komt omdat wanneer het geheugengebruik hoog is, het systeem traag wordt omdat het voortdurend probeert toegang te krijgen tot een wisselbestand op de opslag van het apparaat. Door het RAM-geheugen vrij te houden, voorkomt u dat het systeem dit wisselbestand moet gebruiken en wordt geheugenverlies voorkomen. Geheugenverlies vindt plaats wanneer het geheugen van het apparaat vol is en voortdurend het wisselbestand op de opslag van het apparaat moet wisselen, waardoor de prestaties ernstig afnemen.

Services en WiFi-services zijn ingesteld op "snelheidsprofiel", wat betekent dat geselecteerde methoden in deze services Ahead-of-Time (AOT) zijn gecompileerd. (Een methode verwijst naar een reeks code die op elk gewenst moment bij naam kan worden aangeroepen.) Dit vermindert het RAM-gebruik en opslag, omdat het Android-systeem de essentiële services die op het Android-systeem draaien niet voortdurend opnieuw hoeft te compileren apparaat. Ondertussen zijn gedeelde APK's ingesteld op 'quicken', wat is ontworpen om een ​​extra levensduur van de batterij en extra CPU-cycli te bieden door dex-instructies te optimaliseren om betere prestaties te krijgen.

Qua dex-optimalisaties doet Android Go behoorlijk veel. Om te beginnen zal dat na 10 dagen wel het geval zijn een applicatie downgraden als het niet wordt gebruikt om ruimte te besparen. Downgraden hier betekent niet dat het werkelijke versienummer van de applicatie afneemt, maar betekent eerder dat de dalvik_cache voor de app wordt gewist. De Dalvik-cache wordt gebruikt zodat het apparaat apps niet opnieuw hoeft te compileren, maar alleen de meest noodzakelijke delen ervan compileert en die in de cache opslaat. De rest wordt gecompileerd met behulp van de Just in Time (JIT) compiler wanneer de applicatie wordt uitgevoerd. Als de applicatie echter 10 dagen niet wordt gebruikt, worden ook de essentiële onderdelen van de applicatie die vooraf zijn samengesteld verwijderd. Dit wordt gedaan om zoveel mogelijk ruimte vrij te maken. Een andere eenvoudige wijziging is dat het RAM-gebruik van een app niet groter mag zijn dan 256 MB, zodat een app niet al het RAM-geheugen op het apparaat kan gebruiken.


Is Android Go de toekomst van aangepaste ROM-ontwikkeling op goedkope apparaten?

Momenteel weten we het antwoord hierop niet, maar de toekomst ziet er rooskleurig uit voor de ontwikkeling van aangepaste ROM's op oudere apparaten. Er kunnen nog andere problemen zijn bij het verkrijgen van een nieuwere versie van Android op een apparaat, maar in theorie zou een upgrade naar een meer geoptimaliseerde Android Go op basis van Android Oreo zou moeten zorg ervoor dat een ouder, low-end apparaat beter werkt.