project treble что это
Что такое 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 с точки зрения обновлений устройств.
Что такое Project Treble и с чем его едят
В 2017 году, компания Google, вместе с выпуском операционной системы Android 8.0 Oreo показала новую технологию Project Treble, которая поможет производителям ускорить выпуск обновлений на свои устройства. Но, кроме этого, она также упростила энтузиастам процесс создания кастомных прошивок. О том, как работает данная технология и почему этого не было раньше я расскажу вам далее в материале.
В Android-смартфонах для меня всегда была лишь одна проблема — это долгие обновления
В Android-смартфонах для меня всегда была лишь одна проблема — это долгие обновления
Сначала немного о личном. Я пользуюсь Android-смартфонами начиная с 2011 года — у меня было множество бюджетных и среднебюджетных моделей. И все они имели общую проблему с обновлениями. Производители либо вовсе забивали на поддержку своих устройств, либо выпускали обновления с большой задержкой. Переход на флагманский Samsung Galaxy S8 эту проблему также не решил.
Компания Samsung, выпустила последнее обновление Android 9 Pie вместе с оболочкой One UI спустя практически полгода, с момента презентации операционной системы самой Google. Однако в «Корпорации Добра» эту проблему признают и предлагают методы борьбы с ней. Эти методы, кстати, по стандарту встроены во все версии операционной системы Android начиная с 8.0 Oreo. То есть, если вы приобрели девайс, и он из коробки работает на одной из последних версий операционной системы Android, могу вас лишь поздравить, проблема с программной поддержкой коснётся вас в меньшей степени, и вот почему.
Как работает Project Treble
Визуальное объяснение того, как теперь устроен Android «внутри»
Раньше, каждая версия операционной системы имела разный набор команд и фреймворков, из-за чего производителям смартфонов, а также мобильных чипсетов было необходимо переписывать весь свой софт практически с нуля. Google подошли к решению этой проблемы следующим образом: отныне Android, по своей сути, состоит из двух программных уровней, которые никак не зависят друг от друга. То есть, обновлением самого Android на устройствах с поддержкой Project Treble будет заниматься сама Google, а задача по обновлению фирменных программных надстроек ложиться на плечи производителя. В дальнейшей перспективе это может вовсе искоренить проблему задержки при выпуске обновлений Android для всех устройств.
Как я уже сказал выше, реализация Project Treble в системе упростила написание прошивок не только для производителей, но и энтузиастов, которые занимаются созданием модифицированных сборок Android. Таким образом, к примеру, для смартфонов бюджетного и среднебюджетного сегмента уже сейчас существуют полноценные сборки свежеиспеченного Android Q. Я, к примеру, установил такую на свой Ulefon Armor 6, использующийся мной для тестов, и могу сказать, что прошивка работает вполне стабильно. Примечательно, что это не специальная сборка под мой аппарат, она доступна всем владельцам смартфонов с поддержкой технологии Project Treble. К слову, ранее мы уже писали про то, как отразился ввод Project Treble в Android на скорости выхода обновлений.
Как узнать, поддерживает ли мой смартфон Project Treble?
Мой смартфон имеет поддержку Project Treble с типом обновления «А»
Узнать, поддерживает ли её ваш смартфон крайне просто. Для этого есть бесплатное приложение Treble Check, доступное в Google Play. Софт не только даст вам информацию о том, поддерживает ли ваш девайс технологию, о которой мы говорим, но и какой тип обновления системы предусмотрен производителем. Это важный момент, так как если ваш смартфон имеет схему обновления «A», то в таком случае вам не подойдут прошивки от схемы «A/B» и наоборот. На профильных форумах этой теме и подборкам прошивок посвящены целые разделы.
Разница между прошивками «A» и «A/B» кроется в типе обновления. В случае с «А» прошивка вносит изменения только на уровне операционной системы Android, все остальное — графическая оболочка и прочие программные надстройки от производителя остаются нетронутыми. А прошивки с методом обновления «A/B» вносят изменения на обоих уровнях. Примечательно, что есть смартфоны, которые поддерживают исключительно первый, либо второй вариант. Изменить данное свойство, к сожалению, не представляется возможным.
У вас также мог возникнуть резонный вопрос, насчет того, почему я пишу этот материал в 2019 году, ведь технологии уже целых два года. Согласно последней официальной статистике, опубликованной Google в мае 2019 года процент устройств, работающих на версиях Android 8 Oreo и Android 9 Pie, в которых и реализована поддержка пресловутой технологии Project Treble, достиг 37%.
И на данный момент она становится все более и более массовой, а значит материал может быть полезен для довольно большого числа людей, интересующихся прошивками и дальнейшей судьбой своих устройств. Будем вместе надеяться на то, что Google будет держать планку и со временем делать свою операционную систему все лучше и лучше, вводя действительно полезные нововведения.
Обсудить будущее операционной системы Android и не только вы можете вместе с участниками нашего лампового чата в Telegram.
Что такое Project Treble и будущее обновления Android ОС
Самая большая проблема операционной системы Android — это долгие обновления. Понятно, что для Nexus и Pixel устройств обновления системы выходят очень быстро, но к сожалению другим OEM-производителям стоит ждать довольно долго, пока выйдут специальные версии, которые компании будут дорабатывать. Многие пользователи жалуются уже очень давно на данную проблему.
Вот буквально с выходом Android 8.0 Oreo компания Google анонсировала специальную структуру новой ОС под названием Project Treble. Данная структура позволит ускорить процесс обновления операционной системы для OEM-производителей в несколько раз. Project Treble, возможно, является одним из самых больших изменений в Android Oreo. В данной статье мы расскажем как это повлияет на Android в будущем.
Зачем нужен Project Treble
Многие критикуют Android из-за того, что большинство топовых устройств все еще работают на устаревшей операционной системе, в то время как даже очень старый iPhone 5S получил обновление до iOS 11. Вся эта критика, отчасти, не обоснованная. Ведь компания Apple делает свою операционную систему только для iPhone, а Google для большого количества других производителей.
Но поскольку смартфоны приобретают все более важную роль в жизни человека: хранение огромного количества личных данных, финансовые реквизиты, фотографии и др., поэтому получать последние патчи безопасности и свежие обновления ОС очень важно.
Проблема медленного обновления связана с тем, что слоты программного обеспечения Android взаимодействуют с базовым аппаратным обеспечением телефона. Чтобы приложения могли работать на процессоре или использовать камеру, ОС должна взаимодействовать с подключенным оборудованием через слой абстракции аппаратного обеспечения (HAL).
Это очень важно, особенно если вы хотите, чтобы сторонние приложения из Play Store взаимодействовали с камерой любого телефона. HAL разработаны как низкоуровневый драйвер-агностик. Ниже находится ядро Linux, которое обрабатывает аппаратную связь между HAL и точными компонентами телефона. Он должен быть скомпилирован в зависимости от конкретного оборудования смартфона.
Проблема c Android 7.0 Nougat и более старыми версиями заключается в том, что не было разделения между аппаратным кодом низкого уровня у производителей и кодом операционной системы AOSP более высокого уровня. Поэтому компаниям приходилось ждать, пока каждый производитель процессоров оптимизирует новую ОС, а только потом уже сами компании дорабатывали их под свои смартфоны.
Project Treble предназначен как раз для решения этой проблемы. Он сможет отделять ОС Android от реализации аппаратного кода поставщика, что позволяет компании Google и OEM-производителям обновлять ОС без необходимости перенастраивать все компоненты аппаратного обеспечения нижнего уровня.
Понятное дело, что все производители хотят добавлять больше своих новых функции в ОС. А это все занимает много времени, даже не смотря на наличие Project Treble. Но, в любом случае, с данной структурой обновления будут выходить быстрее, т.к. время на оптимизацию ОС сократится в несколько раз.
Как будут работать новые обновления
Очень важно знать, что 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) получали обновления в течение одного года, то сейчас данный срок может увеличиться в несколько раз.
Как вы можете видеть, переход на Project Treble требует немного работы со стороны производителей оборудования. Как только данное изменение реализуют все OEM-производители на своих устройствах, то им не придется работать над изменениями в новой ОС. Надо будет лишь обновить фреймворк старой операционной системы на новый.
В официальном описании Project Treble говорится о том, что все новые устройства, которые выйдут уже с Android Oreo на борту, получат поддержку данной структуры. А это значит, что смартфоны, которые обновятся с Android 7.0 до 8.0, скорее всего, не будут ее поддерживать. Например, недавно вышедший OnePlus 5T, который из коробки работает на Android Nougat. Но в тоже время, первое поколение смартфонов Pixel после обновления до Android 8.0 Oreo получило поддержку Project Treble.
Естественно Project Treble не подразумевает то, что все смартфоны будут получать обновления мгновенно, т.к. Google не обрабатывает их напрямую. OEM-производители по-прежнему будут добавлять какие-то изменения в систему, а также внедрять собственное программное обеспечение. Поэтому добавление своих функций, а затем тестирование новой ОС займет некоторое время. И только потом они смогут присылать обновление на смартфоны. В любом случае, процедура будет занимать гораздо меньше времени.
Последствия Project Treble
С точки зрения пользователя, обновления ОС будут прилетать точно так же, как и сейчас. Компании по-прежнему смогут перенаправлять обновления OTA, которые вы можете загрузить в фоновом режиме. Единственное, данный процесс будет происходить немного быстрее, а также увеличится срок поддержки устройств.
Благодаря Project Treble разработчики кастомных прошивок смогут гораздо быстрее оптимизировать ОС под определенный смартфон. Если раньше для этого требовались недели или даже месяцы, то сейчас это все можно сделать за пару дней.
Большинство пользователей ресурса XDA уже в восторге от перспектив. Разработчик под ником «OldDroid» назвал это прорывом. Ему удалось установить кастомную прошивку Android Oreo на Huawei Mate 9, для которого вообще не было ни одной сторонней прошивки Android Nougat.
Возможно, мы приближаемся ко времени, когда программное обеспечение Android ОС можно будет легко портировать на разные устройства, подобно тому, как Windows может работать с огромным набором аппаратных конфигураций с минимальными требованиями. Но на данный момент это не является целью Project Treble.
Заключение
Project Treble звучит очень многообещающе, но стоит понимать, что у него есть ограничения. Во-первых, это не прямое обновление от Google. Такие производители смартфонов как Samsung, Huawei и LG, по-прежнему несут ответственность за сбор и обновление ОС в своих продуктах. И это не будет происходить также быстро как у Google Pixel. Treble — это оптимизация структуры ОС, предназначенная для ускорения обновлений от производителей. Google сделала свою часть, теперь все зависит от сторонних компаний.
Во-вторых, только телефоны с Android 8.0 Oreo и новее из коробки должны поддерживать Project Treble. Смартфоны, которые обновятся до Oreo, не должны полностью поддерживать Treble, хотя производители могут реализовать это, если захотят. Также маловероятно, что кастомные прошивки смогут поддерживать Treble на многих устаревших устройствах, поскольку доступ к низкоуровневому оборудованию не является открытым исходным кодом.
Если вы сейчас ищете смартфон с поддержкой Project Treble, то на данный момент есть несколько вариантов: Pixel / Pixel 2, Essential Phone, Huawei Mate 9, Mate 10, Honor 9 и Honor 8 Pro. Пока не ясно, какие другие OEM-производители планируют поддерживать Treble в своих существующих устройствах. Конечно, флагманы следующего года с предустановленной Android Oreo будут идти уже с возможностью быстрого обновления. И это очень хорошие новости для владельцев Android-устройств.
Project treble что это
Начнем с общих вопросов:
Q: Ну и кто все это придумал? Проклятые производители простым гикам жизнь усложняют?
A: Новая структура «A/B разделов» разработана непосредственно Google-ом как часть глобальных изменений в архитектуре Android. Она успешно используется в смартфонах Google Pixel, Essential Phone и различных других устройствах. В дальнейшем все больше устройств от сторонних производителей будут ее использовать. Ничего плохого и страшного в этом нет, наоборот, открывается много новых возможностей.
Таблица разделов на примере Google Pixel:
Дабы наглядно отобразить, изложенную выше, теорию и увидеть отличия по сравнению с другими устройствами — познакомимся с таблицей разделов Google Pixel.
Если вы вообще не знакомы со структурой разделов в Linux-подобных системах, и Android в частности, — советую поискать информацию об этом в Google, благо ее полно.
Нас интересуют конкретные разделы, существующие в двух копиях для наглядности и демонстрации.
Итак (раскрываем код полностью):
/dev/block/bootdevice/by-name/aboot_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/apdp_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/bootlocker_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/cmnlib32_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/cmnlib64_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/devcfg_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/hosd_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/hyp_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/keymaster_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/msadp_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/pmic_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/rpm_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/tz_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/xbl_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/aboot_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/apdp_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/bootlocker_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/cmnlib32_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/cmnlib64_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/devcfg_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/hosd_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/hyp_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/keymaster_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/msadp_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/pmic_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/rpm_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/tz_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/xbl_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/modem_a # Раздел первого модема/радиомодуля (Слот «a»)
/dev/block/bootdevice/by-name/modem_b # Раздел второго модема/радиомодуля (Слот «b»)
/dev/block/bootdevice/by-name/boot_a # Раздел первого ядра (Слот «a»)
/dev/block/bootdevice/by-name/boot_b # Раздел второго ядра (Слот «b»)
/dev/block/bootdevice/by-name/vendor_a # Первый проприетарный раздел (Слот «a»)
/dev/block/bootdevice/by-name/vendor_b # Второй проприетарный раздел (Слот «b»)
/dev/block/bootdevice/by-name/system_a # Первый системный раздел (Слот «a»)
/dev/block/bootdevice/by-name/system_b # Второй системный раздел (Слот «b»)
Как видно из выдержки выше, — имеются два, независимых между собой, слота, а именно «группы разделов», которые содержат в себе основные, обновляемые компоненты прошивки.
Два представленных слота состоят из:
Bootloader (загрузчик) — 28 разделов (14 на каждый слот).
Radio/Modem (радиомодуль) — 2 раздела (по одному на слот).
Boot (ядро) — 2 раздела (по одному на слот).
Vendor (драйверы) — 2 раздела (по одному на слот).
System (система) — 2 раздела (по одному на слот).
Остальные разделы, не указанные в таблице, представлены в одном экземпляре за ненадобностью их деления.
Обратите внимание раздел пользовательского хранилища (userdata) всегда один! Именно поэтому вы не можете (без очистки хранилища) одновременно использовать две абсолютно разных прошивки, будет конфликт. Возможно одновременное использование одинаковых по типу прошивок (а в некоторых случаях и это невозможно без сброса данных).
Принципиальные отличия по сравнению с другими устройствами:
С дублированием разделов и, структурой в целом, разобрались. Однако, вы могли заметить (если просматривали полную таблицу разделов) отсутствие, привычных в любом устройстве, разделов «/recovery» и «/cache». Да, их действительно нет. Но могут и встречаться в отклонениях от нормы.
Q: Стоп. Но если раздела для Recovery нет, а сам Recovery есть (Он ведь есть, правда?), где же он находится?
A: Система восстановления (Recovery) включена в состав образа ядра (boot). А потому, наличие, отсутствие и тип установленного recovery напрямую зависят от ядра системы. Переключение в него (Recovery), как и раньше, осуществляется специальным флагом в «/misc» разделе.
Именно в этом и состоит загвоздка установки TWRP — его как-то нужно «засунуть» в ядро. Потому TWRP сначала временно загружают (устанавливать то его некуда), а затем уже из TWRP, специальным скриптом, на лету распаковывается ядро и вшивается в него TWRP. Такая же схема «перепаковки ядра на лету» применяется при получении «systemless» рут-прав через SuperSU и Magisk.
Q: Хорошо, а что же тогда случилось с «/cache» разделом?
A: В привычных устройствах он необходим лишь для хранения OTA обновлений и системных логов Recovery, в данном же случае, ввиду применения новой схемы этих самых обновлений (см. ниже), раздел стал попросту «не нужОн». Вот от него и избавились.
Ручное переключение слотов:
Естественно, помимо самих слотов, должен быть способ ручного взаимодействия с ними. И он есть. Для ручного переключения текущего активного слота необходимо воспользоваться утилитой fastboot. Команды:
Итоги и положения:
1. Между слотами как система, так и сам пользователь могут переключаться.
2. Изначально (с завода) слоты полностью идентичны между собой. Различия появляются после применения любого OTA обновления системы.
3. Слоты изолированы между собой. Состояние и целостность одного слота никак не влияет на другой. За исключением применения OTA обновлений (см. ниже).
«Seamless» система обновлений:
Итак, с разделами и слотами разобрались. Но что же там с обновлениями, наверняка их тоже коснулись изменения, ввиду описанного выше?
Да, OTA обновления на устройствах с A/B структурой кардинально отличаются от того, что мы можем видеть на других устройствах.
Android 8.0+ — трансляция обновлений:
Начиная с версии Android 8.0 возможна (но не обязательна) частичная реализация трансляции обновлений с одновременным их применением (прямая запись).
Это значит, что обновления не нуждаются в предварительной их загрузке, а применяются «на лету».