Android Go ist Googles abgespeckte Version von Android Oreo 8.1 für neue Geräte mit wenig RAM. Wie sich herausstellt, kann es auch bei der Entwicklung benutzerdefinierter ROMs auf älteren Geräten hilfreich sein.
Android Go ist Googles abgespeckte Android-Version auf Basis von Android 8.1 Oreo und zielt darauf ab, eine optimierte Version von Android für Low-End-Geräte mit 1 GB RAM oder weniger zu sein. Es wurde letzten Mai auf der Google I/O Developer-Konferenz angekündigt und schließlich wurden im Dezember desselben Jahres weitere Einzelheiten bekannt gegeben. Es soll für die nächste Generation von Einstiegsgeräten gemacht sein, um sicherzustellen, dass diese in Entwicklungsländer können immer noch funktionierende Smartphones nutzen, um auf das Internet zuzugreifen und Apps nutzen.
Go verfügt über zahlreiche Leistungsoptimierungen und -verbesserungen, darunter einen um 50 Prozent geringeren Speicherplatzbedarf als eine durchschnittliche Android-Oreo-Installation. Dank Android Runtime (ART) und Kernel-Optimierungen läuft ein Gerät mit Android Go im Durchschnitt 15 Prozent schneller als bei einer normalen Android Oreo-Installation auf demselben Gerät. Diese Optimierungen werden durch eine Reihe spezieller Build-Konfigurationen von Google vorgenommen, die wir später erläutern werden.
Android Go profitiert auch von speziellen „Go“-Anwendungen, wie z Dateien gehen, YouTube Go Und Google Maps Go. Hierbei handelt es sich um schlanke Versionen von Anwendungen von Google, die geringere Anforderungen stellen, um effizienter zu laufen. Dies bedeutet, dass Benutzer von Android Go-Geräten die meisten Vorteile genießen können, die auch normale Android Oreo-Benutzer haben Nutzung der Anwendungssuite von Google, ohne viel Geld für ein Flaggschiff oder sogar ein etwas teureres Budget ausgeben zu müssen Gerät.
Es geht darum, dass Google seinen Markt erweitert. Es stellt sich jedoch die Frage: Können Entwickler ihre eigenen Builds von Android Go erstellen, wenn Android Go hauptsächlich aus einer Build-Konfiguration und einer Suite optimierter Google-Apps besteht? Zusamenfassend, ja wir können.
Einige LineageOS-Entwickler entwickeln bereits für Android Go optimierte benutzerdefinierte ROMs
Wir sehen bereits eine gewisse Akzeptanz von Android Go bei einigen benutzerdefinierten ROM-Entwicklern, beispielsweise bei XDA Recognized Developer AdrianDC, mit seiner Arbeit an LineageOS 15.1 mit Android Go-Build-Konfigurationen für mehrere alte Sony-Handys. Bei den Geräten handelt es sich um das Sony Xperia SP, das Sony Xperia T, das Sony Xperia V und das Sony Xperia TX. Diese Geräte stammen alle aus den Jahren 2012 und 2013, erhalten jedoch LineageOS 15.1 auf Basis von Android 8.1 Oreo über ein Android Go-Build-Konfiguration, die es den Geräten ermöglichen könnte, Google-Go-Apps flüssig auszuführen, falls irgendwann ein Android-Go-Satz von Gapps vorhanden sein sollte freigegeben.
Jeder einzelne LOS-Betreuer sollte in der Lage sein, einen für Android Go konfigurierten Build einzuführen, der aus einer Reihe von Build-Konfigurationen und anderen Optimierungen besteht. Dies bedeutet, dass diejenigen, die beispielsweise das Sony Xperia T gekauft haben, ein Gerät, auf dem zum Start Android 4.0.4 Ice Cream Sandwich läuft, ein verwenden können Besser optimierter Build von Android 8.1 Oreo auf dem Gerät, der Anwendungen wie YouTube Go und Google Maps Go nutzt. Es wird nicht auf dem Spitzenleistungsniveau laufen, aber es sollte sein verwendbar– vor allem für ein Gerät aus dem Jahr 2012.
Wie Android Go älteren Android-Telefonen helfen kann, Android Oreo auszuführen
Build-Konfigurationen auf Android sind eine Reihe von Parametern, die sich auf verschiedene Aspekte des Android-Systems beziehen und beim Kompilieren des Systemabbilds zum Flashen auf ein Gerät angewendet werden. Typischerweise ändern diese das Verhalten des Systems, und die wichtigsten Optimierungen von Android Go stammen von diese Build-Konfigurationen.
Ich habe mit einem anerkannten XDA-Entwickler gesprochen joschartig, der mir sehr geholfen hat, die Veränderungen zu verstehen, die stattfanden – was Android Go wirklich zum Funktionieren bringt. Einige dieser Build-Konfigurationen können nicht ohne Neukompilierung geändert werden und sind Teil der Blaupause des ROM selbst. Dies sind die vollständig großgeschriebenen Flaggen.
Alle diese Flags beziehen sich jedoch auf viele verschiedene Aspekte von Android im Zusammenhang mit Speicher und Speichernutzung. Diese beinhalten automatische Speicherverwaltung, Androids Low-Memory-Killer, der Dex (Dalvik exausführbare Dateien) Optimierer und RAM-Grenzwerte für die Ausführung von Apps. APK-Dateien bestehen aus diesen DEX-Dateien, daher kann man sich eine APK-Datei gewissermaßen einfach als eine vorstellen ZIP-Datei, die viele .dex-Dateien enthält, was eigentlich das ist, was Android ausführt, wenn es eine ausführt Anwendung. Die automatische Speicherverwaltung wird stattdessen von der Files Go-Anwendung und nicht vom Android-System gesteuert.
Android Go-Dienstprogramme Androids Low-RAM-Modus
In Android 4.4 KitKat hat Google eine neue Flagge namens „Low-Ram", das auf die Unterstützung von Geräten mit 512 MB RAM abzielte. Es führt eine Reihe von Optimierungen am System durch. Diese Änderungen sind für Geräte mit geringerem RAM von großem Vorteil.
Verbesserte Speicherverwaltung
- Validierte speichersparende Kernel-Konfigurationen: Wechseln Sie zu ZRAM.
- Beenden Sie zwischengespeicherte Prozesse, wenn sie bald nicht mehr zwischengespeichert und zu groß sind.
- Erlauben Sie großen Diensten nicht, sich wieder in A-Dienste zu versetzen (damit sie nicht dazu führen können, dass der Launcher beendet wird).
- Beenden Sie Prozesse (auch solche, die normalerweise nicht beendet werden können, wie das aktuelle IME), die bei der Wartung im Leerlauf zu groß werden.
- Serialisieren Sie den Start von Hintergrunddiensten.
- Optimierte Speichernutzung von Geräten mit wenig RAM: strengere Out-of-Memory-Anpassungsstufen (OOM), kleinere Grafik-Caches usw.
Diese oben genannten Änderungen stellen grundsätzlich sicher, dass das System durch die Verwendung von ZRAM sicherstellt, dass nach Möglichkeit komprimierter RAM verwendet wird. ZRAM ist im Grunde eine RAM-Disk (ein Speichermedium, das viel schneller RAM nutzt als der normale Speicher auf dem Gerät) als Auslagerungsdatei. Eine Auslagerungsdatei wird verwendet, wenn die RAM-Auslastung hoch ist und Anwendungen weiterhin Speicher benötigen. Dies ist viel, viel langsamer als RAM und sollte nach Möglichkeit vermieden werden. Im Wesentlichen komprimiert es einfach den Inhalt des Speichers.
Reduzierter Systemspeicher
- System_server- und SystemUI-Prozesse gekürzt (mehrere MB eingespart).
- Dex-Caches in Dalvik vorladen (einsparung mehrerer MB).
- Validierte JIT-off-Option (spart bis zu 1,5 MB pro Prozess).
- Reduzierter Font-Cache-Overhead pro Prozess.
- Einführung von ArrayMap/ArraySet und umfassende Verwendung im Framework als platzsparenderer Ersatz für HashMap/HashSet.
Was hier hauptsächlich geschieht, ist lediglich die Reduzierung des Speicherverbrauchs durch verschiedene Prozesse, die auf dem Gerät ausgeführt werden, um so konservativ wie möglich vorzugehen. Wesentliche Systemdienste wurden entfernt, um im Hintergrund so wenig Speicher wie möglich zu verbrauchen, da jedes Megabyte RAM wichtig ist.
Android Go verwendet einen modifizierten Low-Memory-Killer und Dex-Optimierungen
Da Android Go hauptsächlich für Geräte mit 1 GB RAM oder weniger gedacht ist, ist eine aggressivere Speicherverwaltung erforderlich. Android Go modifiziert den Low Memory Killer (LMK) auf verschiedene Weise. Erstens, wenn ein großer Teil des RAM verbraucht ist, geht der Low-Memory-Killer auf „kritischer Druck" Zustand. Dies liegt daran, dass das System bei hoher Speicherauslastung langsamer wird, da ständig versucht wird, auf eine Auslagerungsdatei im Speicher des Geräts zuzugreifen. Wenn Sie den Arbeitsspeicher freihalten, wird verhindert, dass das System diese Auslagerungsdatei verwenden muss, und es wird verhindert, dass der Speicher überlastet wird. Speicher-Thrashing tritt auf, wenn der Speicher des Geräts voll ist und die Auslagerungsdatei ständig im Speicher des Geräts ausgelagert werden muss, was die Leistung stark beeinträchtigt.
Dienste und WLAN-Dienste sind auf „Geschwindigkeitsprofil,“ was bedeutet, dass ausgewählte Methoden in diesen Diensten AOT (Ahead-of-Time) kompiliert werden. (Eine Methode bezieht sich auf einen Codesatz, der jederzeit namentlich aufgerufen werden kann.) Dies reduziert die RAM-Nutzung und Speicher, da das Android-System wichtige Dienste, die darauf ausgeführt werden, nicht ständig neu kompilieren muss Gerät. In der Zwischenzeit sind freigegebene APKs auf „Beschleunigung“ eingestellt, was durch die Optimierung von Dex-Anweisungen für eine längere Akkulaufzeit und zusätzliche CPU-Zyklen sorgen soll, um eine bessere Leistung zu erzielen.
In Bezug auf Dex-Optimierungen leistet Android Go einiges. Zunächst einmal wird es nach 10 Tagen der Fall sein Eine Anwendung herunterstufen wenn es nicht aus Platzgründen genutzt wird. Ein Downgrade bedeutet hier nicht, dass die tatsächliche Versionsnummer der Anwendung abnimmt, sondern bedeutet vielmehr, dass der dalvik_cache für die App gelöscht wird. Der Dalvik-Cache wird verwendet, damit das Gerät Apps nicht neu kompilieren muss, sondern nur die notwendigsten Teile davon kompiliert und diese zwischenspeichert. Der Rest wird mit dem Just-in-Time-Compiler (JIT) kompiliert, wenn die Anwendung ausgeführt wird. Wird die Anwendung jedoch 10 Tage lang nicht genutzt, werden auch die wesentlichen, vorkompilierten Teile der Anwendung entfernt. Dies geschieht, um so viel Platz wie möglich freizugeben. Eine weitere einfache Änderung besteht darin, dass die RAM-Nutzung einer App 256 MB nicht überschreiten darf, sodass eine App nicht den gesamten RAM des Geräts nutzen kann.
Ist Android Go die Zukunft der benutzerdefinierten ROM-Entwicklung auf Low-End-Geräten?
Derzeit kennen wir die Antwort darauf nicht, aber die Zukunft sieht für die Entwicklung benutzerdefinierter ROMs auf älteren Geräten rosig aus. Es kann andere Probleme geben, eine neuere Version von Android auf einem Gerät zum Laufen zu bringen, aber theoretisch ist es ein Upgrade auf ein optimierteres Android Go, das auf Android Oreo basiert sollen Damit ein älteres Low-End-Gerät besser läuft.