Android Go — это урезанная версия Android Oreo 8.1 от Google для новых устройств с малым объемом оперативной памяти. Как оказалось, это может помочь в разработке собственных ПЗУ и на старых устройствах.
Android Go — это урезанная версия Android от Google на базе Android 8.1 Oreo, которая призвана стать оптимизированной версией Android для бюджетных устройств с 1 ГБ ОЗУ или ниже. Об этом было объявлено в мае прошлого года на конференции Google I/O Developer. в конечном итоге более подробная информация была раскрыта в декабре того же года.. Говорят, что он был создан для следующего поколения устройств начального уровня, чтобы гарантировать, что те, кто находится в развивающиеся страны по-прежнему могут использовать работающие смартфоны для доступа в Интернет и используйте приложения.
Go имеет множество оптимизаций и улучшений производительности, в том числе занимает на 50 процентов меньше места для хранения, чем средняя установка Android Oreo. Благодаря Android Runtime (ART) и оптимизации ядра устройство под управлением Android Go будет работать в среднем на 15 процентов быстрее, чем на обычном Android Oreo, установленном на том же устройстве. Эти оптимизации выполняются с помощью ряда специализированных конфигураций сборки, созданных Google, которые мы объясним позже.
Android Go также имеет преимущества специальных приложений Go, таких как Файлы идут, YouTube Go и Google Карты Перейти. Это облегченные версии приложений Google, к которым снижены требования для более эффективной работы. Это означает, что владельцы устройств Android Go могут пользоваться теми же преимуществами, что и обычные пользователи Android Oreo. использование набора приложений Google без необходимости тратить много денег на флагманский или даже чуть более дорогой бюджет устройство.
Все дело в том, что Google расширяет свой рынок. Однако возникает вопрос: если Android Go состоит в основном из конфигурации сборки и набора оптимизированных приложений Google, могут ли разработчики создавать свои собственные сборки Android Go? Суммируя, да мы можем.
Несколько разработчиков LineageOS уже создают пользовательские прошивки, оптимизированные для Android Go.
Мы уже наблюдаем некоторое одобрение Android Go со стороны некоторых разработчиков пользовательских ПЗУ, например, признанного разработчика XDA. АдрианDC, с его работой над 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, если в конечном итоге будет установлен набор Gapps для Android Go. выпущенный.
Любой специалист по сопровождению 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 связаны с эти конфигурации сборки.
Я разговаривал с признанным разработчиком XDA. веселый, который очень помог мне понять происходящие изменения — что действительно заставляет Android Go работать. Некоторые из этих конфигураций сборки невозможно изменить без перекомпиляции, и они являются частью самого ПЗУ. Это полностью написанные с заглавной буквы флаги.
Однако все эти флаги относятся ко многим различным аспектам Android, связанным с хранилищем и использованием памяти. К ним относятся автоматическое управление хранилищем, убийца нехватки памяти в Android, dex (дАльвик бывшийисполняемые файлы) оптимизатор и ограничения оперативной памяти для запуска приложений. APK-файлы состоят из этих DEX-файлов, поэтому в каком-то смысле APK-файл можно рассматривать просто как ZIP-файл, содержащий множество файлов .dex, которые на самом деле запускает Android при выполнении приложение. Вместо этого автоматическое управление хранилищем будет контролироваться приложением Files Go, а не системой Android.
Утилиты Android Go Режим малой оперативной памяти Android
В Android 4.4 KitKat Google представил новый флаг под названием «малоходовой", который был нацелен на поддержку устройств с 512 МБ оперативной памяти. Он вносит ряд оптимизаций в систему. Эти изменения чрезвычайно полезны для устройств с меньшим объемом оперативной памяти.
Улучшенное управление памятью
- Проверенные конфигурации ядра для экономии памяти: переключитесь на ZRAM.
- Уничтожьте кэшированные процессы, если они собираются быть некэшированными и слишком большими.
- Не позволяйте крупным сервисам возвращаться в A Services (чтобы они не могли привести к закрытию программы запуска).
- Уничтожьте процессы (даже те, которые обычно неубиваемы, такие как текущий IME), которые становятся слишком большими во время простоя.
- Сериализуйте запуск фоновых служб.
- Настроено использование памяти устройствами с малым объемом оперативной памяти: более жесткие уровни регулировки нехватки памяти (OOM), меньшие графические кэши и т. д.
Эти изменения, приведенные выше, в основном гарантируют, что система обязательно будет использовать сжатую ОЗУ, где это возможно, за счет использования ZRAM. ZRAM — это, по сути, RAM-диск (носитель данных, который использует ОЗУ гораздо быстрее, чем использование обычного хранилища на устройстве) в качестве файла подкачки. Файл подкачки используется, когда использование оперативной памяти велико, а приложениям все еще требуется память. Это намного медленнее, чем ОЗУ, и его следует избегать, где это возможно. По сути, он просто сжимает содержимое памяти.
Уменьшение системной памяти
- Урезаны процессы system_server и SystemUI (сэкономлено несколько МБ).
- Предварительная загрузка кешей dex в Dalvik (сэкономлено несколько МБ).
- Подтвержденная опция JIT-off (экономит до 1,5 МБ на каждый процесс).
- Уменьшены накладные расходы на кэш шрифтов для каждого процесса.
- Представлен ArrayMap/ArraySet и широко используется в платформе в качестве более компактной замены HashMap/HashSet.
В основном здесь происходит просто уменьшение потребления памяти различными процессами, запущенными на устройстве, чтобы быть максимально консервативным. Основные системные службы были удалены, чтобы использовать как можно меньше памяти в фоновом режиме, поскольку важен каждый мегабайт оперативной памяти.
Android Go использует модифицированный убийцу малой памяти и оптимизацию 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 должен заставить старое, недорогое устройство работать лучше.