phh treble settings что это
[Обсуждения] Что такое Project Treble? Нужен ли он на Xiaomi Mi A1?
Project-Treble-before-and-after-e1511881174506.png (31.54 KB, Downloads: 41)
2018-09-24 03:05:31 Upload
Проблема c Android 7.0 Nougat и более старыми версиями заключается в том, что в них не было разделения между аппаратным кодом низкого уровня производителей и кодом операционной системы AOSP более высокого уровня. Поэтому компаниям приходилось ждать, пока каждый производитель процессоров оптимизирует новую ОС, а только потом уже сами компании дорабатывали их под свои смартфоны. Project Treble предназначен как раз для решения этой проблемы. Он сможет отделять ОС Android от реализации аппаратного кода поставщика, что позволяет компании Google и сторонним производителям обновлять ОС без необходимости перенастраивать все компоненты аппаратного обеспечения нижнего уровня. Конечно, многие производители хотят добавлять свои функции в ОС, что занимает много времени, даже не смотря на наличие Project Treble. Но, в любом случае, с данной структурой обновления будут выходить быстрее, т.к. время на оптимизацию ОС сократится в несколько раз. Особенно выигрывают пользователи Android One, т.к. в их системе нет дополнительных надстроек, и PT позволит им получать обновления максимально быстро.
Как будут работать новые обновления?
Android-Architecture-Pre-Oreo-J.jpg (48.03 KB, Downloads: 43)
2018-09-24 03:09:41 Upload
Очень важно понимать, что Android использует ядро Linux. Оно является частью операционной системы, которая обрабатывает команды для ввода и вывода определенных данных. Иными словами, благодаря ему программное обеспечение взаимодействует с оборудованием. Чтобы внести какие-либо изменения в Android ОС, придется также изменить систему работы с ядром Linux. Чтобы решить проблему уровня абстракции аппаратного обеспечения, Android Oreo получил разделение между вспомогательными системами, такими как аудио или камера, и их клиентами со стороны программного обеспечения. Эти новые разделы определяют интерфейс между HAL и его пользователями. На данный момент существует около 60 таких разделов для различных аппаратных компонентов (HIDL). Главная цель HIDL — позволить заменить фреймворк без необходимости изменения HAL. HAL будут создавать производители смартфонов и процессоров. Их будут встраивать в устройства. Благодаря этому фреймворк сможет изменяться после обновлений (OTA) без необходимости изменения HAL. Чтобы обновлять устройства, работающие с более ранними версиями Android до Android Oreo, надо будет пройти старую процедуру обновления. А уже потом можно спокойно переходить на Project Treble. Также очень важным нововведением стало то, что поддержка ядра Linux увеличилась с 2-х до 6 лет, благодаря Project Treble. Если раньше устройства (не от Google) получали обновления в течение одного года, то сейчас данный срок может увеличиться в несколько раз.
Android-Architecture-Post-Oreo-J.jpg (48.58 KB, Downloads: 37)
2018-09-24 03:08:29 Upload
Последствия Project Treble
С точки зрения пользователя, обновления ОС будут приходить точно так же, как и сейчас. Компании по-прежнему смогут перенаправлять обновления OTA, которые вы можете загрузить в фоновом режиме. Единственное, данный процесс будет происходить немного быстрее, а также увеличится срок поддержки устройств. Благодаря Project Treble разработчики кастомных прошивок смогут гораздо быстрее оптимизировать ОС под определенный смартфон. Если раньше для этого требовались недели или даже месяцы, то сейчас это все можно сделать за пару дней. Большинство пользователей ресурса XDA уже в восторге от перспектив. Разработчик под ником «OldDroid» назвал это прорывом. Ему удалось установить кастомную прошивку Android Oreo на Huawei Mate 9, для которого вообще не было ни одной сторонней прошивки Android Nougat. Возможно, мы приближаемся ко времени, когда программное обеспечение Android ОС можно будет легко портировать на разные устройства, подобно тому, как Windows может работать с огромным набором аппаратных конфигураций с минимальными требованиями. Но на данный момент не это является целью Project Treble.
Источник: galagram.com
Что такое Project Treble? Поддерживает ли мой смартфон Android данную технологию?
Одна из самых частых жалоб на Android заключается в очень сильной «фрагментации» платформы. На данный момент существует восемь различных версий мобильной операционной системы Android, которые до сих пор используются на устройствах с различным аппаратным оснащением.
Стандарты в индустрии устанавливает компания Apple. Если самой популярной системой Android остается выпущенная два года назад Android 7.x Nougat, то более 75% iOS уже работают на самой свежей iOS 11.
Давайте детально взглянем на статистику устройств Android от Google. 23,5% устройств работает на Android 6.x (Marshmallow), а 30,8% управляются Android 7.x (Nougat). Это означает, что более половины устройств Android работают на системах возрастом около 2 лет. Лишь на 12,1% устройств установлена последняя версия Android 8.x (Oreo). Если говорить откровенно, то более 85% устройств Android имеют устаревшее программное обеспечение и более 13% находятся под управлением пятилетней (или более старой) операционной системой.
Можно выделить две основные причины данной плачевной ситуации: политика производителей и цикл обновления Android.
Project Treble приходит на помощь
Производителям нужно проводить работу по оптимизации обновления операционной системы под конкретное оборудование. Данный процесс требует много времени и часто бывает просто нерентабелен.
Обычно срабатывал следующий сценарий: операционная система и низкоуровневое программное обеспечения были частью одного и того же кода. Поэтому, когда ОС получала обновление, низкоуровневый программный модуль тоже должен был обновиться с помощью собственной реализации производителя. Для этого требуется много ресурсов.
Начиная с Android 8.x (Oreo), Google решила разделить два этих процесса. Теперь операционная система Android сможет получать обновления без реализации производителя. Собственные модули производителя также могут обновляться при необходимости.
Таким образом, в Android 7.x и более ранних версиях Android обновлять нужно было не только операционную систему, но и низкоуровневый код для аппаратных модулей, обновления для последнего поступали от производителя чипов. Например, если компания Samsung хотела выпустить обновление для одного из своих смартфонов, она должна была подождать обновление от Qualcomm, которое бы заставило установленный чип работать с обновленным кодом Samsung. Данные зависимости усложняли и затягивали процесс обновления.
В Android 8.x и выше данная ситуация больше не повторится. Так как низкоуровневый код отделен от кода операционной системы, производители устройства могут обновить программное обеспечение, не дожидаясь обновления низкоуровневого кода от партнеров, поставляющих микросхемы.
Данное изменение должно существенно ускорить процесс обновления. Производитель устройства получает независимый контроль над обновлениями. Таким образом, Project Treble позволит существенно увеличить скорость разработки и развертывания обновления.
Поддерживает ли мое устройство Project Treble
Project Treble получат не все устройства. Предусмотрено несколько ограничений:
Вывод: поддержка Project Treble зависит от производителей, но новые устройства Oreo должны будут поддерживать данную технологию.
На сайте Android Police доступен список устройств, которые получат поддержку Project Treble, а также которые будут обновлены до Oreo без поддержки Treble.
Как проверить поддержку Project Treble на устройстве Android 8.0+
Примечание: для данного способа не требуются права root.
Заключение
Обновления Android становились предметом жалоб на протяжении многих лет. Приятно видеть, что Google решает данную проблему. Данное улучшение приведет к тому, что все устройства Android будут ближе к паритету с Apple с точки зрения обновлений устройств.
Как установить Android 11 GSI на любое устройство Project Treble
Замечания: Как вы знаете, мы тестируем GSI Android 11 на Poco F1. Кроме того, обязательно сделайте резервную копию всех ваших файлов, поскольку, скорее всего, вам придется полностью стереть внутреннее хранилище из-за проблем с шифрованием.
Project Treble
Если вы хотите начать разработку приложения для следующей версии Android – вы уже можете протестировать своё приложение с помощью эмулятора Android Studio, или смартфона линейки Google Pixel. В этом году Google представила очередную разработку под названием Project Treble, которая позволит производителям быстрее выпускать обновления для приложений на Android. Вы можете установить официальную GSI-сборку Android Q на своё устройство, если оно совместимо с Project Treble.
Суть Project Treble заключается в модульности операционной системы, когда основа ОС отделена от установленных поверх неё прошивок. Это позволит производителям менять только основу ОС при выходе новых версий Android, что увеличит скорость выхода обновлений. В дополнение к тестам CTS, с помощью которых тестируются приложения, появился новый набор тестов VTS, или Vendor Test Suite.
С помощью тестов VTS производители смогут проверить, соответствуют ли их устройства требованиям Project Treble. Одна из самых главных деталей, которую необходимо проверять производителям устройств при выходе очередного обновления – это возможность загрузки GSI-сборки на устройства, совместимые с Project Treble. GSI-сборка – это чистая версия Android, которую используют производители устройств для проверки на наличие поддержки Project Treble, при выпуске нового смартфона. Однако Google хочет, чтобы разработчики использовали GSI-сборки для проверки своих приложений на совместимость с актуальной версией Android.
Например, если у вас смартфон Google Pixel, единственный способ протестировать своё приложение в будущей версии Android – это установить эмулятор Android Studio. Вы также можете воспользоваться специальным облачным сервисом для тестирования, ну или купить смартфон Google Pixel.
У каждого из этих способов есть свои преимущества и недостатки, но если у вас есть рабочее устройство, которое совместимо с Project Treble, и вы не хотите тратить деньги на покупку полной версии Android Studio, чтобы снять все ограничения, почему бы не установить GSI-сборку на своё устройство? Если ваше приложение будет хорошо работать на GSI-сборке, то оно, скорее всего, будет также работать на всех устройствах с этой версией Android.
Открытый код Android Q не будет доступен до августа 2021 года, поэтому официальные GSI-сборки – это единственный способ протестировать Android Q на смартфонах, которые не входят в линейку устройств Pixel.
Как узнать, поддерживает ли мой смартфон Project Treble?
Мой смартфон имеет поддержку Project Treble с типом обновления «А» Узнать, поддерживает ли её ваш смартфон крайне просто. Для этого есть бесплатное приложение Treble Check, доступное в Google Play. Софт не только даст вам информацию о том, поддерживает ли ваш девайс технологию, о которой мы говорим, но и какой тип обновления системы предусмотрен производителем. Это важный момент, так как если ваш смартфон имеет схему обновления «A», то в таком случае вам не подойдут прошивки от схемы «A/B» и наоборот. На профильных форумах этой теме и подборкам прошивок посвящены целые разделы.
Разница между прошивками «A» и «A/B» кроется в типе обновления. В случае с «А» прошивка вносит изменения только на уровне операционной системы Android, все остальное — графическая оболочка и прочие программные надстройки от производителя остаются нетронутыми. А прошивки с методом обновления «A/B» вносят изменения на обоих уровнях. Примечательно, что есть смартфоны, которые поддерживают исключительно первый, либо второй вариант. Изменить данное свойство, к сожалению, не представляется возможным.
У вас также мог возникнуть резонный вопрос, насчет того, почему я пишу этот материал в 2021 году, ведь технологии уже целых два года. Согласно последней официальной статистике, опубликованной Google в мае 2021 года процент устройств, работающих на версиях Android 8 Oreo и Android 9 Pie, в которых и реализована поддержка пресловутой технологии Project Treble, достиг 37%.
И на данный момент она становится все более и более массовой, а значит материал может быть полезен для довольно большого числа людей, интересующихся прошивками и дальнейшей судьбой своих устройств. Будем вместе надеяться на то, что Google будет держать планку и со временем делать свою операционную систему все лучше и лучше, вводя действительно полезные нововведения.
Обсудить будущее операционной системы Android и не только вы можете вместе с участниками нашего лампового чата в Telegram.
Требования
Перед началом установки бета-версии Android Q необходимо проверить устройство на совместимость с Project Treble, и можно ли установить образ системы из загрузчика.
Что нужно сделать в-первую очередь?
Перед тем, как мы приступим к следующему шагу, мы должны вас предупредить, что при установке GSI-сборки придётся полностью форматировать ваше устройство. Поэтому сделайте резервную копию своих данных, прежде чем приступать к каким-либо действиям.
Ещё один важный момент, все GSI-сборки не проходят тесты CTS на момент своего выхода. Поэтому, если ваше приложение использует протокол SafetyNet для проверки устройства на прохождение CTS-теста – ничего не получится. Кроме того, эти сборки не рекомендуется использовать на постоянной основе, так как они полны различных багов. Google опубликовала список с известными на данный момент багами GSI-сборок у себя на сайте. В случае обнаружения новых багов, вы можете сообщить об этом Google, заполнив соответствующую форму (см. Google Issue Tracker).
Treble
Вопреки расхожему мнению, основная проблема, с которой сталкиваются производители смартфонов при обновлении прошивок своих телефонов, — это вовсе не пофигизм и лень (хотя это тоже часто встречается), а необходимость ждать, пока производители чипсетов и других хардварных компонентов обновят драйверы до новой версии Android.
Дело в том, что Android, как и многие другие продукты Google, очень долгое время развивался в режиме вечной беты. Это значит, что Android менялся. Не только и не столько в плане интерфейса, сколько в плане внутренней архитектуры.
В Android никогда не было устоявшегося, обратно совместимого интерфейса между системой и драйверами. В большинстве случаев нельзя было просто взять новую версию Android и «посадить» ее на драйверы и ядро Linux от старой версии. Почти всегда что-нибудь да отваливалось.
Требовались обновленные драйверы, разработкой которых занимался производитель железа, а вовсе не производитель смартфона. Поэтому, если производитель чипсета, камеры или Wi-Fi-адаптера по тем или иным причинам отказывался поддерживать старое железо (что происходит очень часто, а в случае с такими компаниями, как MediaTek, постоянно), полноценный порт новой версии Android становится почти невозможен.
Создатели кастомных прошивок искали обходные пути, чтобы заставить новую версию Android работать на старых драйверах. В дело шли любые приемы от простого «не работает, забейте» до различных программных прослоек, обеспечивающих работу на устаревших драйверах. Так, в кастомных прошивках для Xiaomi Redmi 1s есть прослойка, которая позволяет использовать камеру в Android 7.1.1, хотя драйверы для нее застряли еще на уровне версии 4.4.4.
Однако для компании — производителя смартфона такой подход зачастую неприемлем. Устройство с выполненным подобным образом портом может просто не пройти сертификацию Google. Кроме того, такие прослойки нередко приводят к сбоям в неожиданных местах и не обеспечивают новую функциональность, которая может требоваться Android для корректной работы (например, поддержка новых режимов камеры).
К счастью, в какой-то момент Google решила положить конец этой вакханалии и стандартизовать-таки программный интерфейс между драйверами и Android. Это и есть инициатива Treble, и она была воплощена в жизнь в Android 8.0.
Суть Treble проста и уже должна быть понятна: код Android разделяется на две независимые части, одна из которых содержит драйверы и весь зависимый от железа код, а вторая — саму операционную систему. Программный интерфейс между этими компонентами стандартизуется и остается стабильным между релизами Android. Как результат, для портирования новой версии Android достаточно портировать платформенно независимую часть системы, и она корректно заработает на имеющихся драйверах и версии ядра Linux, с которой смартфон был выпущен на рынок.
Так было…
…а так теперь
Это в теории. На практике же есть пара подводных камней.
Теперь о самих Treble-совместимых прошивках. Сразу после выпуска Android 8.0 Google начала публиковать так называемые образы GSI (Generic System Image). Это официальная сборка «чистого» Android (AOSP) для Treble-совместимых устройств. В теории ее можно прошить на разблокированное устройство с помощью fastboot и получить официальный Android.
Android 10 GSI на 15 различных устройствах
Чуть позже GSI-сборки начали подготавливать и разработчики кастомных прошивок. Например, ты можешь скачать GSI-сборку от phhusson с множеством фиксов для разных устройств. В теме, посвященной Treble, на 4PDA есть множество Treble-совместимых прошивок, включая LineageOS. Ну а проверить свое устройство на совместимость с Treble можно с помощью приложения Treble Check.
Проверяем совместимость с Project Treble
Откройте консоль на компьютере и введите следующую команду:
adb shell getprop ro.treble.enabled
Если в ответ придёт false, значит ваше устройство не совместимо с Project Treble. Так что дальше можете не продолжать. Если же ответ true, переходим к следующему шагу.
Затем вводим эти команды:
В полученном ответе нужно найти раздел [vendor], а внутри этого раздела найти строку namespace.default.isolated. Если напротив стоит значение true, значит на ваше устройство можно установить GSI-сбоку поверх образа Android 9 Pie. Если же стоит значение false, тогда вы можете установить GSI-сборку только той версии, которая сейчас стоит на вашем устройстве.
Как это должно выглядеть на примере OnePlus 6T
Теперь вам нужно подтвердить, есть ли на вашем устройстве рут. Если ваше устройство было обновлено до Android 9 Pie, наличие рута необязательно, но он необходим для поддержки OTA-обновлений. Введите следующие команды, чтобы проверить, есть ли на вашем устройстве рут:
Теперь, когда вы убедились, что ваше устройство поддерживает Project Treble, вам нужно выяснить какую версию GSI-сборки скачивать, так как есть различные образы для различных архитектур. Введите следующую команду, чтобы узнать, какая архитектура используется на вашем устройстве:
adb shell getprop ro.product.cpu.abi
Выпишите на листок бумаги полученную информацию: она вам понадобится при скачивании GSI-сборки.
Вывод
По мнению Google, Project Treble ускорит и упростит выход обновлений. А первой модульной версией ОС, станет Android 8.0 Oreo, где реализована установка обновлений, при полном отсутствии свободного места во внутреннем накопителе. Так же, если производитель мобильного устройства прекратит дальнейшую поддержку, при помощи Google Play получится и дальше получать актуальные патчи безопасности, где закрыты различные уязвимости системы. Владелец не получит новые функции, за то снизится вероятность взлома и кражи личной информации.
Скачиваем GSI-сборку
Как только файл скачается, распакуйте его. Внутри должно быть 2 файла: system.img и vbmeta.img.
Установка GSI-сборки
На этом всё, при дальнейшем запуске смартфона он должен запуститься с установленной GSI-сборкой. Стоит отметить, что Android Q beta 2 GSI не получается установить на OnePlus 6T, а вот на Xiaomi Mi 9 можно. Пишите свои мысли о новом Android Q в комментариях.
Долгая дорога к быстрым обновлениям Android
Поскольку это моя первая публикация на Хабр, давайте для начала представлюсь: меня зовут Федор, я из Нижнего Новгорода и работаю в компании Orion Innovation техническим менеджером/СТО. На практике это означает, что я отвечаю за направление Android Platform – написание прошивок для разных устройств под Android. Если вы, вдруг, меня знаете, то, скорее всего, по моим выступлениям на Mobius и других конференциях. А данная статья – это обобщение пары моих докладов, сдобренное разными деталями, ссылками и отступлениями от темы, на которые в рамках доклада обычно не хватает времени. С представлением закончили, дальше статья.
Для создания конфликта в каждом повествовании должен быть свой злодей. В моей истории злодей – Фрагментация Android. Как благородный рыцарь, Google сражается с нашим злодеем в ожесточенной схватке с самого начала существования операционной системы. В этой борьбе были победы и поражения, менялись тактики и приемы, но счастливый финал по-прежнему остается вне досягаемости.
Проблема фрагментации
Пожалуй, начать стоит со статистики, знакомой каждому Android-разработчику:
Из этой картинки видно, как много людей все еще используют телефоны со старыми версиями Android – почти все. Значит и разработчикам приходится ориентироваться на эти старые версии в своих приложениях. И порою это означает отказ от многих преимуществ последней версии Android.
Google, конечно же, в курсе данной проблемы. Разработчикам Google самим вряд ли нравится то, что большинство пользователей Android не могут оценить все новинки операционной системы. Но недовольство разработчиков – это лишь верхушка айсберга.
Что хуже, многие телефоны не получают последних обновлений безопасности из-за данной проблемы. А значит, они уязвимы, что позволяет единственному конкуренту Google на мобильном рынке напирать на безопасность личных данных пользователей в своих рекламных кампаниях. Да, у iOS нет проблемы фрагментации – большинство пользователей iPhone регулярно обновляются на последнюю версию. Для Google это, вероятно, обиднее всего.
Обновления операционной системы
Так почему у Apple все отлично, а Google бьется годами и не может победить фрагментацию? Ответ в том, как работают обновления. Все-таки большинство людей не меняют телефон на новый каждый год. И с обновлениями у iOS все намного лучше. Причина тому в самом фундаментальном отличии двух систем: Apple делает и софт, и железо, а Google – только софт. Давайте объясню, как оно работает.
Что нужно сделать Apple, чтобы обновить прошивку на iPhone? Создать обновление и прислать его на устройства. Пользователю лишь остается принять эти обновления и наслаждаться последним iOS на телефоне.
Обновления в iOS
Что если Google хочет обновить Android? Вот картинка от Google, описывающая данный процесс:
Обновления в Android
Разницу заметить не сложно: процесс обновления прошивки Android-устройства гораздо сложнее, так как в него вовлечено больше сторон. iOS – это закрытая система, которая полностью контролируется одной компанией и сфокусирована на поддержке одной аппаратной платформы – iPhone. С Android все иначе. Это проект с открытым кодом и поддержкой железа от многих производителей. В результате, производители чипов и телефонов так или иначе вовлечены и в процесс обновления прошивки.
Такая открытость – одна из сильных сторон Android. Она создает конкуренцию, способствует инновациям, позволяет Android эволюционировать намного быстрее. Но увы, за это разнообразие приходится платить, и усложнение процесса обновлений – часть этой цены.
Android Update Alliance
Первые попытки
Google понимал, что проблема обновлений в необходимости кооперации между разными компаниями. В первую очередь, они решили наладить эту кооперацию административным путем. Первая попытка случилась в 2011 году и называлась «Android Update Alliance». По сути, это было торжественное обещание основных производителей Android-смартфонов и сотовых операторов выпускать своевременные обновления.
Увы, оказалось, что производителям телефонов интереснее выпускать и продавать новые устройства, а не обновлять старые. В результате Android Update Alliance умер не прожив и года. Мораль данной истории: в большом бизнесе соображения выгоды всегда возобладают над торжественными обещаниями.
Новая идея заключалась в том, что проблема может быть решена не административным, а инженерным путем. Сделать процесс обновлений и кооперации гораздо проще технически. Первый шаг был сделан в 2017 году. Он назывался Project Treble.
Project Treble
Project Treble вышел вместе с восьмым Android. И, на мой взгляд, он вполне может бороться за звание самого масштабного рефакторинга в истории. Google сумел полностью переписать половину основных компонентов операционной системы и поменять архитектуру, сделав её более модульной. Самое удивительное – никто даже не заметил изменений. Все, что работало до этого, продолжило работать как раньше.
В рамках данной статьи мы не будем вдаваться в детали Project Treble. Эта тема заслуживает отдельной публикации или даже книги. Если вам интересно, на YouTube есть запись моего выступления на Mobius по данной теме.
Вкратце: цель Project Treble в том, чтобы убрать производителей чипов из процесса обновлений. И хотя это звучит не так страшно, усилия Google были огромными. В разных интервью сотрудники Google говорили о том, что 300 человек были вовлечены в проект в течение года, чтобы воплотить в жизнь необходимые перемены:
«Vendor» здесь – это производитель чипов (например, Qualcomm). И хотя иллюстрация выше излишне все упрощает, из нее можно понять основную идею: Project Treble поделил код Android на Framework (верхнеуровневые сервисы и приложения) и Vendor Part (нижний уровень драйверов и HALов). Производитель чипов в новой модели отвечал за нижнюю часть, в то время как Google и производители устройств могли сконцентрироваться на верхней.
Две части системы были разделены Vendor интерфейсом. Он был стандартизирован Google, имел четкую систему версий и был обратно совместим. Все это позволяло выпускать обновления для обеих частей почти независимо друг от друга, а значит делало процесс обновлений проще и быстрее.
С технической точки зрения проект внушал только уважение. Но решил ли он свою бизнес задачу? Стали ли обновления проще и быстрее? В качестве ответа на этот вопрос Google опубликовал график скорости обновлений через 2 года после выхода Project Treble:
Из него видно, что обновления на Android 9 шли вдвое быстрее обновлений на Android 8. Во многом это заслуга Treble. Также видно, что Treble начал работать только с 9-ки, хотя и вышел с Android 8. Дело в том, что Treble упростил процесс обновления с 8-ки, но процесс обновления на 8-ку проще не стал. Вот такая же статистика перехода на Android 10:
Как видите, с Android 10 все даже лучше: 400 миллионов пользователей на 10-й версии меньше чем за год. Так что же, проблема решена, злодей повержен? Увы, даже из этих графиков можно понять, что проблема далека от решения. Достаточно лишь посмотреть на них внимательнее:
1. Графики показывают глобальные объемы, но не показывают проценты. И они включают в себя как старые телефоны, получившие Android 10 через обновления, так и новые устройства, изначально выпущенные с Android 10. То есть бОльшие цифры могут отражать большое количество новых телефонов. И это на самом деле так – сегодня в мире 2,5 миллиарда активных пользователей Android. И это число увеличивается на 1,5 миллиона ежедневно.
2. Рост на всех графиках начинается где-то спустя 100 дней после релиза новой версии Android. И даже спустя год, рост не замедляется. Это означает, что большинство людей еще не получили обновление прошивки.
3. iOS на километр впереди: если построить подобный график для последней версии iOS, заменить общие объемы на проценты, то мы увидим, что скорость обновления iOS раз в 10 выше.
В целом, можно сказать, что Project Treble сделал обновления лучше, но не решил проблему полностью. Но это был явно шаг в верном направлении, и Google решил шагать дальше. В 2019 вышел Android 10, а вместе с ним – Project Mainline.
Project Mainline
Суть Project Treble была в разбивке монолитной системы на несколько частей. Это позволило разделить код Android на области ответственности между производителями чипов и производителями устройств. Project Mainline стал продолжением и углублением данного подхода – модульность 2.0. Если Treble делил систему на две части, Mainline выделил уже с десяток модулей. Новая архитектура выглядела примерно так:
Теперь в Android появилось новое понятие – «модульный системный компонент» или просто «модуль». Им может стать любой компонент системы: приложение, сервис, библиотека. Главная изюминка модулей в том, что Google может обновлять их напрямую через Google Play. Ни производители чипов, ни вендоры устройств не участвуют в этом процессе – Google присылает обновления пользователям напрямую.
Какие же компоненты системы Google решил обновлять таким образом? В Android 10 все модули поделили на 3 категории по той роли, которую они должны были играть. Вот еще одна картинка от Google, описывающая эти три корзины:
Security – самая понятная категория. Любую уязвимость, связанную с безопасностью, Google хочет закрыть ASAP. Поэтому они выбрали несколько мест в системе, наиболее тесно связанных с безопасностью, и превратили их в модули.
Privacy – категория, которая не так сильно отличается от Security по смыслу. Она должна помочь с защитой пользовательских данных и приватностью, а это в некотором роде часть Security. Возможно, свою роль тут сыграли уже соображения маркетинга и желание подчеркнуть слово Privacy в пресс-релизах. По сути, можно сказать, что Privacy модули это те же Security, но напрямую связанные с permissions.
Consistency – самая интересная категория, на мой взгляд. Во-первых, не сразу понятно, как именно «стабильность, совместимость и последовательность» связаны с модульными обновлениями. Это безусловно достойные цели, но скорость обновлений системы не всегда с этим связана. Во-вторых, большинство модулей попадают именно в эту, наименее очевидную категорию. Включая самый большой и интересный модуль – Android Runtime.
Android Runtime (ART)
Что такое Consistency
Android Runtime заслуживает отдельного упоминания. Для начала, в Android 11 он обновляется только вместе со всей системой (по слухам, в Android 12 Runtime может стать независимо обновляемым). То есть это как бы независимый модуль, но при этом он не получает независимых обновлений. Логичный вопрос: зачем же он тогда нужен? Однозначного ответа у меня нет, но я могу предложить несколько версий.
Первая версия: Google, возможно, хотел бы обновлять Runtime отдельно, но он несет в себе львиную долю самого «ядерного» функционала Android. Этот модуль включает ART – виртуальную машину, внутри которой существует любое Android-приложение. И это лишь один из примеров того, что внутри Runtime модуля много других вещей, сравнимых по важности. Можно сказать, что без Runtime модуля ничего в Android работать не будет. И, видимо, отделить Runtime от «немодульного» Android оказалось пока невозможно.
Вторая версия: перемещение некоторого функционала в модуль может быть полезным, даже если этот модуль невозможно обновлять отдельно. И польза эта как раз в Developer Consistency. Если производители устройств не могут менять код внутри модуля, это означает, что на всех устройствах он будет работать одинаково. Для разработчиков приложений это хорошая новость. Большинство новых модулей в Android 11 следуют этой логике, добавляя новые API через модули, чтобы они работали одинаково на всех устройствах и прошивках.
На данный вопрос можно посмотреть и под иным углом. Модули могут быть использованы Google как довольно сильный инструмент контроля производителей телефонов. Все-таки у новой модельной архитектуры можно выделить два ключевых последствия:
Google может обновлять модули напрямую, не спрашивая согласия вендоров;
вендоры не имеют права трогать код внутри модулей.
И если первое следствие наверняка является основной причиной появления Project Mainline, второе тоже не стоит сбрасывать со счетов. И Runtime, вполне вероятно, существует именно для достижения второй цели. Помещая «ядерный» функционал в отдельный модуль, Google гарантирует единообразие работы этого функционала на всех телефонах. На мой взгляд, именно так и стоит перевести «consistency» – единообразие.
Как косвенное подтверждение такого мотива Google, можно привести следующий факт: хотя Mainline и позволяет Google быстро обновлять модули, общие обновления системы быстрее от этого почти не стали, так как они все еще приходят от вендоров телефонов.
То есть Project Mainline не был задуман для того, чтобы сделать обновления системы быстрее. И он не поможет уменьшить фрагментацию. Его задача – снизить негативные эффекты фрагментации, вынеся часть системы «за скобки». И пусть обновления не станут при этом быстрее, но это будет уже не так критично.
В этом суть Project Mainline – это технический вариант решения текущей проблемы. Google наконец-то понял, что не сможет заставить производителей телефонов обновлять их чаще и поддерживать дольше. Вместо этого Google просто лишил их контроля над самыми важными и критичными кусками Android и теперь будет обновлять их напрямую. И есть у меня подозрение, что конечные пользователи от этого только выиграют.
Выводы
На этом моя статья подходит к концу, но борьба Google с фрагментацией, вероятно, продолжится. Уже сейчас можно сказать, что Android претерпел на этом пути кардинальные изменения, которые не ограничиваются одними лишь обновлениями. Google перекроил всю архитектуру системы, сделал ее модульной, установив границы и зоны ответственности. Да, в результате обновления стали быстрее, а фрагментация менее критичной, но в целом это выглядит как лишь один из эффектов лучшей архитектуры.
На сегодняшний день Android так и не удалось полностью справиться с проблемой фрагментации и сравняться со своим основным конкурентом. Это связно с тем, что Android, в отличие от iOS, – продукт совместной работы многих компаний, и за это придется платить. А значит борьба продолжится, и мы можем ждать дальнейших решений Google по оптимизации архитектуры своей ОС.
Несмотря на это, на решение проблемы было брошено много усилий, и можно ожидать, что проблема фрагментации будет становиться все менее критичной. Project Mainline должен с этим помочь. В конце концов, так ли важно будет пользователям, какая версия Android крутится на их телефонах, если их личные данные в безопасности и все приложения работают должным образом?