среда, 27 января 2016 г.

Flash OTA with TWRP on Asus Zenphone 2

Небольшая инструкция как устанавливать OTA апдейты, если у вас установлено кастомное рекавери TWRP, Root, Xposed

OTA - Over the Air. Возможность обновления через беспроводные соединения. Посредством OTA на телефон приходят инкрементальные обновления. В скрипте указано с какой версии до какой этот файл будет обновлять. Не стоит применять обновление, если у вас исходная версия прошивки отличается от того что указано в файле (ниже выделены зеленым версии прошивки в файле updater-script).

При вышеозначенных условиях применение немодифицированного OTA апдейта будет черевато бутлупом (невозможность загрузить систему).

Все операции по редактированию файлов OTA можно проводить на телефоне - для этого необходимы:
  • Файловый менеджер, способный работать из-под рута, умеющий распаковывать и запаковывать в zip
  • Приложение для редактирования файлов (например, DroidEdit).

На компьютере в качестве текстового редактора могу посоветовать использовать Notepad++.
Итак, вы получили уведомление о том, что доступно обновление для вашего телефона.

1. Скачиваем его, но не устанавливаем. Обновление скачивается в каталог /cache с расширением файла .dlpkg. Копируем этот файл в память телефона (internal storage), переименовываем в update.zip
Перед обновлением вы должны убрать все правки которые вы делали в системном разделе (root, Xposed, снесенные приложения и т.д.)
2. Полный unroot:
Открываем SuperSU, выбираем настройки, скроллим вниз до секции Cleanup и выбираем Full unroot. Ждем когда отработает команда
3. Удаляем Xposed:
Скачиваем официальный деинсталлятор Xposed для x86 (всё что на чипсетах Intel идет как x86). И прошиваем его через TWRP. Более подробно можно ознакомится в теме на XDA, там же можно скачать обновленный деинсталлятор. Обратите внимание, скачивать необходимо файл вида xposed-uninstaller-xxx-x86.zip.
4. Изменяем OTA файл:
Распаковываем файл из пункта 1. Переходим в каталог META-INF/com/google/android/ открываем в тесктовом редакторе файл updater-script. Удалите строки со второй по пятую включительно:

getprop("ro.build.fingerprint") == "asus/WW_Z00A/Z00A:5.0/LRX21V/2.20.40.156_20151218_8265_user:user/release-keys" ||
   getprop("ro.build.fingerprint") == "asus/WW_Z00A/Z00A:5.0/LRX21V/2.20.40.160_20151225_1227_user:user/release-keys" ||
   abort("Package expects build fingerprint of asus/WW_Z00A/Z00A:5.0/LRX21V/2.20.40.156_20151218_8265_user:user/release-keys or asus/WW_Z00A/Z00A:5.0/LRX21V/2.20.40.160_20151225_1227_user:user/release-keys; this device has " + getprop("ro.build.fingerprint") + ".");
getprop("ro.product.device") == "Z00A" || abort("This package is for \"Z00A\" devices; this is a \"" + getprop("ro.product.device") + "\".");


Сохраняем изменения, закрываем файл. Открываем файл заново - необходимо убедиться, что после внесенных изменений файл начинается со следующих строк:

mount("ext4", "EMMC", "/dev/block/by-name/system", "/system", "max_batch_time=0,commit=1,data=ordered,barrier=1,errors=panic,nodelalloc");
ui_print("Verifying current system...");

Запаковываем измененные файлы обратно в update.zip
5. Загружаемся в TWRP и прошиваем получившийся update.zip как обычно.