Бесшовные a-b-обновления в android: как они устроены

Динамические и модульные обновления android

Кто пострадает

Согласно официальной статистике Google на июль 2023 г., спустя почти 10 лет со дня релиза Android 4.4, в мире по-прежнему насчитывалось около 1% Android-устройств под ее управлением. Это не только смартфоны, но также планшеты, электронные книги и т. д. А с учетом того, что суммарно на Android работает около 3 млрд гаджетов (данные Business of Apps), то 1% – это приблизительно 30 млн устройств, которые по решению Google станут бесполезными.

Фото:

Мобильные устройства на Android 4.4 были знаковыми для своего времени, но спустя 10 лет от их актуальности не осталось и следа

Но если в случае электронных книг полное отключение поддержки KitKat не столь критично, поскольку Android в них нужна лишь для запуска предустановленных программ для чтения, то со смартфонами дела обстоят иначе. Это более универсальные с точки зрения вариантов использования устройства, и невозможность скачивания на них приложений лишает смысла их дальнейшую эксплуатацию.

Попытка установить на мобильник кастомную прошивку с более свежей версией Android может привести к успеху, но, во-первых, самые новые релизы Android, как правило, не адаптируются под древние мобильники, во-вторых, аппаратных возможностей таких устройств не хватит для корректной работы современных мобильных ОС.

Поэтому самый простой выход из данной ситуации – покупка нового устройства. Если оно будет работать на Android 13, поддержка ее в Google Play Services прекратится, с учетом нынешних сроков , лишь в начале следующего десятилетия – Android 13 появилась в 2022 г.

Обхода аккаунта Google через «Запятую»

После сброса настроек и запуска системы, когда увидите страницу FRP, где необходимо ввести ранее зарегистрированный Гугл аккаунт, нажмите «,» (запятую) на клавиатуре, пока не появится всплывающее окошко с настройками.

  1. Нажмите «Параметры клавиатуры Google» (иконка шестеренки).
  2. Тапните на три точки в правом верхнем углу и выберите пункт «Справка и обратная связь».
  3. Перейдите в любую категорию и выделите часть текста, зажав палец на какой-то строке.
  4. Вы увидите значок веб-поиска.
  5. Щелкните по нему и в появившемся поле поиска нажмите «Настройки».
  6. Затем вы войдете в приложение «Настройки» системы. Перейдите в «Для разработчиков» (если этот параметр отсутствует в списке, то перейдите в «Система» — «О телефоне» и 7 раз нажмите на «Номер сборки»).
  7. Вернитесь назад и откройте «Для разработчиков».
  8. Пролистайте немного вниз и увидите «Разблокировка OEM» или что-то похожее. Активируйте ее.
  9. Удерживайте кнопку «Питание», чтобы перезапустить телефон.
  10. Теперь при загрузке в окне FRP вы увидите страницу «Добавить учетную запись».
  11. Профиль, с которым синхронизирован телефон удален. Останется ввести новые данные, и вы попадете в систему.

Настоящая причина того, что OEM-производители не используют плавные обновления

Если плавные обновления намного удобнее для пользователя и намного лучше с точки зрения безопасности, то почему производители их не используют?

В итоге проблема сводится к месту для хранения. Видите ли, в телефонах действительно есть только один «жесткий диск», и он просто разделен на разделы, чтобы создать отдельные пространства для всех компонентов, составляющих Android. Сюда входит раздел хранения, где пользователи могут сохранять такие файлы, как фотографии, видео и MP3.

Дополнительный раздел, необходимый для бесшовных обновлений, занимает меньше доступного встроенного пространства для хранения на любом телефоне. Возьмем, к примеру, 32-гигабайтный Pixel. Из этих 32 гигабайт операционная система Android занимает примерно 2,7 гигабайта. Но поскольку для компоновки A / B требуется место для двух полных копий ОС Android (одна для старой версии и одна для новой), теперь у вас уходит 5,4 гигабайта по сравнению с исходными 32, в результате чего у вас остается только 26,6 гигабайт. хранить файлы.

Не пропустите: почему люди переходят с iPhone на Pixel

Но Pixel — один из наименее раздутых телефонов на рынке. Устройства с тяжелой оболочкой производителя, такие как серия Samsung Galaxy S, имели бы еще меньше свободного места, если бы они использовали макет A / B для бесшовных обновлений.

Например, операционная система Galaxy S8 занимает 10,7 ГБ, и это всего лишь один ее экземпляр. Если бы Samsung пришлось зарезервировать место для второго набора системных файлов с макетом A / B для бесшовных обновлений, это заняло бы колоссальные 21,4 гигабайт. Если взять в качестве примера 32-гигабайтное хранилище, то пользователю останется только 11,6 гигабайт.

Все эти приложения и процессы должны быть продублированы, чтобы обновления работали без проблем. Изображение Далласа Томаса / Gadget Hacks

В конечном итоге все сводится к тому, что производители добавляют несколько слоев поверх стандартного Android, поэтому удвоение этого количества для обеспечения плавных обновлений просто займет слишком много места для хранения.

Если вы отслеживаете, это означает, что OEM-скины можно обвинить в более медленных обновлениях, проблемах с производительностью, большинстве проблем с вредоносным ПО Android, а теперь и в отсутствии плавных обновлений. Так что напомните мне еще раз — почему мы продолжаем мириться с этим?

Не пропустите: не дайте себя обмануть новым блестящим пользовательским интерфейсом Samsung, это все еще TouchWiz

Frequently Asked Questions/Summary

  • What are the benefits of A/B partitioning?

    A/B partitioning allows you to update your Android smartphone while using it, simply rebooting when you’re ready to boot into the new version. It also acts as protection against bricks—if the update goes wrong you’ll go back to the working install.

  • Does having A/B partitioning hinder development?

    While it did take developers a bit of time to adapt, the answer is pretty much no. In fact, it can help developers as they can dual boot their custom ROM with the old version and a new testing version to check for regressions.

  • How do A/B partitions affect mods such as custom kernels, Magisk, or Xposed?

    You have to be careful when installing them, but there are currently no issues. Magisk officially supports devices with seamless updates, and so long as you flash things in the right order you should have no problems. Make sure to flash the custom kernel before flashing your other mods, and you should be good to go.

  • Can I flash two different ROMs on each partition and dual boot?

    In theory, yes. Problems arise because of the shared data partition though, so it’s not recommended.

  • Does having an A/B partition scheme mean that I have reduced storage?

    Nope! Google says that devices which support seamless updates only sacrifice a few hundred Megabytes of storage to support it. The benefits outweigh that cost.

  • My device supports A/B partitions, does that mean I can make use of a Project Treble Generic System Image?

    Not necessarily. Project Treble and A/B support are unrelated. The Motorola Moto Z2 Force doesn’t support Project Treble, yet it supports the A/B partition scheme.

  • My device supports Project Treble, does that mean I have an A/B partition scheme?

    This is not always the case. The Honor 9 Lite is a prime example as it supports Project Treble yet does not have an A/B partition scheme.

  • Why do I need to boot TWRP with fastboot first and then flash it?

    This is because of how fastboot works and the fact that the recovery partition no longer exists. Recovery is placed inside of the boot partition, so we have to modify both boot_a and boot_b. You can’t patch a partition in fastboot, only flash over it. You could, in theory, make a prepatched boot image and then flash that instead.

  • Are there any dangers with A/B partitions? How does rollback protection affect things?

    Google has tried their hardest to make this not an issue, but in the case of the Motorola Moto Z2 Force, there were known cases of a device reactivating the older slot after upgrading to Android Oreo. This meant that rollback protection kicked in, and device owners could only rescue their smartphone with EDL recovery. Google says that rollback protection only kicks in after first boot though, so the slot needs to be fully functioning after an update before you can no longer downgrade.

Основные моменты

Доля рынка

iOS от Apple занимает значительную долю рынка в США и на
других развитых рынках, имея репутацию первоклассного, стабильного и
безопасного пользовательского интерфейса.

Android, возглавляемая компанией , занимает
доминирующее положение на мировом рынке. Эту операционную систему выбирают во
многих развивающихся странах и пользователи, предпочитающие индивидуальный
подход и широкий выбор устройств.

Экосистема и интеграция

Экосистема Apple известна своей бесшовной интеграцией всех
устройств, включая Mac, iPad, Apple Watches и Apple TV. Такая интеграция
способствует лояльности к бренду и упрощает пользовательский опыт.

Android предлагает более открытую экосистему, работая с
различными производителями и интегрируясь с широким спектром продуктов и услуг.
Сервисы , такие как Диск, Карты и Ассистент, глубоко
интегрированы, что повышает функциональность.

Разнообразие аппаратного обеспечения

Apple выпускает ограниченное количество моделей в год, делая
ставку на премиальный дизайн и контролируемые аппаратные стандарты.

На платформе Android работает множество устройств от
различных производителей — от бюджетных до дорогих телефонов, что дает
потребителям широкий выбор функций и цен.

Обновления программного обеспечения и безопасность

Apple регулярно и одновременно обновляет программное
обеспечение всех своих устройств, обеспечивая безопасность и постоянство
функций.

Процесс обновления Android более фрагментирован из-за
разнообразия производителей и пользовательских интерфейсов. Однако
работает над улучшением этой ситуации, реализуя такие инициативы, как Project
Treble.

Кастомизация

iOS предлагает более контролируемый и последовательный
пользовательский опыт с ограниченными возможностями настройки.

Android отличается высокой степенью кастомизации, позволяя
пользователям изменять практически все аспекты пользовательского интерфейса и
выбирать приложения по умолчанию.

Восприятие бренда и лояльность

Пользователи Apple, известные своей лояльностью к бренду,
часто остаются приверженцами экосистемы из-за ее премиальности, обслуживания
клиентов и стоимости перепродажи.

Android привлекает пользователей, для которых важны
гибкость, выбор и соотношение цены и качества. Разнообразие рынка Android
означает, что лояльность к бренду может значительно варьироваться.

Проблемы смартфонов Samsung

Galaxy S21 не может обновляться без швов, потому что Google этого больше не требует

Бесшовное обновление — это никакая не премиум-функция, а естественная работа механизма обновления Android. Несмотря на то что раньше она была доступна только на флагманских устройствах, в какой-то момент производители массово начали адаптировать её для всех своих смартфонов.

Но только не Samsung. По неизвестной причине корейские разработчики всё это время отказывались от реализации бесшовных обновлений на своих смартфонах, в том числе самых дорогих и новых, очевидно, не желая тратить время на оптимизацию этого механизма. Поэтому, кстати, обновление даже самого дорого Galaxy S21 Ultra будет происходить намного дольше, чем какого-нибудь Poco M3 за 10–12 тысяч рублей.

В прошлом году стало известно, что Android 11 сделает бесшовные обновления обязательными для всех смартфонов. Однако ни Galaxy S20, которые уже обновились на актуальную версию ОС, ни Galaxy S21, которые уже вышли с Android 11 на борту соответствующий механизм не поддерживают.

В это было сложно поверить, потому что Samsung вот уже пару лет как не пропускает ни одного обновления безопасности Android для своих устройств. Однако проверка показала, что в какой-то момент Google неожиданно убрала поддержку бесшовных обновлений из списка обязательных требований. Почему? Доподлинно никто не знает, но явно это произошло не без участия Samsung и её лени. Ведь на бесшовных обновления больше денег не заработаешь, а вот потратишь — наверняка.

Схема разделения A / B

До сих пор процесс установки обновления Android был чрезвычайно неуклюжим. Вы получите уведомление «Доступно обновление», коснитесь его, нажмите «Загрузить», и вы получите уведомление о том, что вам нужно подключиться к Wi-Fi, подключиться к Wi-Fi, загрузить обновление, а затем получить еще одно уведомление для его установки. Даже в этом случае телефон должен быть подключен к источнику питания, пока он перезагружается в режим восстановления и фактически выполняет обновление.

В общем, вы говорите от 30 минут до часа, чтобы установить обновление, и ни у кого нет на это времени. Даже игнорируя это препятствие, многие пользователи просто проигнорируют обновление из-за опасений за ошибки и изменения пользовательского интерфейса, которые оно может принести, в результате чего их системы будут подвергаться опасности для вредоносных программ и взломов.

Благодаря бесшовным обновлениям все это выполняется незаметно и в фоновом режиме. Вместо старого запутанного процесса вы получите уведомление с надписью «Обновление установлено. Требуется перезагрузка». При следующем перезапуске вы сразу же будете запускать новую версию Android со всеми последними исправлениями безопасности. Нет ничего проще, правда?

Не пропустите: 27 интересных новых функций и изменений в Android O

Но для того, чтобы все это работало, Nougat требует так называемого макета разделов A / B. Представьте это как второй жесткий диск, с которого может загружаться ваш телефон, — за исключением того, что жесткие диски не физические, они виртуальные. перегородки.

Когда вы достаете новый телефон из коробки, операционная система устанавливается на первый жесткий диск (раздел «A»). Когда обновление становится доступным, оно загружается и устанавливается на второй жесткий диск (раздел «B»). В следующий раз, когда вы перезагрузите телефон, он просто загрузится с раздела «B», что означает, что теперь вы запускаете новое обновление Android.

Когда приходит другое обновление, оно записывается в исходный раздел «A», и процесс повторяется. Все это происходит мгновенно и плавно.

Что будет, если обновить ПО на Андроиде

В редких случаях обновление может установиться некорректно или вовсе не установиться. Данное обстоятельство приводит к возникновению проблем в будущем. Далее будут рассмотрены некоторые ошибки, возникающие при выполнении поставленной задачи.

Возможные ошибки при обновлении и способы их устранения

Выделяют несколько распространённых ошибок. Наиболее распространенная, когда в процессе обновления системы телефон отключился от интернета. В этом случае процедура загрузки ПО прервётся до тех пор, пока соединение не восстановится.

Другие проблемы:

  • Появление неизвестной ошибки. В сложившейся ситуации телефон полностью выключается. При этом восстановить работоспособность гаджета не получается. В таком придётся перепрошивать устройство. Обычно такая проблема возникает на телефонах Samsung Galaxy, Huawei, а также Хонор.
  • Телефон разрядился и установка не была завершена. В данной ситуации необходимо зарядить смартфон и попробовать включить его. Если не получается, то придётся сбрасывать настройки девайса до заводского уровня.

Ошибки при обновлении операционной системы Android

Обратите внимание! Неофициальное обновление может отрицательно сказаться на работоспособности OC Android, загрузив в систему вирус

What you need to know

  • Google is rolling out its February 2024 security patch to global, Verizon, and SoftBank (Japan) users.
  • The light update aims to solve a few problems specific to a few devices following January’s similar trend.
  • Google recently brought a «minor» Beta 3.1 update to its Pixels, focusing on solving several persistent problems.

Google is starting to push its latest security update to its range of Pixel devices, hoping to fix some specific problems.

According to a Pixel , the February 2024 security update is arriving for the Pixel 5a (5G) up to the Pixel 8 Pro — including the Pixel Fold and Tablet. Those rocking a Pixel 8 series device will receive updated version UQ1A.240205.004. The remaining devices will find version UQ1A.240205.002, globally.

As detailed in the , this month’s patch has six System fixes with one labeled as «Critical,» involving the Bluetooth module. Additionally, there are nine Framework fixes labeled «High» on Google’s priority.

Google’s changelog mentions a few fixes regarding display and graphics problems for its Pixels. One fix aims to solve a certain «corruption» Pixel 8 and Pixel 8 Pro devices occasionally receive in «certain conditions.» The Pixel Fold is gaining a display fix, which hopes to solve problems with its outer display.

The remaining fixes and version numbers for Verizon and Japan are as follows:

  • General improvements for system stability and performance in certain conditions (for the Pixel 8, 8 Pro camera)
  • Fix for stability or performance with certain third-party apps (Pixel 5a, Pixel 6 series, Pixel 7 series, Pixel 8 series, and Pixel Fold)
  • General improvements for Wi-Fi stability and performance in certain conditions (Pixel 8 series)

(Image credit: Google)

Google advises users that some fixes may be specific to certain carriers and regions. It’s also worth remembering that the update should become more widespread as the week continues. 

February’s update mirrors January’s as both are fairly lightweight in terms of fixes. Last month’s patch touched on display and camera problems, which we’re seeing brought up again. The Pixel 8’s camera crashes and various problems with an annoying black screen were fixed in January.

Meanwhile, Google’s line of Pixels recently gained a «minor» Android 14 QPR2 Beta 3.1 update with its crosshairs on problems across the board. Display problems appear to be a recurring theme for the company’s latest devices with the Android 14 experimental environment looking to get nip the problem in the bud. Soon after, an Android 14 beta update followed that only involved the Pixel 5a.

That patch corrected a batch of problems users had experienced since Beta 3 arrived in early January.

 Phone deals: Best Buy | Walmart | Samsung | Amazon | Verizon | AT&T

Tap to Transfer

Between its iPhones and HomePods, Apple offers a feature known as Tap to Transfer. When playing a song on your iPhone with Apple Music, you can easily tap the Homepod to transfer playback to the speaker for richer sound without fiddling with on-screen controls. Google is reportedly working on that for Android 13 as per a mockup shared by Android Police. There’s nothing much known about it other than it exists at the moment, so this is more of a possibility than a certainty. Still, with Google selling Nest Audios and Nest Minis — as well as the wider ecosystem of Cast-enabled smart speakers out there — this would be a pretty nice to have feature.

Android 2.0 Eclair

Всего месяц прошел с презентации «Пончика», и разработчики выкатили «Эклер», присвоив ему цифровой код 2.1. Кроме изменения дизайна операционка предложила пользователям поддержку голосовой навигации. Теперь без этой опции невозможно представить даже самый простой смартфон, а тогда таксисты могли только мечтать о том, что когда-то они смогут искать проезд при помощи недорогого мобильного устройства.

Android 2.2 Froyo

Версия 2.2 появилась весной 2010 года. Ее главным нововведением стала поддержка Glash в браузере, что позволило, например, смотреть потоковое видео. Еще одна фишка «Йогурта» – использование смартфона в качестве точки доступа Wi-Fi. Но тогда владельцев больше интересовало автоматическое обновление приложений в магазине Android Market, и разработчики сделали так, чтобы пользователю не приходилось самостоятельно нажимать соответствующую кнопку для получения апдейта. Процесс стал полностью автоматизирован.

Android 2.3 Gingerbread

«Имбирный пряник» появился в том же 2010 году, но уже в декабре. В этой версии Андроид стала возможной поддержка нескольких камер и NFC, без которого сегодня нельзя представить современный смартфон. Также серьезно изменился интерфейс. В меню начали преобладать зеленые цвета, свойственные Андроиду и по сей день.

A PSA for Pixel 6 owners

Image used with permission by copyright holder

If you have a Pixel 6, a Pixel 6 Pro, or a Pixel 6a, Android 13 is a one-way trip. Though most users won’t mind, there’s typically a small subset of users who may want to roll back to a previous version of the operating system, perhaps for app-compatibility purposes. That’s not happening with Android 13.

“The Android 13 update for Pixel 6, Pixel 6 Pro, and the Pixel 6a contains a bootloader update that increments the anti-rollback version. After flashing an Android 13 build on these devices, you will not be able to flash older Android 12 builds,” Google warns, further adding that for Android 12 devices (as spotted by Esper’s Mishaal Rahman), “Your device is running a vulnerable version of the bootloader. After flashing this build your device’s anti-rollback counter will be incremented to prevent previous vulnerable versions of the bootloader from being flashed on the device in the future. This will prevent flashing existing Android 12 releases.”

In other words, the version of Android 12 that ships on Pixel 6 phones has a security flaw of some sort that Google’s mitigated on Android 13, and rolling back would work against that. You’re not likely to run into this in normal use, but if you’re tempted to downgrade to Android 12 — you’ve been warned.

Editors’ Recommendations

  • Google is launching a powerful new AI app for your Android phone

  • What is RCS messaging? Everything you need to know about the SMS successor

  • Have the Android 14 beta on your Pixel? You need to download this update now

  • Your Google One plan just got 2 big security updates to keep you safe online

  • Android does this one thing so much better than iOS, and it drives me crazy

Что такое 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 и теперь будет обновлять их напрямую. И есть у меня подозрение, что конечные пользователи от этого только выиграют.

Seamless A/B OTA

бесшовных A/B-обновлений

  • слотовая разметка флеш-памяти; 
  • взаимодействие с загрузчиком, управление состоянием слотов;
  • системный демон update_engine;
  • генерация zip-архива с обновлением. В рамках данной статьи этот аспект рассматриваться не будет.

Изменения в таблице разделов

  • В /сache больше нет необходимости. Теперь обновление может сохраняться либо в /data, либо сразу прошиваться в неактивный слот (об этом ниже). 
  • Раздел recovery также больше не используется. Однако режим recovery всё ещё существует, он необходим, например, для сброса устройства на заводские настройки (к этому может привести rescue party). Или для т. н. ручного обновления (sideload) через adbRecovery ramdisk теперь лежит внутри boot-раздела, ядро общее.
  • Для переключения режима загрузки (android/recovery) появилась новая опция в cmdline ‑ skip_initramfs.

/cacherecoveryстриминга/datapayload

  • active – активный слот, из него будет загружена система при следующей перезагрузке;
  • bootable – обновление успешно прошито в слот, прошло валидацию, совпали хеш-суммы и т. д.;
  • successful – система смогла успешно загрузиться в новый слот;
  • unbootable – слот поврежден. Система всегда помечает слот как unbootable перед началом процесса обновления.

bootablesuccessfulactive

  • Загрузчик определяет, что имеется один или более слотов с флагом bootable.
  • Из них выбирается активный слот (либо слот с наибольшим приоритетом).
  • Если система загрузилась успешно, слот помечается как successful и active.
  • Иначе слот помечается как unbootable и система перезагружается.

Необходимые компоненты для работы с Seamless A/B.

update_engine

компонентboot_controlupdate_enginesideloadrecovery

  • загрузка обновления в слот. Загружать можно как из предварительно скачанного пакета с обновлением, так и напрямую по Сети через http/https. В процессе загрузки проверяется подпись, открытый ключ уже находится на устройстве (/system/etc/update_engine/update-payload-key.pub.pem);
  • верификация загруженного обновления и сравнение хеш-сумм;
  • выполнение post-install скриптов. 
  • care_map.txt — используется update_verifier-ом (см. ниже);
  • payload_properties.txt — содержит хеши и размеры данных внутри payload;
  • payload.bin — пакет обновления, содержит блоки всех разделов, метаданные, подпись.

UpdateEngineApi

Java APIпример реализации

make otapackagesideloadrecoveryadb sideload ota.zippayload.binupdate_engine_client

headerspayload_properties.txtlogcat—followstdout

Заключение

  • обновление системы происходит в фоне, не прерывая работу пользователя. Да, всё так же потребуется перезагрузка (в новый слот), но пройдёт она значительно быстрее, чем перезагрузка в recovery для применения обновления;
  • минимизируется вероятность boot loop (от ошибок в реализации никто не застрахован). Процесс обновления можно прерывать, на активный слот это никак не повлияет;
  • появляется возможность отката на предыдущую версию прошивки. Даже если по каким-то причинам обновление прошло неуспешно, система просто вернётся к старой версии;
  • благодаря стримингу устройство обновится быстрее;
  • в зависимости от реализации можно полностью исключить пользователя из процесса обновления.
  • A/B OTA становится зависимой от текущей разметки диска, т. к. обновление происходит во время работы системы. Т. е. становится невозможно накатить обновление с изменёнными разделами;
  • относительная сложность реализации.

устройстве

Понравилась статья? Поделиться с друзьями:
ТехноСфера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: