Ota package and app package must update same time как убрать на магнитоле
Как Разрешить / Запретить OTA ( обновления по воздуху) на Андроид. Очень часто можно встретить такую ситуацию как обновление по воздуху Android, но не все предпочитают OTA обновления в силу того что это очень дорого для мобильного трафика и не очень безопасно, так как во время обновления могут возникнуть сбои (разряженная батарея, не удачно скачалось обновление).
Если получать данные обновления нет желания, то тогда необходимо их запретить. Как это сделать можно узнать из данной статьи. На ваш выбор будет предложено несколько способов, с помощью которых можно будет легко отключить или вновь разрешить обновление «по воздуху» при наличие Root прав и в случае их отсутствия.
Инструкция чтобы запретить обновление «по воздуху» Android
Способ №1 (Если нет Root прав, скрыть уведомление, Android 5.X и выше)
1. Потяните шторку с уведомлениями вниз;
3. Нажмите на появившуюся кнопку «i»;
4. В открывшемся меню отключите все уведомления «Блокировать все»!
Способ №2 (Если есть Root права, отключение)
5. Перейдите в меню Manual -> Adb и введите такие команды:
6. После чего перезагрузите Android и ваш девайс получать обновления не будет.
Инструкция вновь разрешить обновление «по воздуху» Android
Способ №1 (Если нет Root прав, включить уведомления, Android 5.X и выше)
1. Перейдите в меню Настроек Android -> Приложения;
2. Найдите приложение «Сервисы Google Play» и перейдите в него;
3. Войдите в уведомления;
4. Активируйте уведомления;
5. Перезагрузите Android девайс, после оповещения о обновление снова будут доступны вам.
Способ 2 (Если есть Root права, включение)
1. Включите отладку по USB на Android и подсоединить Android к ПК;
2. После чего Откройте программу Adb Run
3. Перейдите в меню Manual -> Adb и введите такие команды:
4. После чего перезагрузите Android и обновления «по воздуху» будут снова приходить к на ваш девайс.
В комментариях вы часто спрашиваете, что такое OTA-прошивка, чем она отличается от Recovery, как установить это обновление MIUI на Xiaomi. Особенно популярен вопрос почему не пришло OTA, хотя есть 100% уверенность в том, что она уже вышла.
Сегодня ответим на эти и другие вопросы касательно обновлений, прилетающих «по воздуху» на смартфоны Xiaomi.
Что такое обновление ОТА (FOTA)
OTA — это пакет обновления, который приходит на смартфон Xiaomi посредством мобильного интернета или Wi-Fi соединения. Аббревиатура ОТА произошла от английской фразы Over The Air, что в переводе означает «по воздуху».
Это то же самое, что FOTA (Firmware Over The Air), в переводе с английского звучащее как «микропрограммы по воздуху».
Для установки OTA Update не требуется наличие ПК, а при установке прошивки ваши данные не пропадают.
Любой пакет ОТА включает в себя файлы, позволяющие установить прошивку на конкретный смартфон Сяоми:
- Папка META INF содержит файлы, предназначенные для выполнения обновления.
- Каталог Patch включает доработки, выпущенные разработчиками прошивки. Благодаря этой папке исправляются системные баги.
- Папка System содержит файлы, добавляющие операционной системе новые функции, изменяющие внешний вид и влияющие на работу ОС.
- Проверочные файлы предназначены для сканирования установленной системы и определения, стоковая ли MIUI от Xiaomi установлена на телефоне.
- Файлы для проверки имеющихся обновлений предназначены для оценки степени «свежести» установленной ОС. Если нужные обновления были установлены ранее, то устанавливаться из нового пакета будет не всё.
- Набор инструкций определяет, какие файлы нужно удалить, а какие следует оставить для стабильной работы прошивки.
- Патчи (комплекты обновления драйверов) предназначены для обеспечения работы комплектующих, например, ЦП, ОЗУ, мобильного модема.
- Пакет инструкций определяет, достаточно ли у конкретного пользователя прав для установки обновления.
Это стандартный состав любой прошивки ОТА.
Не каждая версия прошивки MIUI получает ОТА. В некоторых случаях разработчики выпускают пакеты для прошивки только посредством Recovery или Fastboot.
Чтобы выбрать OTA или Recovery ROM, рассмотрим их отличия:
- Рекавери можно только скачать, эта прошивка не прилетает «по воздуху».
- Установка Recovery ROM производится через режим восстановления телефона Recovery Mode.
- Рекавери весит больше, поскольку содержит полную прошивку для смартфона. OTA содержит только часть файлов, необходимых для обновления. можно установить на любую версию MIUI, OTA только на указанную разработчиками.
- Рекавери бывает стоковый (официальный) и кастомный (от сторонних разработчиков). OTA только официальные.
Установка ОТА: автоматически, через три точки и вручную
Перед началом стоит убедиться, что аккумулятор смартфона заряжен хотя бы на 60%. Во время установки ОТА используются все ресурсы устройства и батарея расходуется быстрее. Если в процессе смартфон отключится, то получится «кирпич», который придётся реанимировать при помощи режима Fastboot.
Существует 3 простых способа как установить прошивку OTA на телефон Xiaomi:
- Автоматический.
- Через локальное меню обновления «три точки».
- Установка вручную.
Пользовательские данные будут сохранены, но всегда есть риск их потерять из-за ошибки во время установки обновления. Сделайте резервную копию важных данных заранее.
Автоматическая установка
Для обновления используются возможности смартфона и его текущей прошивки, ПК не нужен.
Автоматическое обновление через OTA можно запустить из меню настроек телефона:
Установка OTA через «три точки»
Используется в том случае, если автоматический способ по какой-то причине не сработал. Установка OTA Update через три точки требует больше действий, но в результате телефон также получит последнюю версию MIUI.
Как установить OTA через три точки:
Установка прошивки начнётся автоматически после скачивания. При этом смартфон будет перезапущен. Полноценно пользоваться им можно будет только после полной загрузки устройства.
Обновление ОТА устанавливается только на ту версию ОТА, для которой она выпущена. Если вы случайно пропустили одно или несколько обновлений, сначала придётся установить предыдущее и только потом перейти к установке актуальной версии. Либо ставить Recovery ROM.
Ручное обновление
Такой вариант подходит случае, если вы скачали официальное ОТА-обновление самостоятельно, поскольку вам на телефон оно всё не приходит (почему OTA не прилетает рассказано ниже).
Как установить OTA обновление вручную:
- Перенесите скачанную прошивку в память телефона.
- Откройте настройки.
- Перейдите в категорию « О телефоне ».
- Тапните по кнопке « Версия MIUI ».
- Нажмите на кнопку с тремя точками.
- В появившемся меню нажмите « Выбрать пакет обновления ».
- Выберите пакет OTA, который только что скачали и нажмите ОК .
Операционная система проверит целостности пакета и начнёт установку. Во время обновления телефон будет перезагружен. После рестарта у вас будет актуальная версия прошивки.
Альтернативные способы: Recovery и Fastboot
Применяются в случаях, если ОТА по какой-то причине не пришло или его невозможно установить. Recovery часто используют для установки «чистой» MIUI, а Fastboot помогает, если обновление прошло неудачно и телефон превратился в кирпич.
Recovery
В этом случае используются возможности стокового рекавери MIUI. Можно скачать официальную MIUI из архива и прошить вручную.
Как установить OTA через рекавери:
- Скачайте ZIP-файл с прошивкой, переименуйте его в и переместите его в update.zip и положите в корень SD-карты.
- Выключите смартфон.
- Зажмите одновременно кнопку питания и обе кнопки регулировки громкости.
- В появившемся меню выберите Install update.zip to System One .
- По завершении процесса перезагрузите устройство, выбрав Reboot to System .
Скачанная прошивка должна иметь имя update.zip. Если имя будет другое, то рекавери просто не увидит файл и прошивка новой версии будет невозможна.
Fastboot
Фастбут позволяет решить проблему неудачного обновления, когда телефон превратился в кирпич. У режима Fastboot много других возможностей, но сегодня мы остановимся только на перепрошивке Xiaomi.
Для установки OTA через Fastboot необходимо скачать программу MiFlashPro.
Процесс прошивки смартфона немного сложнее:
- Скачайте архив с прошивкой и распакуйте содержимое в любое место на ПК.
- Запустите MiFlashPro, перейдите на вкладку Mi Flash.
- При первом запуске программа предложит установить необходимые драйверы. Нажимаем кнопку Install .
- После установки драйверов нажмите на кнопку Select и в окне проводника выберите папку с распакованной прошивкой.
- Выключите смартфон и затем зажмите одновременно кнопку питания и уменьшения громкости для входа в режим Fastboot.
- Подключите смартфон к компьютеру при помощи USB-кабеля.
- В окне программы нажмите Refresh .
- После того как программа определит телефон, внизу окна выберите save user data (сохранить данные пользователя) или clean all and lock (удалить всё и заблокировать загрузчик).
- Кликните по кнопке Flash .
Процесс установки занимает от 5 до 10 минут. По завершении процедуры телефон самостоятельно перезагрузится.
Учтите, что при таком сценарии обновления прошивки можно лишиться всех своих данных. Поэтому лучше создать резервную копию.
Есть ещё набор утилит Xiaomi ADB/Fastboot Tools, которые помогаю прошивать смартфоны Сяоми нажатием пары кнопок. По сути, это командная строка ADB с графический интерфейсом.
Обновление Android на Xiaomi A-серии
Смартфоны серии А от компании Xiaomi отличаются от других продуктов китайского техногиганта тем, что в них установлен «чистый» Андроид без фирменной оболочки MIUI. Хотя на тот же Mi A2 позже выпустили MIUI 11.
Проблемы при установке ОТА на эти телефоны уже стали своеобразной традицией. Например, для Xiaomi Mi А3 в декабре 2020 года вышла Android 11, но вскоре оказалось, что после установки прошивки телефон превращается в кирпич, который нужно нести в ремонт.
Разработчики почти сразу отозвали обновление, но владельцы смартфонов Xiaomi A3 получили проблему на ровном месте.
Xiaomi A3 работает на Android One, как и предыдущие смартфоны А-серии.
Если хочется во что бы то ни стало обновить смартфон Xiaomi A-серии, для которого нет MIUI, то можно рассмотреть установку кастомной прошивки от сторонних разработчиков. Для этого потребуется разблокировать загрузчик и установить кастомное рекавери (в большинстве случаев – TWRP).
После установки кастомной прошивки, можно дождаться выхода стабильной версии ОТА от официального производителя и установить её при помощи режима фастбут и программы MiFlashPro. Никакой другой вариант не подойдёт, поскольку после установки оригинальной ОТА на кастомную прошивку любыми другими способами пользователь получает «кирпич».
Почему не приходит OTA на телефон: 10 причин
Десятки комментариев под нашими трекерами (рекомендуем MIUI 12, MIUI 12.5, Android 11) посвящены этой проблеме.
Есть несколько причин из-за которых обновление может не прийти для конкретного телефона. Например, всем вокруг на тот же Redmi Note 9 Global обновление пришло, а на ваш телефон нет. В большинстве случаев практически все проблемы решаемы.
Ниже приведены 10 причин, почему не приходит обновление OTA на Xiaomi и их решение.
1. Ошибка или сбой MIUI
Если произошёл сбой при установке OTA, то все попытки установить обновление классическим способом завершаются разнообразными ошибками MIUI. В некоторых случаях смартфон вовсе не может соединиться с сервером для поиска новой версии.
Если наблюдаются такие проблемы, можно решить их при помощи советов из статьи про ошибки MIUI по ссылке выше, либо скачать официальный файл прошивки и установить его при помощи Recovery или Fastboot способами, описанными в середине этой статьи.
2. Разблокированный загрузчик
На смартфонах Xiaomi загрузчик заблокирован для обеспечения безопасности. Энтузиасты разблокируют его для кастомной прошивки или установки альтернативного рекавери.
На смартфоны с разблокированным загрузчиком ОТА прошивка не приходит.
3. Кастомная прошивка
Обновления получают только телефоны, использующие официальную (стоковую) прошивку от Xiaomi. Те пользователи, которые установили кастомную прошивку (ту же самопальную «вьетнамку»), автоматически лишаются поддержки разработчиков и не получают ОТА.
4. Не та прошивка
Сама частая проблема заключается в том, что люди просто путают прошивки и думают, что для их телефона вышло обновление, хотя его нет.
Чтобы узнать какая версия MIUI установлена, не нужно смотреть на коробку от устройства. Нужно посмотреть буквенный код MIUI в настройках, а затем изучить аналогичный код прошивки, которую вы хотите поставить.
Найти буквенный код можно открыв предложение « Настройки » → « О телефоне » → « Версия MIUI ».
Как расшифровать код мы описали в статье «Частые вопросы про MIUI».
5. Кастомное рекавери
Те пользователи, которые установили TWRP или другое альтернативное рекавери автоматически лишаются ОТА.
Для решения проблемы достаточно вернуть на место стоковое рекавери.
6. Нет новой версии OTA
Проблема часто встречается на старых телефонах, когда прошивка не обновляется по причине отсутствия новой версии OTA Update для устройства.
Здесь ничего сделать нельзя.
Следить за выходом новых версий прошивок можно в нашем канале Телеграм или на странице устройства в каталоге обновлений Сяоми. Ссылки на загрузку ведут на официальный сайт Xiaomi Bigota MIUI.
7. Активен Root
Права суперпользователя позволяют редактировать и изменять системные файлы.
Рут устанавливается вручную. И если он включён, то обновления «по воздуху» не приходят.
8. Модифицированы системные файлы
Если файлы ОС были модифицированы, смартфон не получит обновлений OTA. Установленный Android должен быть оригинальным, без малейшего намёка на модификацию.
Для решения проблемы верните изменённые файлы к оригинальному состоянию. Если это невозможно – прошейте оригинальную сборку с использованием Fastboot.
9. Прошивка вышла для определённого региона
Вероятно, ОТА вышла только для конкретного региона (например, Китай или Индия). В этом случае нужно подождать официального релиза для вашего региона.
Если ждать не хочется, можно сменить регион в настройках и получить долгожданное обновление.
Как сменить регион MIUI на Xiaomi:
- Откройте настройки и перейти в раздел «Расширенные настройки».
- Тапните по пункту Регион .
- Выберите Китай, Индию или любой другой нужный регион.
- Подтвердите действие кнопкой ОК .
- Возможно, после этого придётся отредактировать время на телефоне.
Рекомендуем прочитать чем отличаются регионы и на что влияет их выбор.
10. Ваша очередь ещё не подошла
Компания Xiaomi обновляет свои устройства волнами, а не выкатывает прошивки разом на все телефоны. Если на ваш телефон ОТА не пришло, значит, смартфон получит прошивку на следующем этапе.
Выход OTA для MIUI осуществляется поэтапно:
- После релиза стабильной версии, она раздаётся «по воздуху» для 30% случайных пользователей.
- Если всё хорошо и багов не выявлено, через 2–4 недели OTA выкатывается для всех смартфонов Xiaomi.
Поэтому если вам не пришло, а всем пришло, то придётся подождать до месяца. На 1 этапе скачать прошивку MIUI с официального сайта не получится, поскольку она появляется там на 2 этапе развёртывания.
Такая стратегия позволяет производителю устранять недоработки и баги, возникающие при обновлении. Если в первой волне нет проблем с прошивкой, то она разворачивается дальше. Если есть, то её отзывают и начинают дорабатывать. В этом случае нужно ждать, пока исправят баги.
В большинстве случаев в прошивках MIUI разработчики добавляют новые возможности (посмотрите обзор MIUI 12.5), исправляют баги, устраняют проблемы совместимости, улучшают работу и энергоэффективность, проводят оптимизацию.
На этом всё. Если хотите что-то добавить, добро пожаловать в комментарии.
Некоторые пользователи столкнулись с проблемами при использовании абсолютно нового обновления программного обеспечения PR1.1, которое было недавно представлено. В результате в большинстве случаев пользователи получали сообщение от Менеджера приложений, в котором говорилось о необходимости инсталлировать данное обновление через прошивку устройства утилитами NSU/flasher (явным симптомом является тот факт, что в диалоге есть только кнопка Создать резервную копию, но полностью отсутствует кнопка Продолжить).
В большинстве случаев данную ситуацию можно объяснить одной из следующих причин:
- Пропущена модернизация с PR1.0 до PR1.0.1. В таком случае необходимо будет использовать NSU/flasher.
- Некоторые пакеты Debian были инсталлированы вручную через apt-get или dpkg , возможно в обход санитарных проверок и специальных проверок, которые выполняет HAM (Менеджер приложений Hildon), чтобы гарантировать надлежащее обновление OTA.
- Устройство каким-то образом было приведено в состояние, когда понадобится удалить некоторые пакеты для выполнения обновления OTA (это то, что исключительно безопасный Менеджер приложений никогда не сделает).
Содержание
- Если речь идет о первом случае, к сожалению, остается только перепрошить устройство. Пропущен промежуточный шаг между PR1.1 и PR1.0 и устройство пользователя не сможет гарантировать выполнение надлежащего обновления OTA без соблюдения необходимых предварительных условий.
- В случае инсталлирования пакетов Debian вручную они могут каким-то образом вступать в конфликт с обновлением OTA, в основном в силу одной из следующих причин:
- Они нарушают политику в отношении пакетов сторонних производителей.
- Их версии отличаются (это, скорее всего, более новые версии) от версий, которые ожидаются пакетом обновления OTA для надлежащей работы. Считайте пакет OTA метапакетом, который ожидает, что в систему будут инсталлированы точные версии пакетов до модификации. В таком случае станет понятно, почему всего лишь одной зависимости пакета OTA, отличающейся от ожидаемой версии, достаточно, чтобы привести к приостановке процесса. Именно поэтому пользователю предлагается перепрошить устройство.
Если проблема в этом, необходимо каким-то образом вернуть устройство в надлежащее состояние. Для этого сначала удалите эти пакеты и/или восстановите их до ожидаемых версий.
Как обнаружить конфликтующие пакеты?
Не существует универсального способа, который будет применим ко всем случаям, но далее предлагаются некоторые советы.
- Попробуйте выполнить apt-get upgrade в командной строке (без подтверждения!) и обратите внимание на данные на выходе. При получении похожего сообщения будет понятно, какой пакет блокирует обновление OTA и почему:
В данном случае была инсталлирована версия пакета, которая новее, чем версия, которую ожидает OTA. Поэтому решение в данном случае - восстановить пакет до ожидаемой версии прежде, чем продолжить.
Другим решением может стать модификация конфликтующего пакета при условии, что данная версия доступна в репозитории. Например, если cmt-firmware-rx51 - это название пакета:
- Если конфликта нет, но пользователь получает сообщение о том, что пакеты не будут модифицированы (или, по крайней мере, не будут модифицированы пакеты, имеющие отношение к метапакету mp-fremantle-generic-pr ), попробуйте использовать команду apt-get dist-upgrade и проверить, будут ли получены данные на выходе типа:
В таком случае проблема заключается в конфликтующих пакетах, которые необходимо будет удалить вручную до повторного использования Менеджера приложений, если пользователь не желает (и он не должен) продолжать использовать команду apt-get dist-upgrade .
Обе команды apt-get update и apt-get dist-upgrade могут не показать никаких конфликтующих пакетов, но Менеджер приложений по-прежнему отказывается инсталлировать обновление. Причиной могут быть libqt4-phonon или libqt4-webkit . Проблему можно решить, если удалить их и приложения, зависящие от них.
Недостаточное количество свободного места
Если для модернизации не хватает свободного места, в результате использования команды apt-get dist-upgrade появится сообщение об ошибке:
Существует несколько предложений, как можно освободить место в rootfs.
Заключительные советы
Наконец ниже предлагаются несколько последних, но тем не менее полезных советов, о которых стоит помнить при модификации устройства обновлением OTA:
- Проверьте, чтобы батарея была полностью заряжена или устройство подключено к сети прежде, чем приступить к дальнейшим действиям.
- Убедитесь, что в разделе rootfs есть достаточное количество свободного места , чтобы можно было выполнить обновление (45 Мб – требуемый минимум). Чтобы это проверить, просто выполните df -h / в командной строке:
- Независимо от количества свободного места, необходимо деинсталлировать ioquake3, если он был ранее инсталлирован.
- Не забудьте на всякий случай выполнить резервное копирование до выполнения обновления.
Примеры решателей задач
Попробуйте один из способов, которые предлагаются в данной ветке. Если это не помогло, попробуйте выполнить следующие действия (следуйте по пунктам в предложенном порядке).
Довольно часто юзеры, привыкшие рутовать прошивки, устанавливать разного рода системный софт, менять ядра и по-другому издеваться над прошивкой, обнаруживают, что установить OTA-обновление невозможно. Оно просто не встает, ругаясь на измененные системные файлы, неправильные цифровые ключи и всякое прочее. В этой статье я расскажу о самой механике обновления, причинах возникновения проблем и о том, как их решить.
Как это работает
Первыми новые версии Android традиционно получают последние из устройств Nexus. Когда новая версия прошивки готова для широкой публики, полный образ размещается по адресу developers.google Вскоре после этого начинается распространение прошивки по воздуху. Как рассказывает один из разработчиков Google Дэн Моррилл (Dan Morrill), сначала ОТА рассылается на 1% устройств. Это происходит рандомно, независимо от региона или места покупки телефона/планшета. В это время отлавливаются баги, что позволяет приостановить обновление при наличии критических ошибок у большого числа пользователей.
Далее в течение пары недель обновление распространяется для 25, 50, 100% пользователей. То есть на первом этапе шанс на получение обновления имеет одно устройство из ста. Если обновление не получено, то устройство выпадает из списка и повторное неоднократное нажатие на кнопку «Проверить наличие обновлений» автоматически переносит устройство в конец списка. Когда запускается новый этап рассылки, нажатие на кнопку дает следующий шанс получить обновление уже 25%. Так как устройство само проверяет наличие обновления раз в сутки (или при перезагрузке), то нажатие на кнопку может «выстрелить» раньше, чем это случилось бы само по себе. Но опять-таки проверка будет только один раз. Дальнейшие нажатия не помогут. Это не та ситуация, когда «кто первый нажал, тот первый получил». В любом случае обновление по воздуху придет всем в течение пары недель. Самые нетерпеливые могут прошить обновление руками (об этом ниже).
Уведомление о наличии обновленияФорсируем обновление
Ускорить получение обновления можно двумя способами. Первый — очистка данных Google Services Framework с последующей перезагрузкой устройства. Крайне не рекомендуемый способ, который осуждают даже инженеры Гугла. Этот способ вызывает множество негативных эффектов, главный из которых — смена идентификатора для GCM (Google Cloud Messenger). Этот идентификатор нужен во всех программах Гугла и множестве других приложений, использующих функции push-уведомлений. И если в некоторых программах побороть эффекты относительно легко, то для многих других последствия могут быть более печальны. Все приложения просто перестанут принимать push-уведомления, основанные на GCM, пока не получат новый идентификатор. Некоторые приложения делают проверку часто, некоторые редко. Для части поможет очистка данных приложения. А те приложения, которые используют GCM ID в качестве идентификатора на своих серверах, могут иметь более глубокие проблемы.
Стоковый recoveryВторой — установка обновления руками через консоль восстановления. Вскоре после запуска ОТА в профильных темах устройств на ресурсах 4PDA и XDA появляются файлы вида хеш.signed-hammerhead-LRX21O-from-KTU84P.c1a33561.zip, в названии которых содержится хеш файла, марка устройства, а также версии прошивок для обновления (на какую, с какой). На компе необходимо иметь папку с утилитами ADB и fastboot. Я использую последние версии из Android SDK. В ту же папку нужно положить скачанный архив с ОТА-обновлением. Также необходимо иметь правильно установленные драйверы для устройства, которые могут конфликтовать с ранее установленными драйверами для других устройств.
Само устройство следует перевести в режим восстановления (recovery). Для этого на выключенном устройстве зажимаем одновременно кнопки <Power + VolDown> и попадаем в загрузчик, кнопкой громкости выбираем Recovery mode, входим в него кнопкой Power. Появится лежачий Android с восклицательным знаком. Это не ошибка, пугаться не стоит. Необходимо на этом экране коротко нажать <Power + VolUp>, после чего и загрузится стоковый рекавери. В нем необходимо выбрать кнопками громкости пункт apply update from ADB и подтвердить кнопкой включения. Далее необходимо подключить телефон/планшет к компу. Запускаем консоль, переходим в папку с ADB и архивом обновления и вводим следующую команду (для файла, приведенного выше):
После этого на телефон установится ОТА и он перезагрузится.Блок-врезка: Как скачать обновление через сотовую сеть
Модифицированная прошивка
Если у тебя разблокирован загрузчик, стоит кастомный recovery, получен root, который активно используют различные программы, и применены различные модификации, то с вероятностью 99% обновление не установится. Даже при возврате стокового recovery при прошивке через ADB будет выдавать ошибку Status 7. Кастомный recovery также будет писать ошибку, ругаясь на измененные файлы. Побороть эту проблему можно, вернув смартфон к заводской прошивке, но это не наш метод. Мы разберемся с ней, расковыряв файл обновления, выясним, на каком месте спотыкается установка, и устраним проблему. И все это на примере самого крупного обновления Nexus 5 — с версии 4.4.4 (KTU84P) на 5.0 (LRX21O).
Механика работы ОТА
Итак, обновление с 4.4.4 на 5.0 стало самым крупным за последнее время с весом архива в 491 Мб. В связи со сменой Dalvik на ART практически весь код был модифицирован. Так что же содержит архив? Как видно на скриншоте «Файлы из архива с обновлением до 5.0», внутри архива находятся образы бутлоадера (различные разделы), каталоги META-INF, patch и system.
Файлы из архива с обновлением до 5.0Для минимизации количества трафика и уменьшения нагрузки на серверы, а также для снижения затрат конечного пользователя структура обновления построена так, что файлы с большим количеством изменений или написанные с нуля находятся в каталоге system и меняются целиком. А файлы с небольшими по меркам Гугла изменениями не заменяются, а патчатся, то есть изменяются куски кода внутри файла. Эти файлы находятся внутри каталога patch и имеют расширение.р. Это хорошо видно, если сравнить файлы в /system/bin и /patch/system/bin. При этом для создания патча используется хорошо знакомый юниксоидам bsdiff, позволяющий из двух бинарников получить дельту (файл с разницей между файлами).
Само же волшебство происходит по воле updater-script, который находится в /META-INF/com/google/android. Именно его мы и рассмотрим подробнее. Сам файл весит 463 Кб и содержит строки кода, отвечающие за процесс применения ОТА-обновления (на самом деле это скриптовый язык Edify, интерпретатор которого находится в том же каталоге и носит имя update-binary. — Прим. ред.). Вот что он содержит в нашем случае. Сначала монтируется раздел /system (достаточно стандартная для Linux строка монтирования, схожая с теми, что находятся в /etc/fstab):
Далее скрипт проверяет модель устройства и версию прошивки с помощью чтения системной переменной ro.build.fingerprint (обрати внимание, что он не берет ее из файла /system/build.prop, а запрашивает у самого recovery, поэтому обновления нельзя поставить с помощью кастомной консоли восстановления, хотя до 5.0 это было возможно). Здесь и далее троеточие это сокращенные строки:
Как видно выше, на «неродное» устройство обновление не встанет, зато его можно повторно накатить на версию 5.0. Также скрипт проверяет, подписана ли прошивка официальными ключами Google (release-keys). Из-за этого у многих пользователей возникают проблемы. Далее начинается проверка наличия и целостности отдельных файлов с помощью сверки хешей SHA-1. Для этого используются две функции: sha1_check(), принимающая в качестве аргументов имя файла и хеш, и apply_patch_check(), принимающая три аргумента: имя файла, и два хеша. Первая используется просто для проверки целостности файла, вторая проверяет, не был ли файл уже пропатчен. Для простоты длинные хеши в коде ниже заменены на многоточие:
Для примера показаны только две проверки. По факту проверяются все файлы, которые подлежат замене или изменению патчем. В коде видно, что обновление выдаст ошибку, если, например, был изменен или удален файл /system/app/Drive.apk. В конце блока проверки скрипт проверяет ядро, доступное место в /system и радио:
То есть данное обновление не встанет, если стоит кастомное ядро или модификация радио. Следующим шагом идет удаление старых файлов с устройства перед их заменой на новые и удаление файлов, которые не нужны на новой прошивке:
Далее патчатся все необходимые файлы с предварительной проверкой хеша SHA-1. Патчинг выполняется с помощью функции apply_patch(), которая принимает имена файлов для патчинга и несколько хешей: хеш оригинала, хеш патча и хеш результата. Последним аргументом идет имя файла с патчем. Как и раньше, все хеши в коде ниже сокращены до многоточия:
Последним патчится ядро и RAM-диск:
Следующий блок переносит на устройство файлы, которые не попадают под патч и должны быть заменены целиком. Часть из них затем перемещается:
Удаляются ненужные файлы, расставляются симлинки, права доступа и флаги (здесь на многоточие заменены именно права доступа и флаги):
Прошиваются бутлоадер и сопутствующие разделы:
Последним меняется build.prop, в который записывается в том числе новая версия прошивки. Сделано это для того, чтобы при возникновении ошибки на самом последнем этапе, когда почти все файлы уже перенесены, прервать обновление и сохранить номер текущей версии прошивки в файле на устройстве. Тогда при нажатии кнопки «Проверить обновление» можно запустить его снова.
В конце скрипта раздел /system перемонтируется, и начинается проверка правильности применения обновления, сверяется SHA-1 хеш новых файлов и /system размонтируется:
После чего устройство перегружается в новую систему.
Updater-script как он естьКастомный recovery
До недавнего времени прошить архив ОТА-обновления в большинстве случаев (если не было проверки recovery для его замены) можно было из кастомного recovery, просто закинув файл на устройство и выбрав install zip. Но начиная со скрипта для обновления 5.0 скрипт поменялся. Предыдущие версии проверяли файл /system/build.prop:
Текущие скрипты проверяют не файл, а значение системной переменной напрямую, запрашивая его у recovery:
А если разобрать кастомный recovery (для примера TWRP версии 2.8.0.0), то можно увидеть следующие строки:
Версия TWRP 2.8.6.1 имеет в коде следующие строки (обрати внимание на слово omni во второй строке, разработчик TWRP с ником Dees Troy — еще и один из активных разработчиков OmniROM):
А последние версии CWM Touch и Philz подписаны так:
Именно эти значения и возвращает при проверке скрипт, прерывая обновление в самом начале и выдавая ошибку о несоответствии версии Android на устройстве.
Вот какой ответ ты получишь при попытке установить обновление 5.0.2 на Nexus 7 из кастомного recoveryОбновление 4.4.3–4.4.4
Для сравнения можно привести предыдущее обновление с версии KTU84M на KTU84P. Обновление мелкое и весит всего 2,5 Мб. В основном касается улучшений безопасности. Если открыть архив, то можно увидеть, что патчится только небольшое количество системных файлов и радио, соответственно, скрипт и проверяет только их. Это обновление нормально устанавливалось с рутом, кастомным ядром и работающим Xposed Framework, так как на наличие изменений все это не проверяется.
Обновление для Nexus 6 и Nexus 9
У последних устройств от Google структура скрипта в корне другая. Для этих и (судя по всему) последующих устройств Nexus Google добавила в сборочный скрипт, формирующий ОТА-обновление, функцию генерации поблочного обновления. Такое обновление сверяет и обновляет не отдельные файлы, а блоки в файловой системе /system. Далее в примере «66. 524256» — это длинные списки адресов блоков:
Это позволило инженерам Google существенно упростить и ускорить применение ОТА-обновления для конечных устройств, а сам updater-script теперь занимает всего 5 Кб. Но это обернулось головной болью для продвинутых пользователей. Ведь теперь любые изменения в системном разделе вызовут сбой. Включая наличие лишних файлов. Даже факт монтирования системы как R/W приведет к изменению хеша суперблока ФС.Заключение
Подводя итоги статьи, можно сделать следующие выводы:
- Права суперпользователя сами по себе не влияют на успешное применение обновления. Влияют те изменения, которые пользователь и программы вносят в систему, имея эти права. Часто эти изменения невозможно отследить и вернуть.
- Повлияют ли root и внесенные в систему изменения на успешное обновление, зависит каждый раз от того, что именно меняется в системе при обновлении и какие файлы проверяет скрипт. Если система менялась, замораживались/отключались ненужные системные приложения через Titanium Backup, менялись ядра, ставился кастомный recovery, Xposed Framework, Lucky Patcher, freedom, franco.Kernel updater, моды на звонилку и всяческие улучшалки для звука, другая бутанимация, системные шрифты и так далее. Все это может повлиять на обновление.
- При модификации системы всегда оставляй оригинальные файлы для бэкапа, если хочешь обновляться через ОТА. Копируй в облако, переименовывай как угодно. Можно сделать Nandroid-бэкап раздела /system (о Nandroid читай в предыдущем номере).
- Если помнишь, что менял в системе, можно откатиться назад почти всегда. Recovery всегда пишет ошибку, на что ругается обновление. Погуглив название файла в ошибке, иногда можно найти, какая прога его меняет. Например, /system/bin/thermal-engine-hh и /system/lib/power.msm8974.so заменяет franco.Kernel updater и не возвращает его даже при прошивке стокового ядра и сносе самого приложения.
- Для успешного применения ОТА необходимо вернуть в систему оригинальные файлы. Самый верный способ — это прошить system.img, стоковое ядро и recovery перед тем, как устанавливать обновление (данные и приложения не потеряются).
- Ну и главный вывод. Если есть рут и много модификаций — не мучайся, а сразу шей полный образ новой прошивки, удалив ключ -w в flash-all.bat для сохранения данных. Начиная с обновления до версии 5.0, остается очень маленькая вероятность обмануть скрипт. Да и следующее обновление может иметь «блочную» структуру, которая подразумевает наличие только полного стока для применения.
Пара слов от редактора
До недавнего времени OTA-обновления в каcтомных прошивках (CyanogenMod, Paranoid) всегда приходили в виде zip’а с полной версией прошивки и было абсолютно неважно, какие изменения вносились в систему до этого. Прошивка всегда устанавливалась заново (с сохранением данных юзера и gapps, естественно), однако в CyanogenMod 11 появилась функция инкрементальных обновлений, но гораздо более простая в сравнении с той, что используется Google. Обновление просто проверяет целостность прошивки и заменяет те файлы, которые изменились с прошлой версии (обычно ночной сборки), без всяких патчей. Причем, если ты пропустишь одно из обновлений, следующее по старинке придет в виде полного обновления. Просто и удобно.
Более интересный метод используется в OmniROM. Для обновления она использует бинарные патчи, но совсем не так, как это делает Google. Первое OTA-обновление всегда скачивается полностью, после чего сохраняется на карте памяти, прошивается, но не удаляется с карты. Следующее OTA-обновление уже приходит в виде единого бинарного патча, после чего патч накладывается на сохраненное в прошлый раз на карте памяти обновление и уже оно прошивается. Изюминка этого метода в том, что патч накладывается не на систему, а на файл с прошлым обновлением и смартфон каждый раз прошивается как бы с нуля (но с сохранением данных и настроек). Почти идеальный метод — трафик экономится, а беспокоиться о конфликтах с измененной системой не надо.
Экран установки обновлений в CyanogenMod 12Когда ты установить обновления OTA вручную на Android, вы можете мгновенно обновить свое устройство без ожидания. В этом посте мы покажем вам, как Установите OTA Update Zip с использованием Неопубликованная загрузка ADB а также Стоковое рекавери.
Шаги по установке OTA Update Zip на Android
Следует помнить о нескольких вещах:
- Чтобы иметь возможность устанавливать / загружать OTA-обновления, ваше устройство не должно быть рутировано или должно быть стоковое рекавери установлены. Ваше устройство должно быть на 100% стоковым.
- У вас должен быть Zip-файл обновления OTA для вашего устройства. Обычно их можно найти с помощью простого поиска в Google или на форумах XDA.
- Хотя обновления OTA безвредны и не стирают данные вашего устройства, всегда рекомендуется делать резервную копию вашего устройства Android.
Способ 1. Установить OTA Update из Stock Recovery (Применить обновление с SD-карты)
- Загрузите файл OTA Update Zip и держите его наготове.
- Подключите Android-устройство к компьютеру через USB-кабель. Перенесите / скопируйте Zip-файл обновления OTA на устройство Android. внутреннее хранилище.
- Убедитесь, что ZIP-файл обновления находится в корне (за пределами всех папок) вашего внутреннего хранилища.
- Включить отладку по USB | Авторизуйте команды ADB на Android.
- Убедитесь, что на вашем устройстве установлены последние версии драйверов ADB и Fastboot.
- Теперь загрузите ваше устройство в Режим восстановления:
- Подключите Android-устройство к компьютеру через USB-кабель.
- Перейдите в папку, в которой установлены ABD и Fastboot на вашем устройстве.
- Откройте командную строку из папки.
└ Удерживайте Shift и правые часы на пустом месте внутри папки. Выберите «Открыть окно команд здесь» или «Открыть окно PowerShell здесь». Любой из них будет работать нормально.
Метод 2: установите обновление OTA через ADB Sideload (Применить обновление от ADB)
- Загрузите файл OTA Update Zip и держите его наготове.
- Подключите Android-устройство к компьютеру через USB-кабель.
- Включить отладку по USB | Авторизуйте команды ADB на Android.
- Убедитесь, что на вашем устройстве установлены последние версии драйверов ADB и Fastboot.
- Теперь загрузите ваше устройство в Режим восстановления:
- Подключите Android-устройство к компьютеру через USB-кабель.
- Перейдите в папку, в которой установлены ABD и Fastboot на вашем устройстве.
- Откройте командную строку из папки.
└ Удерживайте Shift и правые часы на пустом месте внутри папки. Выберите «Открыть окно команд здесь» или «Открыть окно PowerShell здесь». Любой из них будет работать нормально.
Примечание: Убедитесь, что имя файла OTA Update Zip указано правильно в приведенной выше команде. В качестве примера мы использовали имя ota-update.zip.
Это способы установить обновления OTA вручную на устройствах Android.
Общие сведения об обновлениях Android OTA
Короче говоря, обновление по воздуху OTA обновление, это обновление, которое доставляется на ваше устройство напрямую от производителя, когда для вашего устройства выпускается новая версия исправления безопасности или новая версия Android.
Особенность обновлений Android OTA заключается в том, что обновления доступны не всем одновременно. В отличие от Apple, которая выпускает обновления для своих устройств для всех одновременно, OEM-производители Android придерживаются поэтапного подхода. Обновление сначала выпускается в определенной географической области, а оттуда оно постепенно распространяется по всему миру. Но, если вы не хотите ждать установки обновления, вы всегда можете неопубликованная загрузка OTA Update Zip файл на вашем устройстве Android, чтобы мгновенно обновить ваше устройство.
Оба метода, описанные в этом руководстве, являются общими для всех устройств Android и будет работать с любым устройством от любого производителя Android-устройства.
Читайте также: