Android Go to uproszczona wersja Androida Oreo 8.1 stworzona przez Google dla nowych urządzeń z małą ilością pamięci RAM. Jak się okazuje, może to pomóc w tworzeniu niestandardowej pamięci ROM również na starszych urządzeniach.
Android Go to uproszczona wersja Androida firmy Google oparta na systemie Android 8.1 Oreo, która ma być zoptymalizowaną wersją Androida dla urządzeń z niższej półki, wyposażonych w 1 GB pamięci RAM lub mniej. Zostało to ogłoszone w maju ubiegłego roku na konferencji Google I/O Developer i ostatecznie więcej szczegółów ujawniono w grudniu tego samego roku. Mówiono, że jest przeznaczony dla następnej generacji urządzeń klasy podstawowej, aby zapewnić, że osoby znajdujące się w kraje rozwijające się mogą nadal korzystać z działających smartfonów, aby uzyskać dostęp do Internetu i korzystać z aplikacji.
Go oferuje szeroką gamę optymalizacji i ulepszeń wydajności, w tym zajmuje o 50 procent mniej miejsca na dysku niż przeciętna instalacja Androida Oreo. Dzięki Android Runtime (ART) i optymalizacjom jądra urządzenie z Androidem Go będzie działać średnio o 15 procent szybciej niż na zwykłym Androidzie Oreo zainstalowanym na tym samym urządzeniu. Te optymalizacje są przeprowadzane za pomocą szeregu wyspecjalizowanych konfiguracji kompilacji opracowanych przez Google, co wyjaśnimy później.
Android Go korzysta także ze specjalnych aplikacji „Go”, takich jak Pliki Idź, YouTube Przejdź I Mapy Google Go. Są to lekkie wersje aplikacji firmy Google, które mają zmniejszone wymagania, aby działać wydajniej. Oznacza to, że osoby posiadające urządzenia z systemem Android Go mogą cieszyć się większością tych samych korzyści, z których mogą korzystać zwykli użytkownicy Androida Oreo korzystanie z pakietu aplikacji Google bez konieczności wydawania dużych pieniędzy na flagowy lub nawet nieco droższy budżet urządzenie.
Chodzi o to, aby Google poszerzał swój rynek. Nasuwa się jednak pytanie, czy jeśli Android Go składa się głównie z konfiguracji kompilacji i pakietu zoptymalizowanych aplikacji Google, czy programiści mogą tworzyć własne kompilacje Androida Go? W skrócie, tak możemy.
Kilku programistów LineageOS już tworzy niestandardowe ROM-y zoptymalizowane pod kątem Androida Go
Już teraz obserwujemy pewne zainteresowanie Androidem Go ze strony niektórych twórców niestandardowych pamięci ROM, takich jak XDA Recognized Developer Adrian DC, z jego pracą nad LineageOS 15.1 z konfiguracjami kompilacji Android Go dla kilka starych telefonów Sony. Urządzenia, o których mowa, to Sony Xperia SP, Sony Xperia T, Sony Xperia V i Sony Xperia TX. Wszystkie te urządzenia pochodzą z lat 2012 i 2013, ale otrzymają LineageOS 15.1 oparty na systemie Android 8.1 Oreo z systemem Android Konfiguracja kompilacji Go, która może pozwolić na płynne uruchamianie aplikacji Google Go na urządzeniach, jeśli w końcu zostanie zainstalowany zestaw Gapps dla Androida Go wydany.
Każdy indywidualny opiekun LOS powinien być w stanie wprowadzić kompilację skonfigurowaną dla Androida Go, będącą zestawem konfiguracji kompilacji i innych optymalizacji. Oznacza to, że ci, którzy kupili na przykład Sony Xperię T – urządzenie z systemem Android 4.0.4 Ice Cream Sandwich w momencie premiery – będą mogli korzystać z lepiej zoptymalizowana wersja systemu Android 8.1 Oreo na urządzeniu, wykorzystująca takie aplikacje jak YouTube Go i Google Maps Go. Nie będzie działać na flagowym poziomie wydajności, ale tak powinno być nadający się do użytku— zwłaszcza jak na urządzenie z 2012 roku.
Jak Android Go może pomóc starszym telefonom z Androidem uruchomić Androida Oreo
Konfiguracje kompilacji na Androidzie to zestaw parametrów odnoszących się do różnych aspektów systemu Android, które są stosowane podczas kompilowania obrazu systemu do flashowania na urządzeniu. Zazwyczaj zmieniają one sposób działania systemu i stąd pochodzą główne optymalizacje Androida Go te konfiguracje kompilacji.
Rozmawiałem z uznanym programistą XDA wesoły, który bardzo pomógł mi zrozumieć zachodzące zmiany – co naprawdę sprawia, że Android Go działa. Niektórych z tych konfiguracji kompilacji nie można zmienić bez ponownej kompilacji i stanowią one część projektu samej pamięci ROM. Są to flagi pisane wielkimi literami.
Wszystkie te flagi odnoszą się jednak do wielu różnych aspektów Androida związanych z pamięcią masową i wykorzystaniem pamięci. Obejmują one automatyczne zarządzanie pamięcią masową, Zabójca małej ilości pamięci w Androidzie, dex (DAlvik byłypliki ecutable) optymalizator i limity pamięci RAM dla uruchomionych aplikacji. Pliki APK składają się z plików DEX, więc w pewnym sensie można myśleć o pliku APK jako po prostu Plik ZIP zawierający wiele plików .dex, czyli właściwie to, co Android uruchamia podczas wykonywania pliku aplikacja. Zamiast tego automatycznym zarządzaniem pamięcią będzie sterować aplikacja Files Go, a nie system Android.
Narzędzia Android Go Tryb małej ilości pamięci RAM w systemie Android
W Androidzie 4.4 KitKat Google wprowadził nową flagę o nazwie „niski baran”, który miał na celu obsługę urządzeń wyposażonych w 512 MB pamięci RAM. Wprowadza szereg optymalizacji systemu. Zmiany te są niezwykle korzystne dla urządzeń z mniejszą ilością pamięci RAM.
Ulepszone zarządzanie pamięcią
- Sprawdzone konfiguracje jądra oszczędzające pamięć: Zamień na ZRAM.
- Zabij procesy buforowane, jeśli mają być niebuforowane i zbyt duże.
- Nie pozwalaj dużym usługom na powrót do usług A (aby nie mogły spowodować wyłączenia programu uruchamiającego).
- Zabij procesy (nawet te, których zwykle nie można zabić, takie jak bieżący edytor IME), które stają się zbyt duże podczas bezczynnej konserwacji.
- Serializuj uruchamianie usług w tle.
- Dostosowano wykorzystanie pamięci w urządzeniach z małą ilością pamięci RAM: bardziej rygorystyczne poziomy regulacji braku pamięci (OOM), mniejsze pamięci podręczne grafiki itp.
Powyższe zmiany w zasadzie zapewniają, że system będzie korzystał ze skompresowanej pamięci RAM, tam gdzie to możliwe, poprzez wykorzystanie ZRAM. ZRAM to w zasadzie RAMdisk (nośnik pamięci, który wykorzystuje pamięć RAM, znacznie szybciej niż zwykła pamięć na urządzeniu) jako plik wymiany. Plik wymiany jest używany, gdy użycie pamięci RAM jest duże, a aplikacje nadal wymagają pamięci. Jest to znacznie, znacznie wolniejsze niż pamięć RAM i należy go unikać, jeśli to możliwe. W istocie po prostu kompresuje zawartość pamięci.
Zmniejszona pamięć systemowa
- Przycięto procesy system_server i SystemUI (zaoszczędzono kilka MB).
- Wstępnie załaduj pamięć podręczną dex w Dalvik (zaoszczędzono kilka MB).
- Sprawdzona opcja JIT-off (oszczędność do 1,5MB na proces).
- Zmniejszone obciążenie pamięci podręcznej czcionek na proces.
- Wprowadzono ArrayMap/ArraySet i szeroko stosowano w frameworku jako lżejszy zamiennik HashMap/HashSet.
To, co się tutaj głównie dzieje, to po prostu zmniejszone zużycie pamięci przez różne procesy uruchomione na urządzeniu, aby zachować możliwie najbardziej konserwatywny charakter. Podstawowe usługi systemowe zostały usunięte, aby zużywać jak najmniej pamięci w tle, ponieważ ważny jest każdy megabajt pamięci RAM.
Android Go wykorzystuje zmodyfikowany moduł zabójcy małej ilości pamięci i optymalizacje dex
Biorąc pod uwagę, że Android Go jest przeznaczony głównie dla urządzeń z 1 GB pamięci RAM lub mniej, konieczne będzie bardziej agresywne zarządzanie pamięcią. Android Go modyfikuje funkcję Low Memory Killer (LMK) na kilka różnych sposobów. Po pierwsze, gdy zużyta zostanie duża ilość pamięci RAM, zabójca małej ilości pamięci przechodzi do „ciśnienie krytyczne" państwo. Dzieje się tak, ponieważ gdy użycie pamięci jest wysokie, system staje się powolny z powodu ciągłych prób uzyskania dostępu do pliku wymiany w pamięci urządzenia. Utrzymanie wolnej pamięci RAM zapobiegnie konieczności używania tego pliku wymiany przez system i zapobiegnie uszkodzeniu pamięci. Zaburzanie pamięci następuje, gdy pamięć urządzenia jest pełna i wymaga ciągłego stronicowania pliku wymiany w pamięci urządzenia, co znacznie pogarsza wydajność.
Usługi i usługi Wi-Fi są ustawione na „profil prędkości”, co oznacza, że wybrane metody w tych usługach są kompilowane z wyprzedzeniem (AOT). (Metoda odnosi się do zestawu kodu, który można wywołać w dowolnym momencie po nazwie.) Zmniejsza to zużycie pamięci RAM i pamięci masowej, ponieważ system Android nie będzie musiał stale rekompilować podstawowych usług działających na platformie urządzenie. Tymczasem udostępniane pliki APK są ustawione na „szybkie”, co ma na celu wydłużenie czasu pracy baterii i dodatkowych cykli procesora poprzez optymalizację instrukcji dex w celu uzyskania lepszej wydajności.
Jeśli chodzi o optymalizację dex, Android Go robi całkiem sporo. Na początek, po 10 dniach tak będzie obniżyć aplikację jeśli nie jest używany w celu zaoszczędzenia miejsca. Obniżenie wersji nie odnosi się tutaj do faktycznego zmniejszenia numeru wersji aplikacji, ale raczej oznacza, że pamięć podręczna dalvik_cache aplikacji zostanie wyczyszczona. Używana jest pamięć podręczna Dalvik, dzięki czemu urządzenie nie musi ponownie kompilować aplikacji, zamiast tego kompiluje tylko najbardziej potrzebne ich części i buforuje je. Reszta jest kompilowana przy użyciu kompilatora Just in Time (JIT) podczas uruchamiania aplikacji. Jeśli jednak aplikacja nie będzie używana przez 10 dni, wówczas wstępnie skompilowane istotne części aplikacji zostaną również usunięte. Ma to na celu zwolnienie jak największej ilości miejsca. Inną prostą zmianą jest niedopuszczenie, aby użycie pamięci RAM przez aplikację przekroczyło 256 MB, w związku z czym aplikacja nie może wykorzystać całej pamięci RAM urządzenia.
Czy Android Go jest przyszłością tworzenia niestandardowych pamięci ROM na urządzeniach z niższej półki?
Obecnie nie znamy odpowiedzi na to pytanie, ale przyszłość rysuje się w jasnych barwach w zakresie tworzenia niestandardowych pamięci ROM na starszych urządzeniach. Mogą wystąpić inne problemy z uruchomieniem nowszej wersji Androida na urządzeniu, ale teoretycznie aktualizacja do bardziej zoptymalizowanego Androida Go opartego na Androidzie Oreo powinien sprawić, że starsze, słabsze urządzenie będzie działać lepiej.