Отличия Android Oreo/Pie Go Edition от обычного Android Oreo/Pie

0

Android Go — это специальная версия Android для старых и бюджетных устройств. Android Oreo Go или Android Pie Go предназначен для устройств с 1 ГБ ОЗУ или менее. Есть примеры нормальной работы Android Oreo Go (LineageOS 15.1 Go) даже на смартфонах 2013г, для которых официально был выпущен только Android Jelly Bean. Хотя на 1 ГБ ОЗУ можно использовать и полноценный Android Oreo 8.1, но Android Oreo 8.1 Go имеет гораздо более высокую отзывчивость интерфейса – программы запускаются и переключаются быстрее.
Рассмотрим найденные различия между обычным Android и Android Go, на примере чистой сборки LineageOS 15.1 и LineageOS 15.1 Go.

Видимые отличия Android 8.1 Go Edition, Android 9 Go Edition.

В многочисленных обзорах Android Go обычно пишут только про урезанные сервисы Google (Gmail Go, Files Go, Maps Go и т.п.), но это всё сторонний софт (хоть и предустанавливаемый производителями). В Android Go есть ряд собственных отличий и ограничений, не связанных с сервисами Google и фирменными дополнениями от производителя.

Разделение экрана.

Скриншот Android Oreo - Многооконный режим
В обычной версии Android 8.1 (Oreo) и 9.0 (Pie) есть функционал многооконности. Для его использования надо нажать и подержать кнопку списка последних приложений – экран разделяется на две половины, и в каждой из них могут быть разные приложения одновременно. Особенно, если экран большой. Например в одной половине экрана можно запустить переводчик или калькулятор, или ещё какую-либо вспомогательную программу.
Скриншот Android Oreo Go - Многооконный режим недоступенВ версии Android Go режим многооконности недоступен, при удержании кнопки списка последних приложений система сообщает что «Приложение не поддерживает разделение экрана». Хотя на самом деле это система не поддерживает – после выключения Go-режима те же самые приложения нормально работают на разделённом экране.

Список последних приложений.

Дизайн списка последних приложений в Android 8.1 и Android 8.1 Go различается.Скриншот Android Oreo - Список последних приложенийВ обычной версии Android 8.1 список последних приложений в виде многослойных карточек.Скриншот Android Oreo Go - Список последних приложенийВ Android 8.1 Go карточки разложены в один слой и пролистывание списка последних приложений занимает больше времени (потому что список получается длинным).Скриншот Android Pie - Список последних приложенийВ Android 9 этого различия нет, там в Go-версии дизайн списка последних приложений не отличается.

Мультиаккаунт.

В обычной версии Android можно добавлять дополнительные пользовательские и гостевые аккаунты.Скриншот Android Oreo - Добавление дополнительных пользователейЕсли смартфоном пользуются разные люди, можно для быстрого переключения всех параметров использовать дополнительные аккаунты. В версии Android Go такой возможности нет, смартфоном может пользоваться только 1 владелец. Пункт «Пользователи» в Android Oreo Go и Android Pie Go – отсутствует.

Качество графики.

В Android Go скролл различных меню и списков не такой плавный как в обычном Android. Особенно это заметно в меню Google Play, и прочих местах где используется WebView.

Разрешения, ограничения прав.

В Android Oreo Go и Android Pie Go отсутствует доступ (Настройки – Приложения и уведомления – Расширенные настройки – Специальный доступ) к четырём дополнительным правам.

Скриншот Android Oreo - права доступа, которых нет в Go.Скриншот Android Oreo Go - урезанные права доступа.

И приложения, которым эти права нужны – в общем случае получают отказ. Итак, список отсутствующих в Android Go разрешений:

  • «Доступ к функции «Не беспокоить»» — это право например может использовать стандартный диалер, включая на время разговора режим «не беспокоить». Причём, отсутствие этой настройки в LineageOS 15.1 Go не лишает приложения возможности управлять режимом «Не беспокоить», например диалер реально включает режим «Не беспокоить». Но это скорее всего баг, и например в LineageOS 16.0 Go диалер управлять режимом «Не беспокоить» не может.
  • «Вспомогательные VR-сервисы» — у меня нет программ которые бы это требовали.
  • «Доступ к уведомлениям» — позволяет приложениям читать и/или удалять уведомления из других приложений. Например Nova Launcher использует это разрешение для отображения собственных более информативных бейджей у значков приложений. Ещё Clean Master его запрашивает для функции очистки уведомлений (Notification Cleaner, но смысл чистить уведомления через Clean Master я не понял, их же можно стандартным образом смахнуть). В Android Go доступа к уведомлениям нет, приложения не могут читать чужие уведомления.
  • «Картинка в картинке» — это разрешение позволяет разным видеоплеерам выводить маленькое окно с видео поверх других приложений. В Android Go функционал «картинка в картинке» не доступен, в тех приложениях где окно выводится в обычном Android – в Go-версии окно не выводится. Хотя, в LineageOS 15.1 Go настройка этого разрешения продублирована в свойствах приложений – оно не помогает, наверно это ошибка.

Внутренние отличия Android Go Edition.

Управление памятью в режиме Android Go.

Самое существенное отличие Android Go – это другие алгоритмы управления ОЗУ. Классический LowMemoryKiller там не используется, для нормальной работы Android Oreo Go или Android Pie Go ядро должно поддерживать новый алгоритм vmpressure.
Управление памятью в Android Go более оптимизированное для экономии памяти (в ущерб кешированию): более агрессивное закрытие фоновых процессов, закрытие любого сервиса если он стал занимать слишком много памяти в процессе работы, последовательный запуск фоновых сервисов, меньше размеры различных кешей и буферов для графики, меньше кеш шрифтов, и много других решений для более экономного использования ОЗУ.
В итоге даже тяжеловесные приложения в Android Go запускаются и работают быстрее, чем в обычном Android на этом же девайсе.
Но если объём ОЗУ составляет 2 ГБ или более — использовать Android Oreo/Pie Go не нужно, он будет уступать обычному Android Oreo/Pie из-за меньшего кеширования.

Как переключить систему в режим Android Go.

Самый главный переключатель – это опция ro.config.low_ram=true в build.prop, Android превращается в Android Go простым добавлением этой опции. И наоборот — ro.config.low_ram=false или удаление опции — превращает Android Go в нормальный Android.
Есть даже готовые скрипты для рекавери, позволяющие легко и просто добавлять или удалять ro.config.low_ram. Либо можно редактировать build.prop вручную (при наличии root-прав).
Но, для полноценного переключения в режим Android Go – надо брать исходники и перекомпилировать прошивку. Потому что, кроме ro.config.low_ram есть ещё ряд опций, причём не только в build.prop, но и на уровне конфигов компилятора (и например скомпилированные файлы в system/framework/arm, system/framework/oat/arm различаются по размерам почти в два раза — для Go они более компактные).
При самостоятельной компиляции Android (LineageOS) – сборка в режиме Go делается добавлением в дереве устройства в platform.mk ссылки $(call inherit-product, build/target/product/go_defaults.mk)
Несложно заметить что этот способ помимо ro.config.low_ram=true в build.prop добавляет ещё несколько опций: ro.lmk.critical_upgrade=true ro.lmk.upgrade_pressure=40 ro.lmk.downgrade_pressure=60 ro.lmk.kill_heaviest_task=false pm.dexopt.downgrade_after_inactive_days=10 pm.dexopt.shared=quicken dalvik.vm.systemservercompilerfilter=speed-profile и увеличивает dalvik.vm.heapgrowthlimit с 96m до 128m

Оставить комментарий

  Subscribe  
Notify of