Категория > Новости > Обновить необновляемое. Treble, A/B-разметка, динамические и модульные обновления Android - «Новости»
Обновить необновляемое. Treble, A/B-разметка, динамические и модульные обновления Android - «Новости»16-04-2020, 20:12. Автор: Arthurs |
||||||||||||||||||||||||
Представь себе смартфон, который обновляется до новой версии ОС за секунды. Смартфон, который никогда не превратится в кирпич из-за неудачного обновления. Смартфон, который позволяет устанавливать вторую прошивку рядом с основной и поддерживает десятки кастомных прошивок сразу после выхода с конвейера. А ведь все это уже реальность, которую даже не надо ждать. Эта статья рассказывает о ряде технологий, которые были интегрированы в Android в последние несколько лет и приблизили решение проблемы фрагментации, отсутствия обновлений и существенно упростили создание кастомных прошивок. 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-совместимых устройств. В теории ее можно прошить на разблокированное устройство с помощью ![]() Чуть РїРѕР·Р¶Рµ GSI-СЃР±РѕСЂРєРё начали подготавливать Рё разработчики кастомных прошивок. Например, ты можешь скачать GSI-СЃР±РѕСЂРєСѓ РѕС‚ phhusson СЃ множеством фиксов для разных устройств. Р’ теме, посвященной Treble, РЅР° 4PDA есть множество Treble-совместимых прошивок, включая LineageOS. РќСѓ Р° проверить СЃРІРѕРµ устройство РЅР° совместимость СЃ Treble РјРѕР¶РЅРѕ СЃ помощью приложения Treble Check. A/B-разметкаЕще РѕРґРЅР° проблема СЃ обновлениями — отказ пользователей. Как показывает практика, РјРЅРѕРіРёРµ владельцы смартфонов РЅРµ хотят обновлять СЃРІРѕРё устройства, потому что: Р°) это отнимает время, РІ течение которого смартфон будет недоступен для использования; Р±) после обновления смартфон может работать некорректно или РЅРµ включится вообще. Р’ СЃРІРѕРµ время разработчики Chrome OS также столкнулись СЃ этой проблемой Рё создали надежную Рё незаметную пользователю систему бесшовного обновления (Seamless updates). Суть ее состоит РІ том, что вместо РѕРґРЅРѕРіРѕ системного раздела, поверх которого накладывались Р±С‹ обновления системы, Chrome OS использует РґРІР° идентичных системных раздела, каждый РёР· которых содержит СЃРІРѕСЋ РєРѕРїРёСЋ операционной системы. Обновление РІ Chrome OS РїСЂРѕРёСЃС…РѕРґРёС‚ следующим образом: РєРѕРіРґР° РћРЎ обнаруживает наличие обновления, РѕРЅР° скачивает его РІ фоне, устанавливает РЅР° второй (неактивный) системный раздел Рё помечает этот раздел как активный. После перезагрузки (РЅРµ обязательно сразу после обновления) РћРЎ запускается СѓР¶Рµ СЃ этого раздела. Благодаря такой схеме пользователь даже РЅРµ подозревает, что система обновилась, РѕРЅ просто попадает РІ обновленную РћРЎ после перезагрузки или включения ноутбука. РџСЂРё этом Chrome OS СЃРїРѕСЃРѕР±РЅР° гарантировать, что после обновления пользователь РЅРµ получит РєРёСЂРїРёС‡: если РІРѕ время загрузки СЃ обновленного раздела произойдет СЃР±РѕР№ — система пометит текущий раздел флагом unbootable, сделает активным «старый» системный раздел Рё загрузит заведомо рабочую версию РћРЎ. Начиная СЃ седьмой версии Android также поддерживает бесшовные обновления Рё так называемую A/B-разметку разделов. Однако, так как системных разделов РІ устройствах СЃ Android намного больше, чем РІ хромбуках, сама раскладка разделов получается более запутанной. Р’РѕС‚ только часть разделов, которые пришлось дублировать:
Всего дублированных разделов может быть несколько десятков. Например, на OnePlus 6 с A/B-разметкой общее количество разделов — 72 и несколько десятков из них используются только загрузчиком. От других разделов, наоборот, стало возможным отказаться. Устройства с A/B-разметкой не включают в себя отдельный раздел ![]() A/B-разметка также позволила вдвое сократить размер раздела
Еще одно достоинство A/B-разметки — отсутствие экрана «Android is upgrading…» после обновления. Система просто загружается как обычно. Также A/B-разметка упрощает тестирование кастомных прошивок: кастом можно поставить второй системой и откатиться на первую, если что-то пойдет не так. В целом одни плюсы и никаких минусов. Проблема только в том, что A/B-разметка до сих пор остается опциональной, а перешли на нее далеко не все производители смартфонов. Даже Samsung — крупнейший производитель устройств на Android — до сих пор использует старую разметку. И связано это, скорее всего, с нежеланием тратить средства и время на перепрофилирование уже работающей и отлаженной системы обновления. Проверить, поддерживает ли твой смартфон A/B-разметку, можно с помощью все того же приложения Treble Check из предыдущего раздела или прочитав переменную Перейти обратно к новости |