Як Android Go може допомогти старим телефонам Android працювати з Android 8.1 Oreo

Android Go — це скорочена версія Android Oreo 8.1 від Google для нових пристроїв із низьким обсягом оперативної пам’яті. Як виявилося, це також може допомогти у розробці спеціального ПЗУ на старих пристроях.

Android Go — це скорочена версія Android від Google на основі Android 8.1 Oreo, яка має бути оптимізованою версією Android для пристроїв низького класу з 1 ГБ оперативної пам’яті або менше. Про це було оголошено минулого травня на конференції розробників Google I/O зрештою більше деталей було розкрито в грудні того ж року. Кажуть, що він створений для наступного покоління пристроїв початкового рівня, щоб гарантувати, що ті, хто в країни, що розвиваються, все ще можуть використовувати функціональні смартфони для доступу до Інтернету та використовувати програми.

Go має широкий спектр оптимізацій та покращень продуктивності, зокрема займає на 50 відсотків менше місця для зберігання, ніж середня інсталяція Android Oreo. Завдяки Android Runtime (ART) і оптимізації ядра, пристрій під керуванням Android Go працюватиме в середньому на 15 відсотків швидше, ніж звичайна інсталяція Android Oreo на тому самому пристрої. Ці оптимізації здійснюються за допомогою кількох спеціалізованих конфігурацій збірки, створених Google, про які ми пояснимо пізніше.

Android Go також має переваги спеціальних програм Go, як-от Файли Go, YouTube Go і Google Maps Go. Це спрощені версії програм, створених Google, які мають менші вимоги для більш ефективної роботи. Це означає, що користувачі пристроїв Android Go можуть користуватися більшістю тих же переваг, що й звичайні користувачі Android Oreo використання набору програм Google без необхідності витрачати багато грошей на флагманський чи навіть дещо дорожчий бюджет пристрій.

Вся справа в тому, що Google розширює свій ринок. Але виникає запитання: якщо Android Go складається здебільшого з конфігурації збірки та набору оптимізованих програм Google, чи можуть розробники створювати власні збірки Android Go? Коротко, так, ми можемо.

Кілька розробників LineageOS вже створюють спеціальні ПЗУ, оптимізовані для Android Go

Ми вже бачимо певне захоплення Android Go від деяких розробників спеціальних ПЗУ, наприклад від визнаного розробника XDA AdrianDC, з його роботою над LineageOS 15.1 з конфігураціями збірки Android Go кілька старих телефонів Sony. Йдеться про пристрої Sony Xperia SP, Sony Xperia T, Sony Xperia V і Sony Xperia TX. Усі ці пристрої датуються 2012 та 2013 роками, але вони отримають LineageOS 15.1 на основі Android 8.1 Oreo за допомогою Android Конфігурація збірки Go, яка може дозволити пристроям безперебійно запускати програми Google Go, якщо набір Android Go Gapps зрештою буде звільнений.

Будь-який окремий супроводжувач LOS повинен мати можливість представити налаштовану збірку Android Go, яка є набором конфігурацій збірки та інших оптимізацій. Це означає, що ті, хто придбав, наприклад, Sony Xperia T, пристрій під керуванням Android 4.0.4 Ice Cream Sandwich на момент запуску, зможуть використовувати краще оптимізована збірка Android 8.1 Oreo на пристрої з використанням таких програм, як YouTube Go та Google Maps Go. Він не працюватиме на флагманських рівнях продуктивності, але так повинно бути придатний для використання—особливо для пристрою, який датується 2012 роком.


Як Android Go може допомогти старим телефонам Android працювати з Android Oreo

Конфігурації збірки на Android – це набір параметрів, які стосуються різних аспектів системи Android, які застосовуються під час компіляції образу системи для прошивання на пристрої. Як правило, вони змінюють поведінку системи, звідки й походять основні оптимізації Android Go ці конфігурації збірки.

Конфігурації складання, які використовуються для компіляції Android Go.

Я спілкувався з визнаним розробником XDA joshuous, який дуже допоміг мені зрозуміти зміни, які відбуваються — що насправді змушує Android Go працювати. Деякі з цих конфігурацій збірки неможливо змінити без перекомпіляції, і вони є частиною проекту самого ПЗУ. Це прапори, написані великими літерами.

Однак усі ці позначки стосуються багатьох різних аспектів Android, пов’язаних із сховищем і використанням пам’яті. До них відносяться автоматичне управління зберіганням, вбивця малої пам’яті Android, dex (dalvik првиконувані файли) оптимізатор і обмеження оперативної пам’яті для запущених програм. Файли APK складаються з цих файлів DEX, тому в певному сенсі файл APK можна вважати просто ZIP-файл, що містить багато файлів .dex, які насправді запускає Android під час виконання додаток. Натомість автоматичним керуванням сховищем керуватиме програма Files Go, а не система Android.

Утиліти Android Go Режим низького рівня оперативної пам’яті Android

В Android 4.4 KitKat Google представив новий прапор під назвою "низький баран», яка була спрямована на підтримку пристроїв із 512 МБ оперативної пам’яті. Це робить низку оптимізацій системи. Ці зміни дуже корисні для пристроїв із меншим обсягом оперативної пам’яті.

Покращене керування пам'яттю

  • Перевірені конфігурації ядра для економії пам’яті: замінити на ZRAM.
  • Знищити кешовані процеси, якщо вони будуть некешованими та занадто великими.
  • Не дозволяйте великим службам повертатися до служб A (щоб вони не могли спричинити знищення програми запуску).
  • Припиняйте процеси (навіть ті, які зазвичай неможливо припинити, наприклад поточний IME), які стають занадто великими під час простою обслуговування.
  • Серіалізуйте запуск фонових служб.
  • Налагоджене використання пам’яті пристроями з низьким об’ємом оперативної пам’яті: більш жорсткі рівні коригування нестачі пам’яті (OOM), менші графічні кеші тощо.

Ці зміни в основному гарантують, що система обов’язково використовує стиснуту RAM, де це можливо, за допомогою ZRAM. ZRAM — це, по суті, RAM-диск (носій даних, який використовує оперативну пам’ять набагато швидше, ніж використання звичайної пам’яті на пристрої) як файл підкачки. Файл підкачки використовується, коли оперативна пам’ять використовується високо, а програми все ще потребують пам’яті. Це набагато, набагато повільніше, ніж оперативна пам'ять, і її слід уникати, де це можливо. По суті, він просто стискає вміст пам'яті.

Зменшена пам'ять системи

  • Обрізано процеси system_server і SystemUI (збережено кілька МБ).
  • Попереднє завантаження кеш-пам’яті dex у Dalvik (збережено кілька МБ).
  • Перевірена опція вимкнення JIT (економить до 1,5 МБ на процес).
  • Зменшено витрати кешу шрифтів для кожного процесу.
  • Представлено ArrayMap/ArraySet і широко використовується у фреймворку як легка заміна для HashMap/HashSet.

Здебільшого тут відбувається лише зменшення споживання пам’яті різними процесами, що виконуються на пристрої, щоб бути максимально консервативним. Основні системні служби були видалені, щоб використовувати якомога менше пам’яті у фоновому режимі, оскільки кожен мегабайт оперативної пам’яті важливий.

Android Go використовує модифіковану програму Low Memory Killer і оптимізацію dex

З огляду на те, що Android Go в основному призначений для пристроїв із 1 ГБ оперативної пам’яті або менше, потрібно буде більш агресивно керувати пам’яттю. Android Go модифікує Low Memory Killer (LMK) кількома різними способами. По-перше, коли використовується великий обсяг оперативної пам’яті, «вбивця малої пам’яті» переходить до «критичний тиск" держава. Це пояснюється тим, що при високому використанні пам’яті система працюватиме мляво через постійні спроби отримати доступ до файлу підкачки в пам’яті пристрою. Підтримуючи ОЗУ чистою, система не потребуватиме використання цього файлу підкачки та запобіжить розбиття пам’яті. Викид пам’яті відбувається, коли пам’ять пристрою заповнена, і доводиться постійно перекачувати файл підкачки в пам’ять пристрою, що значно знижує продуктивність.

Послуги та служби Wi-Fi налаштовано на "швидкісний профіль", що означає, що вибрані методи в цих службах скомпільовані наперед (AOT). (Метод відноситься до набору коду, який можна викликати будь-коли за назвою.) Це зменшує використання оперативної пам’яті та сховища, оскільки системі Android не потрібно буде постійно перекомпілювати основні служби, які працюють на пристрій. Тим часом спільні файли APK налаштовано на «швидше», що забезпечує додатковий час роботи батареї та додаткові цикли ЦП шляхом оптимізації інструкцій dex для підвищення продуктивності.

З точки зору оптимізації dex, Android Go робить досить багато. Для початку через 10 днів буде знизити версію програми якщо він не використовується для економії місця. Пониження версії тут не означає зменшення фактичного номера версії програми, а скоріше означає, що dalvik_cache для програми буде стерто. Кеш Dalvik використовується для того, щоб пристрою не потрібно було перекомпілювати програми, натомість він компілює лише найнеобхідніші їх частини та кешує їх. Решта компілюється за допомогою компілятора Just in Time (JIT) під час запуску програми. Однак, якщо програма не використовується протягом 10 днів, основні частини програми, які попередньо скомпільовані, також видаляються. Це робиться для того, щоб звільнити якомога більше місця. Ще одна проста зміна полягає в тому, що програма не може використовувати оперативну пам’ять пристрою, перевищуючи 256 МБ.


Чи є Android Go майбутнім розробки користувальницьких ПЗУ на бюджетних пристроях?

Наразі ми не знаємо відповіді на це питання, але майбутнє для розробки власних ПЗУ на старіших пристроях виглядає яскравим. Можуть виникнути й інші проблеми із запуском новішої версії Android на пристрої, але теоретично оновлення до більш оптимізованої Android Go на основі Android Oreo повинен покращити роботу старого недорогого пристрою.