Обновление системы через google play что это
Обновления Сервисов Google Play для Android важнее, чем вы думали
Любой пользователь Android знает, что обновления – это круто. Зачем они нужны – вопрос другого рода. Тем более, что Google предлагает сразу три типа апдейтов, каждый из которых имеет своё предназначение. Несмотря на это, в представлении большинства ценностью обладают только системные обновления – те самые, которые Google выпускает раз в год, а все остальные как будто бы и не нужны. Но это глубочайшее заблуждение, и сейчас я докажу вам, почему именно.
Обновления Google Play Services несут большую ценность, чем кажется многим
Одним из ключевых типов обновлений для Android являются обновления Google Play. Они не имеют чёткого графика выхода и выходят тогда, как Google сочтёт нужным, а их предназначение состоит, как ни странно, в расширении функциональных возможностей обновляемых устройств. Все те фишки, которые появляются в ваших смартфонах в периоды простоя, приносят именно обновления Google Play.
Зачем нужны обновления сервисов Google Play
Обновления Google Play содержат в себе все те нововведения, которые невозможно реализовать посредством обновления приложений. То есть, если добавить функцию блокировки альбомов можно через «Google Фото», а инструмент каталогизации SMS – через «Сообщения», то вот функцию сейсмометрии или голосовое управление приложениями – уже нет. Этим нововведениям нужен отдельный источник, и его роль играют обновления Google Play.
Слева — как выглядела кнопка установки раньше, справа — как она будет выглядеть у игр с быстрой установкой
На мой взгляд, обновления Google Play намного важнее, чем обновления безопасности и собственные обновления приложений для Android. Дело в том, что патчи безопасности, которые Google выпускает каждый месяц, хоть и исправляют уязвимости, по большому счёту качественно не влияют на работу наших устройств. Обновления приложений – влияют, но ради них нужно скачивать сами приложения. А с Google Play всё проще – они и загружаются автоматически, и функциональные возможности устройства расширяют довольно ощутимо.
Возьмём за пример одно из последних запланированных к релизу нововведений – запуск приложений из Google Play ещё до окончания загрузки. Google проделала большую работу, чтобы научить софт скачиваться на устройство в такой последовательности, чтобы его можно было запускать практически сразу. Пока этот механизм будет работать применительно к играм, поскольку они выстроены по пошаговому принципу, но затем подключат и обычные приложения.
Играть в игры во время загрузки
Например, игра весом 400 мегабайт сможет запуститься уже спустя 10 секунд. За это время на смартфон скачается весь необходимый пакет данных, которые позволят запустить игру и не чувствовать недостатка в графике и возможностях. Тут нужно заметить, что в первую очередь это нововведение получат смартфоны на Android 12, но потом оно доберётся и до всех остальных, что только подтверждает важность обновлений GMS.
По факту, посредством обновлений Google Play компания Google доставляет старым смартфонам, которые не поддерживают их производители, функции новых версий Android. Так что получается, что даже эти устройства, которые уже вроде бы никому не нужны, продолжают получать знаковые нововведения, способные сделать лучше их и помочь пользователям не разочароваться в политике Google по обновлению Android-смартфонов.
Да, нужно признать, что обновления Google Play с нововведениями свежих версий Android выходят с заметной задержкой относительно системных апдейтов, да и функции содержат в себе далеко не все. Тем не менее, сам подход Google, заключающийся в поддержке старых смартфонов на Android новыми функциями очень ценен. Так что, когда вам в следующий раз скажут, что Android-аппараты перестанут обновляться спустя два года, смело отправляйте им эту статью.
Слух: новые версии Android будут обновляться через Google Play
После релиза очередной версии Android владельцам смартфонов порой приходится ждать обновления прошивки от производителя несколько месяцев. С выходом Android 12 ситуация может измениться: вслед за графическими драйверами Google, как ожидается, интегрирует в фирменный магазин приложений и другие компоненты операционной системы для их быстрого скачивания на пользовательские устройства.
Один из пользователей портала XDA-Developers сообщил, что в проект Google под названием Project Mainline вскоре войдёт среда выполнения приложений Android Runtime. Это позволит разработчикам прошивок публиковать обновления для ключевых элементов ОС в магазине Google Play. Таким образом, с релизом Android 12 у производителей смартфонов предположительно появится возможность обновлять отдельные узлы системы, не выпуская «тяжеловесных» прошивок.
Такой подход Google теоретически должен сократить отставание производителей устройств от графика апдейтов «зелёного робота». При этом речь идёт не об улучшении непосредственно функциональной части операционки, а о механизмах её защиты и безопасности. По предварительной информации Google планирует разделить Android на несколько модулей, обновление которых будет происходить независимо друг от друга. Дата запуска проекта пока не подтверждена разработчиками мобильной ОС.
Что делать, если на Андроид не обновляются приложения
Каждый из нас скачивает приложения на Андроид. Они помогают значительно расширить функциональность устройств и выжать из него максимум пользы. Кроме этого важно регулярно загружать обновления, в которых разработчики добавляют новые фишки и исправляют некоторые ошибки. Однако часто пользователи сталкиваются с разными проблемами обновлений: то не двигается шкала загрузки, то в конце выдает какую-нибудь ошибку. Сегодня постараемся разобрать самые популярные причины этого недуга и обсудим все нюансы.
Не обновляются приложения на Андроид? Вы пришли по адресу.
Если вы не любите обновлять приложения, то стоит пересмотреть свои взгляды прямо сейчас. Да, иногда разработчики выпиливают некоторые функции вроде бесплатного прослушивания музыки, но гораздо чаще апдейт содержит новые фишки, которые значительно упрощают работу.
Как включить в Google Chrome закадровый перевод видео из Яндекс.Браузера.
На Android не обновляются приложения
Первое, что необходимо сделать в данном случае — включить автоматическое обновление приложений в Настройках смартфона. Можно сколько угодно говорить о том, что раньше было лучше, но продолжаться это будет ровно до тех пор, пока безопасность ваших данных не окажется под угрозой.
Согласитесь, обновлять все программы вручную слишком тяжело? Именно поэтому я рекомендую выставить данные параметры прямо сейчас:
Автоматическое обновление приложений на Android.
На Андроиде не хватает памяти
Часто обновления приложений не работает из-за нехватки памяти на устройстве. Здесь все очень просто: внедрение новых функций требует больше места в хранилище, поэтому часто случается, что приложения начинают весить очень много.
Первое, что следует сделать — проверить свободную память на смартфоне. Здесь же вы сможете посмотреть, какие программы занимают много места.
Чтобы проверить память на Андроиде, вам необходимо:
Многие производители смартфонов позволяют очистить память на Андроид прямо из меню Настроек. Плюс, не забудьте очистить кэш на своем устройстве. В большинстве случаев этого бывает достаточно.
Если же при обновлении телефон выдает ошибку Недостаточно памяти на устройстве, а в Настройках все хорошо, рекомендую обратиться к нашей прошлой статье, где мы подробно разобрали все нюансы данной проблемы.
Устаревшая версия Андроид. Что делать
Если при обновлении приложения смартфон говорит, что вы используете старую версию операционной системы Android, сделать, скорее всего, уже ничего не получится. Однако подобные ситуации на практике встречаются очень редко. В основном это касается телефонов с Android 4 и ниже.
Какими все-таки крутыми были когда-то смартфоны.
В любом случае, что в Google Play, что на сторонних площадках, вроде APK Mirror, обычно всегда указывается версия операционки, которая необходима для адекватной работы софта. С ней вы можете ознакомиться в аннотации.
Как проверить версию Андроид
Если вы хотите узнать, какая версия Android установлена на вашем смартфоне, сделать это можно буквально в два клика:
Проверьте систему на наличие обновлений.
Google Play выдает ошибку
Причин, по которым магазин приложений Google может выдавать ошибку, достаточно много. Однако существуют некоторые фишки, позволяющие избавиться от большинства ошибок Google Play в два касания.
Как очистить кэш в Google Play
Да, вполне вероятно, что решение кроется в банальном кэше самого магазина приложений. Чтобы очистить Google Play, следуйте инструкции:
Очистка кэша в Google Play.
Затем проведите ту же самую процедуру с программой Сервисы Google Play. Если это не поможет, попробуйте следующий способ:
Как удалить обновления Google Play
Еще один способ, который поможет установить обновления приложений в случае возникновения каких-либо ошибок. С помощью него вы сможете откатить Google Play до первоначального вида.
Удалите обновления приложения Google Play в Настройках.
Конечно, вариантов ошибок в магазине приложений может быть огромное множество. Не исключено, что придется откатывать до заводских настроек. Однако расстраиваться точно не стоит. Зачастую с помощью инструкций, которые мы привели выше, удается справиться с большинством трудностей.
ТОП-5 смарт-часов, к которым точно стоит присмотреться.
Если и это не помогло, смело обращайтесь в наш Телеграм-чат. Вместе с командой наших читателей мы обязательно вам поможем.
Новости, статьи и анонсы публикаций
Свободное общение и обсуждение материалов
Раньше новый смартфон, представленный той или иной компанией, казался по-настоящему революционным продуктом. Появился сенсорный экран, сканер отпечатков пальцев, камеры обрели оптическую стабилизацию и многое другое. В современном мире каждый год производители смартфонов пытаются сказать нам о революции, но по факту изменения совсем небольшие. Да, многие функции значительно упрощают жизнь, однако далеко не всегда те технологии, которые были нам преподнесены как инновационные, находят применение в реальной жизни. Сегодня предлагаю поговорить о технологиях Android устройств, за которые мы год за годом переплачиваем деньги и ими не пользуемся.
YouTube уже давно перестал быть чем-то редким. Кроме того, что сейчас это самый посещаемый и популярный хостинг в мире, которые стал для многих средством заработка огромных денег, он является и источником информации. Огромная доля пользователей смотрит на YouTube хотя бы 1-2 ролика в день. При этом, у него появляются все новые инструменты для привлечения новых пользователей. Одним из них является не новый, но удобный инструмент ”Смотреть позже”. Часто просто нет времени смотреть все, что попадает в подборку. С этим инструментом можно просто отложить видео и посмотреть, когда будет время. Вот только там скапливается слишком много просмотренного мусора, который надо убирать. Расскажу, как это можно сделать.
Как посмотреть обновления на андроиде
В этой статье рассказывается о том, как проверить обновления на Android-устройстве, включая обновления системы и установленных приложений.
Быстрый метод
1. Откройте приложение «Настройки».
2. Нажмите «О смартфоне» или «О планшете» (в нижней части меню).
3. Нажмите «Обновления системы».
4. Нажмите «Проверить обновления».
5. Нажмите «Скачать», если обновление доступно.
6. По завершении скачивания обновлений нажмите «Установить».
Приложения – это функциональность, ради которой, собственно, приобретается смартфон. Они делятся на:
Периодически приложения нуждаются в обновлениях, которые загружаются автоматически либо пользователь делает это самостоятельно. В этой инструкции мы расскажем, как выполнить обновление программ и настроить автообновление на ОС Андроид.
Содержание:
На самом деле, обновлять приложения на ОС Андроид очень даже желательно. И тому есть несколько причин:
Как обновить приложение через Google Play
Любое обновление можно загрузить посредством Play Market. Для этого потребуется только Google аккаунт, связанный с текущим андроид-устройством, свободное место в памяти гаджета и Интернет-соединение (желательно wifi, если мобильный трафик дорогой).
Выборочное обновление установленных приложений
Чтобы обновить программы (в индивидуальном или пакетном режиме) необходимо выполнить несколько простых шагов:
При этом загрузятся и установятся все имеющиеся обновления для установленных программ. Следует обратить внимание на то, что этот процесс может занять довольно продолжительное время.
Настройка автоматического обновления
Чтобы не обновлять приложения все время вручную, можно выставить автоматическое обновление в настройках Google Play. Эта функция удобна еще и тем, что если памяти окажется недостаточно для установки всех обновлений, устройство само определит, какую программу требуется обновить в первую очередь. Однако необходимо иметь в виду, что при автоматическом обновлении память устройства может слишком быстро заполняться.
Для настройки автоматического обновления всех приложений на Андроид необходимо:
Чтобы установить автообновления для конкретных приложений, следует:
Новые версии будут загружаться самостоятельно каждый раз при их появлении. Чтобы убрать эту функцию, нужно снять флажок.
Как сэкономить мобильный трафик при автообновлении
При автоматическом обновлении приложений важно контролировать интернет-трафик, поскольку лимит его может быстро и неожиданно закончится. Чтобы не тратить мобильный трафик на обновления, удобно использовать подключение к сети Wi-Fi. Для установления нужных настроек необходимо:
Как узнать текущую версию Андроид
Обновление ОС Андроид
Для обновления прошивки нужно подключиться к wifi и выполнить несколько простых шагов:
Ответственные разработчики приложений для Android ОС регулярно обновляют свое программное обеспечение для устранения выявленных ошибок и проблем с безопасностью, расширения функционала и большей совместимости под новые версии этой замечательной операционной системы. У начинающих пользователей часто возникает вопрос «А как на Андроид обновить приложение?». Данный материал и поможет разобраться в данном вопросе.
Как обновляются приложения в Андроид
Как обновлять приложения на Android в Google Play
Для этой операции необходимо иметь достаточно свободного места в памяти устройства, быть подключенным к сети и соответственно иметь Google аккаунт, который является единым для всех сервисов поискового гиганта. Итак, пошагово:
- открываем Google Play (Play Market);
Чтобы узнать какие изменения принесет апдейт, тапните по названию приложения для перехода в информационный экран программы и откройте описание «Что нового» нажатием на «Подробнее».
В информационном экране приложения можно также его обновить, нажатием на соответствующую кнопку или совсем удалить, если программа уже не нужна.
Автоматическое обновление приложений
Можно настроить автоматический процесс обновления, чтобы не заходить каждый раз в Google Play для проверки наличия апдейтов и обновлять его вручную. В данном случае, ваше устройство при подключении к интернету будет само проверять каждое установленное приложение и, при наличии обновления для него, будет автоматически запускать процедуру.
Как настроить автообновление:
Кроме того, можно выбрать те приложения, для которых вы не желает получать автоматические апдейты в силу каких-либо причин. Для этого:
Как видите, на Андроид обновить приложение совсем не сложно. Данная процедура является штатной и ее должен уметь производить каждый пользователь, даже самый полный «чайник» )
Эволюция системы обновления Android
В этой статье мы рассмотрим все возможные варианты обновления прошивки на устройствах под управлением Fuchsia Android. Особое внимание уделим самому популярному способу — обновлению по воздуху или OTA (over-the-air) — и расскажем об этапах его развития.
Итак, как можно обновить Android на мобильных устройствах? Занимаясь разработкой ТВ-приставок под управлением этой ОС, мы определили для себя 4 способа, отбросив совсем уж экзотические варианты:
перепрошивка flash-памяти через аппаратный интерфейс JTAG (если есть);
перепрошивка flash-памяти с использованием загрузчика (bootloader);
обновление через Recovery Mode;
Рассмотрим подробнее каждый из вариантов.
1. Обновление Android через JTAG-интерфейс
Вариант с JTAG позволяет обновлять устройство только локально и требует подключения девайса с Android к хосту, например, по USB-интерфейсу. Так как перепрошивается flash-память, новую версию Android можно поставить на прошивку с другими ключами безопасности, да и в целом не сильно стесняться в выборе версий самой Android, версии собранной прошивки или переконфигурации разделов flash-памяти.
Однако обычно JTAG-интерфейс присутствует только на отладочных платах, что сильно сужает область применения этого варианта обновиться.
2. Обновление Android через Recovery Mode
Обычно загрузчик является проприетарным, его разрабатывает производитель чипа. Именно bootloader инициализирует доверенную среду выполнения (TEE, trusted execution environment) и проверяет целостность разделов boot и recovery перед переносом выполнения в ядро Linux. Сам загрузчик часто является составным, часть его уровней может быть открытой (например, на базе U-boot), а часть — проприетарной.
Bootloader Android позволяет перепрошивать flash-память устройства подготовленными образами разделов. Для этого используется протокол fastboot либо его аналог (в случае Amlogic это будет протокол WorldCup Device). Fastboot, как и его аналог WorldCup Device, — это протокол взаимодействия с bootloader через USB-интерфейс или локальную сеть Ethernet.
Для перепрошивки необходимо подключить устройство через USB к хосту (есть вариант использовать LAN Ethernet), перевести загрузчик (bootloader) в специальный update-режим и в этом режиме перепрошить flash-память устройства.
Плюсы и минусы данного метода всё те же, что и для JTAG: так как обновление проходит без участия самой системы Android, при перепрошивке нет ограничений, связанных с версией системы/сборки или ключами безопасности.
Но, как всегда, есть одно НО. 🙂 Bootloader должен быть разблокирован, а это значит, что мы можем перепрошить сам загрузчик или разделы устройства. Блокировка/разблокировка производится командой fastboot flashing lock/unlock, но для выполнения этой команды может понадобится пароль, установленный тем, кто добрался до этого устройства раньше вас (обычно это производитель).
3. Обновление Android через Recovery Mode и OTA
Если первые два варианта обновления оставались неизменными на протяжении всего времени развития Android, то следующие два варианта — обновление через Recovery Mode и OTA — реализуются средствами самой Android и эволюционировали вместе со всей ОС.
Стоит упомянуть, что Recovery Mode и OTA — это два различных варианта вызова движка обновления Android.
Recovery или non-A/B System Updates
Recovery и движок обновления updater (bootable/recovery/updater) — это как раз то, с чего началась система обновления Android (располагается в bootable/recovery в дереве исходников AOSP).
Схема обновления Recovery (или non-A/B System Updates) задействует специальный раздел восстановления (Recovery), где содержится специальная ОС на основе ядра Linux. Эта ОС на базе Linux содержит программное обеспечение для распаковки загруженного образа обновления и его применения к другим разделам. Так и проходит обновление Android.
Пример разметки flash-памяти на устройстве с Android 6.0:
Карта разделов Android 6.0.1
[mmcblk0p01] bootloader offset 0x000000000000, size 0x000000400000
[mmcblk0p02] reserved offset 0x000002400000, size 0x000004000000
[mmcblk0p03] cache offset 0x000006c00000, size 0x000020000000
[mmcblk0p04] env offset 0x000027400000, size 0x000000800000
[mmcblk0p05] logo offset 0x000028400000, size 0x000002000000
[mmcblk0p06] recovery offset 0x00002ac00000, size 0x000002000000
[mmcblk0p07] rsv offset 0x00002d400000, size 0x000000800000
[mmcblk0p08] tee offset 0x00002e400000, size 0x000000800000
[mmcblk0p09] crypt offset 0x00002f400000, size 0x000002000000
[mmcblk0p10] misc offset 0x000031c00000, size 0x000002000000
[mmcblk0p11] instaboot offset 0x000034400000, size 0x000020000000
[mmcblk0p12] boot offset 0x000054c00000, size 0x000002000000
[mmcblk0p13] system offset 0x000057400000, size 0x000060000000
[mmcblk0p14] data offset 0x0000b7c00000, size 0x0002ec200000
Сам процесс обновления происходит в два этапа:
После загрузки с раздела Recovery происходит обновление всех остальных разделов Android.
И уже после перезагрузки и запуска новой версии Android происходит обновление раздела Recovery.
При обновлении с использованием движка updater на первом этапе проверяется версия и цифровая подпись образа, поэтому откатить на старую версию ОС уже не получится.
Обновиться по схеме Recovery можно как локально, выбрав в bootloader режим Recovery Mode и запустив движок обновления updater через меню Recovery Mode, либо удаленно, через OTA, когда приложение, работающее в Android, вызывает тот же updater из Java. И как раз при таком удаленном запуске можно организовать массовое обновление целой серии устройств. Этот вариант используют операторы цифрового ТВ при обновлении своих абонентских ТВ-приставок.
Сам раздел Recovery при non-A/B-схеме обновления является физическим разделом во flash-памяти. С появлением A/B-схемы раздел Recovery переместился на RAM-диск в оперативной памяти устройства, но возможность сделать его отдельным физическим разделом также осталась.
Нужно сказать, что в системе Android нет четкого разделения на «старое» и «новое», скорее добавляются дополнительные возможности в конфигурации сборки Android с сохранением по возможности совместимости со старыми решениями. Однако не все варианты конфигураций работают.
Одним из важных недостатков схемы Recovery или non-A/B System Updates является то, что при любом сбое во время обновления или битой прошивке мы получаем пусть и не «кирпич» (с раздела Recovery всё еще можно запустить устройство в Recovery Mode), но всё же не полнофункциональное и требующее восстановления устройство.
С этим, видимо, решено было что-то делать, потому что следующим этапом эволюции системы обновления стало бесшовное обновление (seamless updates) или A/B-схема обновления.
Бесшовное обновление или A/B-схема
Эта возможность появилась в Android 7.0, она реализована в новом движке update_engine, который располагается в system/update_engine в дереве исходников AOSP.
Главной особенностью A/B-схемы стало то, что в случае сбоев при обновлении можно загрузиться с предыдущей рабочей версии системы Android. Flash-память устройства содержит дублирующиеся системные разделы или слоты (slot A и B), отсюда и название — A/B system updates (вечная проблема с выбором названий). За выбор слота для загрузки (A или B) отвечает bootloader, анализируя состояние слотов.
Принцип бесшовного обновления Android по A/B-схеме (активный раздел отмечен птичкой)
Итак, как же происходит обновление:
1) Загружая систему, например, со слотов A, мы скачиваем и прошиваем обновления на слоты B.
2) После перезагрузки со слотов B мы проверяем работоспособность системы, и, если все ОК, сообщаем bootloader, что обновление прошло успешно.
В случае проблем с обновлением bootloader вернется на старую версию прошивки после нескольких неудачных попыток загрузиться с новой системы.
На официальном сайте для разработчиков — Android Source — этот процесс расписан более детально в 9 шагах, также там объясняется, как все работает после перезагрузки.
Особенность бесшовной A/B-схемы обновление — это «съедение» большего объема flash-памяти. Насколько большего? Это можно оценить по приведенным ниже схемам разделов для Android 9.0. Как уже упоминалось ранее, разработчик может выбирать, какую из схем — A/B или non-A/B — применять в конфигурации системы.
Карта разделов Android P (recovery)
[mmcblk0p01] bootloader offset 0x000000000000, size 0x000000400000
[mmcblk0p02] reserved offset 0x000002400000, size 0x000004000000
[mmcblk0p03] cache offset 0x000006c00000, size 0x000046000000
[mmcblk0p04] env offset 0x00004d400000, size 0x000000800000
[mmcblk0p05] logo offset 0x00004e400000, size 0x000000800000
[mmcblk0p06] recovery offset 0x00004f400000, size 0x000001800000
[mmcblk0p07] misc offset 0x000051400000, size 0x000000800000
[mmcblk0p08] dtbo offset 0x000052400000, size 0x000000800000
[mmcblk0p09] cri_data offset 0x000053400000, size 0x000000800000
[mmcblk0p10] param offset 0x000054400000, size 0x000001000000
[mmcblk0p11] boot offset 0x000055c00000, size 0x000001000000
[mmcblk0p12] rsv offset 0x000057400000, size 0x000001000000
[mmcblk0p13] metadata offset 0x000058c00000, size 0x000001000000
[mmcblk0p14] vbmeta offset 0x00005a400000, size 0x000000200000
[mmcblk0p15] tee offset 0x00005ae00000, size 0x000002000000
[mmcblk0p16] vendor offset 0x00005d600000, size 0x000040000000
[mmcblk0p17] odm offset 0x00009de00000, size 0x000008000000
[mmcblk0p18] system offset 0x0000a6600000, size 0x000050000000
[mmcblk0p19] product offset 0x0000f6e00000, size 0x00000800000
[mmcblk0p01] bootloader offset 0x000000000000, size 0x000000400000
[mmcblk0p02] reserved offset 0x000002400000, size 0x000004000000
[mmcblk0p03] cache offset 0x000006c00000, size 0x000000000000
[mmcblk0p04] env offset 0x000007400000, size 0x000000800000
[mmcblk0p05] logo offset 0x000008400000, size 0x000000800000
[mmcblk0p06] boot_a offset 0x000009400000, size 0x000001000000
[mmcblk0p07] misc offset 0x00000ac00000, size 0x000000800000
[mmcblk0p08] dtbo_a offset 0x00000bc00000, size 0x000000800000
[mmcblk0p09] dtbo_b offset 0x00000cc00000, size 0x000000800000
[mmcblk0p10] cri_data offset 0x00000dc00000, size 0x000000800000
[mmcblk0p11] param offset 0x00000ec00000, size 0x000001000000
[mmcblk0p12] boot_b offset 0x000010400000, size 0x000001000000
[mmcblk0p13] rsv offset 0x000011c00000, size 0x000001000000
[mmcblk0p14] metadata_a offset 0x000013400000, size 0x000001000000
[mmcblk0p15] metadata_b offset 0x000014c00000, size 0x000001000000
[mmcblk0p16] vbmeta_a offset 0x000016400000, size 0x000000200000
[mmcblk0p17] vbmeta_b offset 0x000016e00000, size 0x000000200000
[mmcblk0p18] tee offset 0x000017800000, size 0x000002000000
[mmcblk0p19] vendor_a offset 0x00001a000000, size 0x000040000000
[mmcblk0p20] vendor_b offset 0x00005a800000, size 0x000040000000
[mmcblk0p21] odm_a offset 0x00009b000000, size 0x000008000000
[mmcblk0p22] odm_b offset 0x0000a3800000, size 0x000008000000
[mmcblk0p23] system_a offset 0x0000ac000000, size 0x000050000000
[mmcblk0p24] system_b offset 0x0000fc800000, size 0x000050000000
[mmcblk0p25] product_a offset 0x00014d000000, size 0x000008000000
[mmcblk0p26] product_b offset 0x000155800000, size 0x000008000000
[mmcblk0p27] data offset 0x00015e000000, size 0x000245e00000
Если сравнить эти две конфигурации, то можно заметить, что раздел data при A/B-схеме меньше на 1,6 ГБ, и это цена дублирующихся системных разделов. Много это или мало — каждый решает сам, ориентируясь на характеристики своего устройства/проекта.
Проект Treble
Следующие изменения в системе обновления произошли в Android 8.0. Начиная с Android O (8.0) и продолжая в Android P (9.0), Google реализует свой проект Treble. Идея проекта состоит в том, чтобы упростить технологический процесс создания обновления для Android-устройства. Google предложил разделить с помощью неизменных интерфейсов части прошивки, созданием которых занимаются разные компании. Процесс разработки прошивки для конкретного девайса можно упрощенно разделить на следующие шаги:
Команда Android создает новую версию своей OC.
Разработчик чипа или системы на кристалле (Silicon Manufacturer) создает аппаратно-зависимые патчи для запуска этой версии Android на своих платах.
И уже разработчики конечного устройства (Vendors) делают свою часть для реализации всех функций конкретного продукта для рынка электроники.
Проект Treble разделяет ОС Android с дополнениями от производителей чипов/СнК и код разработчика конечного устройства, так что теперь операционная система может получать обновления без реализации изменений от производителя устройства.
Разделение происходит как с помощью программного интерфейса (переход с Hardware Abstraction Layer 1.0 на HAL2.0), так и за счет выделения отдельных разделов на flash-памяти для Silicon Manufacturer и Vendor (выше в карте разделов Android 9.0 можно увидеть разделы odm, vendor, product).
Переход с HAL1.0 на HAL2.0 заключается в отказе от прямого связывания с системными библиотеками. Вместо этого, используя IPC Binder, можно подключаться к системным сервисам.
И еще одно небольшое, но полезное изменение: начиная с Android 8.0, в update_engine добавлена поддержка потоковых обновлений по A/B-схеме, в ходе которых идет прямая запись в слот B без необходимости промежуточного хранения данных в /data. Для таких потоковых обновлений практически не требуется временное хранилище, достаточно всего лишь 100 килобайт для сохранения метаданных.
При этом необходимо, чтобы http-сервер, используемый для скачивания обновления, поддерживал HTTP range requests или другими словами докачку.
Проект Mainline
Следующим серьезным этапом в развитии системы обновления Android стал проект Mainline. Реализация этого проекта началась с Android 10.0 и продолжилась в текущем Android 11.0.
Проект Mainline позволяет обновлять отдельные системные компоненты без обновления ОС целиком. Нужные данные загружаются через Google Play отдельно от OTA-обновления прошивки от производителя. Предполагается, что прямая доставка обновлений, не привязанных к оборудованию частей Android, позволит существенно сократить время получения обновлений, увеличить оперативность исправления уязвимостей и снизить зависимость от производителей устройств в поддержке безопасности ОС.
Для реализации проекта Mainline выбранные компоненты системы Android преобразуются в модули. Часть этих модулей имеет старый формат APK, а часть конвертируется в новый APEX-формат, который отличается от APK возможностью применения на раннем этапе загрузки системы. На случай возможных сбоев предусмотрен режим отката изменений.
С APEX-пакетами работает системный сервис APEX manager (apexd). Это нативный сервис, который после проверки распаковывает APEX-пакет в пользовательское пространство на диске и добавляет запись о нем в свою базу данных. При следующей загрузке системы APEX manager проверяет все пакеты из базы данных, создает loop-устройство для ext4-образа каждого APEX-пакета и монтирует его по пути /apex/name@ver.
Модули с обновлениями изначально будут поставляться с открытым кодом, они будут сразу доступны в репозиториях AOSP (Android Open Source Project) и смогут включать улучшения и исправления, подготовленные сторонними участниками.
В рамках проекта Mainline в Android 10 было добавлено 13 обновляемых модулей, а в Android 11 в дополнение к уже существующим прибавилось еще 11 модулей.
Схема Virtual A/B
Также в Android 11 к схемам non-A/B и A/B была добавлена схема Virtual A/B. Этот новый механизм обновления сочетает преимущества обоих предшественников, он обеспечивает устойчивое к сбоям обновление устройства, задействуя при этом минимальный объем flash-памяти. Это стало возможным благодаря созданию снимков файловой системы (snapshot) с использованием технологии Device-mapper (подсистема ядра Linux, позволяющая создавать виртуальные блочные устройства) и Dynamic Partitions.
Dynamic Partitions — это система организации динамических разделов для Android. С ее помощью можно создавать, изменять размер или уничтожать разделы прямо в процессе обновления по воздуху (OTA). При использовании динамических разделов разработчикам больше не нужно беспокоиться о размере отдельных разделов, таких как system, vendor и product. Вместо них на устройстве выделяется суперраздел, внутри которого можно динамически изменять размер подразделов. Больше нет необходимости оставлять свободное пространство для будущих OTA-обновлений внутри отдельных образов разделов. Оставшееся свободное место в суперразделе теперь доступно для всех динамических подразделов.
И в заключении последние слухи конца 2020 года — вишенка на торте. Google конвертирует Android Runtime в модуль Mainline. Android Runtime или ART — это среда выполнения Android-приложений, включающая компиляцию байт-кода приложения в машинные инструкции. Так что есть вероятность, что уже в Android 12 можно будет обновить ART через GooglePlay, установив APEX-пакет.
Также, вероятно, система обновления Android мигрирует в Fuchsia, новую ОС Google, которая сейчас находится в процессе разработки. Они традиционно копируют удачные решения в своих программных продуктах. Так, например, update_engine для A/B-схемы, который применяется сейчас в Android, используется в еще одной ОC Google — Chrome OS. Или еще один пример: в Fuchsia предлагается библиотека Machina, которая позволяет запускать Linux-программы в специальной изолированной виртуальной машине по аналогии с тем, как организован запуск Linux-приложений в той же Chrome OS.