TWRP Recovery. Что это такое?

Каждый начинающий пользователь Android планшета или телефона, рано или поздно задумывается о необходимости получения root прав на своем устройстве или об установке на него альтернативной прошивки, загрузочной анимации и прочего.
Читая инструкции о том, как всё это сделать, он зачастую сталкивается с понятием модифицированного или альтернативного рекавери, такого, как ClockworkMod Recovery или TWRP Recovery. Что такое модрекавери, а также инструкцию по ClockworkMod Recovery вы можете почитать в этой статье, а сегодня я хочу ознакомить вас поближе с еще одним популярным модифицированном рекавери — TWRP Recovery от команды разработчиков Teamwin.
Прежде, чем вы начнете читать инструкцию по TWRP Recovery, хочу отметить, что большинство из пользователей предпочитают пользоваться именно этим рекавери из-за того, что но по сравнению с ClockworkMod имеет следующие преимущества:
- Более удобный сенсорный интерфейс.
- Функцию настройки некоторых опций.
- Прозрачный способ выбора того, что мы хотим включить в резервную копию
- Поддержку пакетной установки zip файлов
- Блокировка экрана нажатием на кнопку включения
- Поддержка S-Pen на планшетах и телефонах Galaxy Note
TWRP Recovery – это гораздо более мощная, по сравнению с заводской, утилита (меню) восстановления системы, которая позволяет делать полные резервные копии всей системы устройства, устанавливать на него программное обеспечение, прошивки, ядра и многое другое, что обычно не позволяет делать заводское рекавери. TWRP, устанавливается в специальный системный раздел внутренней памяти планшета или телефона, на место заводского рекавери.
TWRP Recovery может выручить вас в некоторых, казалось бы, безвыходных ситуациях. Даже если ваш планшет или телефон перестал загружаться, во многих случаях с помощью TWRP вы можете восстановить систему из резервной копии, со всеми ее настройками и приложениями.
Вот примерный перечень того, что вы можете делать с помощью TWRP Recovery:
TWRP Recovery — Скачать и установить.

TWRP — (TeamWin Recovery Project) являются золотым стандартом для различных устройств в мире разработки. Что отличает их от других доступных ресурсов восстановления, так это дизайн, интерфейс и множество функций, с которыми он поставляется. TeamWin Project был одним из первых рекавери, который мог похвастаться полностью сенсорным интерфейсом. В нем впервые перепрограммирование ROM и других ZIP-файлов сделали намного проще.
TeamWin Recovery Project — выпущенный еще в 2011 году, должен был конкурировать с Clockworkmod, который был лучшим из доступных на тот момент. За прошедшие годы кастомное рекавери теперь поддерживает более 50 различных OEM-производителей со своевременными обновлениями, как никакое другое.
Было забавно видеть, как маленький проект превратился в нечто настолько мейнстримное, что мы не представляем свою жизнь без его существования. В этой статье кратко обсудим, что на самом деле представляет собой ТВРП, расскажем об основных функциях и, наконец, подробно опишем несколько способов его установки на собственное устройство Android.
По сути, это пользовательский софт с открытым исходным кодом, которое имеет сенсорный экран для установки сторонних приложений или прошивки любого zip-файла. Он дает возможность выполнять на телефоне различные действия, такие как резервное копирование разделов в формате TAR или raw Image, восстанавливать резервные копии из внутреннего хранилища, внешнего SD-накопителя или устройств OTG, устанавливать пользовательские прошивки, стирать разделы, получать доступ к терминалам, корневую оболочку и т. д.
Официальный ТВРП теперь доступен для загрузки для новых моделей Xiaomi, например, Mi 9T Pro. Сборка теперь официальная, это стабильная версия со всеми работающими функциями, включая расшифровку разделов данных, копирование MTP, Nandroid и многое другое. Более того, он поддерживает последнюю версию Android 10.
↑ Основные функции и особенности этого рекавери
Создание резервных копий по своему усмотрению для каждого раздела вашей системы или полную резервную копию Nandroid для гарантии безотказного отката, если что-то пойдет не так.
Изменение яркости. Полезно для тех, кто устанавливает прошивки и днем и ночью.
Каждый вариант в меню TWRP нужно подтвердить свайпом для подтверждения.
![]()
Используя расширенное меню Wipe, вы имеете возможность стереть любые файлы и папки, или выполнить полный сброс настроек к заводским.
Вы сможете монтировать свои разделы и даже использовать флешку, если у вас есть для этого OTG-кабель.
Существует встроенный файловый менеджер
Права доступа можно легко изменить, нажав кнопку «Fix Permissions» на вкладке «Advanced ». Это убирает необходимость полной перезагрузки рекавери.
Есть встроенное окно Terminal Command, упрощающее работу с программой.
Наконец, боковая загрузка ADB одним нажатием позволяет вам предоставить системе доступ к статусу быстрой загрузки и подключением к компьютеру.
Теперь, когда узнали все преимущества и историю этого софта, следуйте инструкциям ниже, как установить рекавери на Xiaomi.
В любой современный Сяоми можно скачать установить twrp recovery, используя шаги, описанные в этой статье. Как и любое другое устройство, Mi 9 пользуется большой популярностью у разработчиков.
↑ Что такое TWRP и зачем оно нужно?
Есть опция установки, которая позволяет прошивать файлы ZIP. Это дает возможность устанавливать моды, ПЗУ и пользовательские ядра, а еще некоторые приложения. Также существует вариант резервного копирования, предназначенный для простого и быстрого создания резервных копий памяти NAND. И также есть опция Mount, которая дает доступ к различным разделам.
В дополнение к вышесказанному предлагается опция Advanced с дополнительными настройками, такими как файловый менеджер, возможность управления модами MultiROM, резервное копирование журнала активности и доступ к командной консоли ADB. И без доступа к этому разделу есть Wipe, чтобы выполнить сброс к заводским настройкам или полный сброс и очистить кеш, и Dalvik, Restore, чтобы восстановить резервную копию NAND, Settings для настройки пользовательского восстановления и Reboot, чтобы перезагрузить смартфон.
- Резервное копирование системы;
- Очистка разделов;
- Восстановление;
- Кроме того, он также служит основой для установку других модификаций прошивок.
↑ Меню TWRP
-
Install – делает прошивку zip-файлов, ромов и изображений.


↑ Подготовка смартфона
Сначала зарядите смартфон до 50% и убедитесь, что он не выключится во время процедуры.
Перед тем как установить twrp recovery, убедитесь, что загрузчик разблокирован! Если вы устанавливаете в первый раз, то скорее всего он у вас заблокирован. Чтобы разблокирвать загрузчик, понядобиться сделать пару действий, который описаны ниже.
-
Включите режим разработчика, выбрав «Настройки», далее «О телефоне» и нажмите 5 раз на номер сборки прошивки (версия MIUI).



Если вы выполнили все вышеуказанные требования, перейдите к самой процедуре установки twrp recovery. В данной инструкции мы рассмотрим установку тврп на смартфон от Xiaomi.
↑ Установка TWRP, пошаговая инструкция
-
Скачиваем файлы для прошивки
, создаем папку на рабочем столе и распаковываем файлы в папку.

![]()
↑ Prestigio
Файлы для Prestigio Muze D5 4G
Отдельные файлы для Root
- Скачиваем и устанавливаем adb_fastboot_platform-tools.
- Скачиваем и разархивируем recovery.rar в папку adb fastboot, в одну и ту же папку.
- Перезагружаем смартфон в режим bootloader удерживая кнопки уменьшения громкости и включения смартфона одновременно.
- Подключаем смартфон к компьютеру.
- Удерживайте Shift и щелкните правой кнопкой мыши, чтобы открыть окно команд.
- Затем в командной строке вводим:
Процесс установки twrp для HTC, ничем не отличается от других! Идем по инструкции!
Файлы для HTC Desire 516 Dual Sim
↑ Huawei
- Разблокируйте загрузчик
- Подсоедините свой аппарат к ПК кабелем USB
- Скопируйте кастомный рекавери в папку, куда установили ADB и Fastboot. Прикрепленный файлtwrp_p10_0.1.img ( 24,37 МБ )
- Запустите командную строку (cmd.exe), напечатайте «adb devices». Должен запуститься сервер adb и высветиться номер подключенного аппарата (серийник)
- Напечатайте «adb reboot-bootloader» и подождите, пока аппарат войдет в режим загрузки (белый экран, внизу надписи красным bootloader unlocked, frp unlocked)
- Напечатайте в командной строке «fastboot flash recovery_ramdisk twrp_p10_0.1.img» — увидите информацию о прошивке и в конце сообщение об успешности операции
- Когда файл прошьется, напечатайте «fastboot reboot», аппарат уёдет в перезагрузку (если в этот момент сразу зажмете обе клавиши громкости — запустится вновь установленный тврп)
Любой из этих TWRP Recovery прошивается дважды по этим адресам, программой SP Flash Tool
0x21F80000 и 0x1C280000
Ни у одного из предоставленных TWRP Recovery не работает сенсорное управление, данная проблема решается подключением USB мышки через USB OTG переходник. Другого TWRP Recovery работающего безупречно не обнаружено и не собрано пока что.
Будьте осторожны, используя данное TWRP Recovery, запрещается делать форматирование Data. Форматирование Data повлечёт за собой полное стирание программного обеспечения смартфона, это объясняется тем что, все разделы программного обеспечения смартфона находятся в разделе Data.
Если вы хотите выполнить сброс до заводских настроек то, для этого в меню Очистка есть свайп который нужно потянуть слева на право для того чтобы сделать классический Wipe, то есть сброс.
Прошиваем, тестируем, сообщаем о результате теста, не ноем и не жалуемся, радуемся тому что есть, ведь у вас раньше и этого не было, а теперь есть и Бэкап делает.
Разделы обязательные к добавлению в Бэкап: nvdata, oeminfo, Full Dump
В случае утраты imei или серийного номера восстанавливаются только разделы nvdata и oeminfo
В случае циклической перезагрузки полученной в ходе собственных экспериментов восстанавливается только раздел Full Dump.
Что такое twrp на андроиде
TWRP, как отдельная операционная система. Структура, принципы работы, основные составляющие.
Устройство или ОС, прошивка: Все платформы.
Сразу хочу напомнить, что тема создавалась для людей думающих и способных подвергнуть сомнению информацию, которая тут изложена. Учесть особенности тысяч аппаратов и, уж тем более, расписать это для каждого из них я не в состоянии.
Обращаясь за помощью обязательно приложите recovery.log. Как его получить можно узнать здесь
Сообщение отредактировал derak1129 — 05.08.20, 09:15
TWRP, он же «кастомный рекавери», является заменой стандартному средству восстановления, идущему, как правило, в составе заводской прошивки аппарата. Основной его функцией изначально было создание и восстановление бэкапа существующей операционной системы как полностью, так и по отдельным разделам. Также была реализована возможность установки неподписанных пакетов обновления (в народе «патчи»), что дало возможность любому пользователю создавать свои пакеты и, таким образом, вносить практически любые правки в операционную систему.
По структуре — это всё тот же boot, но самостоятельный, независимый* от наличия, версии и состояния установленной ОС. Т.е. имеется своё ядро, а связующий бинарник «init» в составе TWRP не пытается загрузить Android, находящийся в системном разделе, а грузит собственную мини-ОС. В ней находится полный набор необходимых для запуска файлов и инструкций, которые тоже можно редактировать, удалять, добавлять и обновлять, меняя тем самым функционал сборки. Ничего не напомнило?
Вот именно в таком ключе и пойдёт речь о TWRP в этой теме! Это не только удобный инструмент! Это — операционная система, которую мы будем изучать и настраивать под свои нужды.
Сообщение отредактировал Идите Лесом — 04.09.19, 16:59
С тем, что кастомный рекавери является отдельной и независимой ОС, определились? Хорошо, идём дальше! Начинают свой запуск оба сравниваемых объекта совершенно одинаково:
— Загрузчик (который состоит из нескольких компонент, которые разбросанны по маленьким разделам памяти и поочерёдно подгружаются) будит устройство.
— Проводятся первоначальные тесты аппаратной составляющей устройства и проверка целостности частей самого загрузчика.
— Если всё нормально — запускает ядро*, имеющее в составе набор низкоуровневых драйверов для нашего девайса.
— Ядро проводит свои проверки и подгружает первый и самый приоритетный сервис-бинарник — init. Именно он заведует обработкой и выполнением сценариев запуска**.
А вот то, что будет происходить далее уже имеет отличия:
init раздела boot, следуя собственным и приложенным в подгружаемых *.rc файлах инструкциям, монтирует остальные разделы, необходимые для запуска Android OS (/system, /vendor, /data, /modem и т.д.) и запускает сервисы и службы, находящиеся, в основном, в этих разделах. Далее надевает на Linux «шкурку» java и отдает в таком виде под управление пользователю.
init раздела recovery, следуя собственным и приложенным в подгружаемых *.rc файлах инструкциям, проверяет состояние «интересующих» его разделов, а сервисы и служби запускает лишь те, которые сам и содержит. Далее надевает на Linux «шкурку», подобную веб интерфейсу***.
Что имеем в итоге? Высокую степень взаимозаменяемости консольных утилит, таблиц файловых систем, конструкций скриптов и т.д. Функции, созданные для обработки из-под OS Android после небольших правок можно выполнять, находясь в кастомном рекавери и наоборот. Примерно то, что проделывают в теме Инструкции по редактированию системных ресурсов для Android OS мы будем проворачивать здесь с TWRP (только там правится framework, SystemUI.apk, Settings.apk и т.д., мы же будем вносить изменения в «twres», «sbin» и «etc»), добиваться максимально полного контроля над кастомным рекавери, устанавливать/заменять/обновлять/удалять ПО, входящее в его состав.
*будет запускаться ядро из раздела boot или из раздела recovery зависит от сигнала загрузчику, который пользователь может подать из запущенной операционной системы или нажатием соответствующих клавиш при старте загрузчика.
Сообщение отредактировал Идите Лесом — 05.09.19, 22:49
Кастомный рекавери, как уже упоминалось ранее, это «доработанная» версия стандартного (идущего «из коробки»). Имеет больше возможностей, в меньшей мере ограничивает пользователя и может быть более тонко настроено (зачастую стоковое вообще не имеет настроек).
Дак как же нам заполучить это «чудо» для нашего девайса? В основном используется три способа*:
1. Создание из исходников. Если производитель Вашего устройства был так любезен, что не поленился выложить в открытый доступ исходный код программного обеспечения, которое там используется, то можно «наложить» на него исходники кастомного рекавери (вот с этим то проблем нету). Вот мы и получаем свой, родной TWRP, CWM и т.д. Собранное таким образом кастомное рекавери может получить статус официального, а девайс, для которого оно сделано, может получить статус официально поддерживаемого проэктом.
2. Портирование. Вам не так повезло? Производитель не удосужился опубликовать исходный код ПО к своему девайсу? Не будем отчаиваться — выход есть! Портирование!
Нам понадобится аппарат, который максимально подобен нашему «основой» («материнка», board или как сейчас «по-научному»), но имеет собранный и рабочий кастомный рекавери. При нынешнем разнообразии рынка устройств под управлением Android OS — это вообще не проблема! Теперь разберём стоковый и кастомный рекавери (который от чужого аппарата), заменив ядро второго упомянутого ядром от нашего девайса. Собираем обратно. Всё! В основном, если был правильно подобран «донор», этого достаточно для успешного запуска. Пользоваться в таком виде не получится, но отладить пару погрешностей — это не компилировать «с нуля», не имея исходников. В чём основной минус такого метода? Отсутствие официальной поддержки! Т.е. нужно следить за изменением в структуре прошивок и самолично вносить соответствующие изменения в свой «порт».
3. Попросить сделать Вам кастомное рекавери. Ссылка на «Стол заказов» есть в шапке, но так Вы точно пропустите всё веселье!
*способы описываю в общих чертах, вскользь и исключительно для общего понимания. Детально и со всеми подробностями процессы описаны в профильных темах, ссылки на которые есть в шапке этой темы. Мы же будем использовать лишь некоторые этапы упомянутых выше действий в совершенно других целях.
Сообщение отредактировал Идите Лесом — 30.08.19, 02:23
файлы «*.so» — это библиотеки функций, необходимые некоторым исполняемым файлам. Туда вынесена часть кода бинарника и «подтягивается» она по запросу. Практически точный аналог «*.dll» файлов в ОС Windows. Не составит особого труда догадаться, что «libaosprecovery.so», к примеру, является вспомогательным файлом бинарника «recovery». В дальнейшем не забывайте об этом! Если добавляете в свою сборку TWRP новую утилиту или обновляеете старую, то делать это стоит вместе со всеми связанными библиотеками «.*so».
busybox — «BusyBox — набор UNIX-утилит командной строки, используемой в качестве основного интерфейса во встраиваемых операционных системах. Преимуществами этого приложения являются малый размер и низкие требования к аппаратуре. Оно представляет собой единый файл. Разработка BusyBox была начата в 1996 году Брюсом Перенсом.» Википедия. Попросту это сборник бинарников, скриптов и программ, которые запакованы в один файл (обычно /system/xbin/busybox) и вызываются при обращении к этому файлу + аргумент-название необходимого бинарника (busybox sed . ) или симлинками. У каждого автора сборки свой набор «вшитых» приложений. Выход новой версии означает, в большинстве случаев, изменение автором состава этой самой сборки и/или обновление некоторых содержащихся в ней «модулей».
toybox — подобие busybox. Отличается набором апплетов.
toolbox — подобие busybox. Отличается набором апплетов.
charger — отвечает за процесс заряда АКБ, когда аппарат загружен в TWRP. Это уже можно было понять по названию файла. Решая всё тот же вопрос уменьшения размера сборки я заменил его на более старый, «весом» в 850 кб (в последних TWRP оригинальный бинарник весит 1,7+ мб). Девайс как заряжался, так и заряжается.
adbd — отвечает за обмен данными через USB разъём. Удаление делает невозможным подключение к ПК через adb интерфейс. Тоже заменил в сборке версию в 1,6 мб более старой на 350 кб. Разницы не заметил.
recovery — это, с вашего позволения, и есть TWRP. Здесь всё: функции, конструкции, начальные переменные, инструкции по работе с темами, сервисами, утилитами и т.д. и т.п.. Этоn файл и несколько дополнительных (его либы, linker, binder, crypto. ) — «движок» TWRP. При правке очередной версии не забудьде об этом и оставьте эти файлы на своём месте.
практически всё остальное — стандартные UNIX утилиты, которые скомпилированы для Android OS. Не удивляйтесь, если узнать о их функционале и использовании Вас будут «посылать» в поисковик.
twrpapp.apk — вот именно это нам постоянно предлагают установить. И именно это будет «занесено» в систему при малейшей неосторожности пользователя.
5. tmp — точка монтирования временного хранилища файлов. Использует оперативную память. Не удивляйтесь, если процесс, к примеру, распаковки туда файла объёмом >= оперативной памяти девайса, закончится с ошибкой.
5. twres — весь пользовательский интерфейс — здесь! Шрифты, графика, языковые файлы, «xml скелет» для объединения всего этого в то, чем мы привыкли пользоваться.
6. vendor — драйвера. Без комментариев.
*Набор файлов, приведённый выше, крайне примерный! Следует понимать и учитывать особенности архитектур, марок и моделей аппаратов, к которым будете пытаться применять данные наблюдения.
**В сборках TWRP 3.3.1-1 для некоторых устройств уже используется именно mksh. OrangeFOX 10+ использует bash.
Сообщение отредактировал Идите Лесом — 04.09.19, 19:56
<?xml version=»1.0″?>
<recovery>
<details>
<resolution width=»1080″ height=»1920″/>
<author>TeamWin</author>
<title>TWRP</title>
<description>splash screen</description>
<themeversion>3</themeversion>
</details>
<resources>
<font name=»font_l» filename=»RobotoCondensed-Regular.ttf» size=»52″/>
<image name=»splashlogo» filename=»splashlogo» retainaspect=»1″/>
<image name=»splashteamwin» filename=»splashteamwin» retainaspect=»1″/>
</resources>
<variables>
<variable name=»screen_width» value=»1080″/>
<variable name=»screen_height» value=»1920″/>
<variable name=»background_color» value=»#222222″/>
<variable name=»header_color» value=»#555555″/>
<variable name=»accent_color» value=»#0090CA»/>
</variables>
<pages>
<page name=»splash»>
<background color=»%background_color%»/>
<fill color=»%header_color%»>
<placement x=»0″ y=»0″ w=»%screen_width%» h=»456″/>
</fill>
<image>
<image resource=»splashlogo»/>
<placement x=»540″ y=»456″ placement=»4″/>
</image>
<image>
<image resource=»splashteamwin»/>
<placement x=»540″ y=»1540″ placement=»4″/>
</image>
<text color=»%header_color%»>
<font resource=»font_l»/>
<placement x=»540″ y=»1590″ placement=»5″/>
<text>Recovery Project %tw_version%</text>
</text>
</page>
</pages>
</recovery>
<pages>
<page name=»splash»>
<background color=»%background_color%»/>
<fill color=»%header_color%»>
<placement x=»0″ y=»0″ w=»%screen_width%» h=»456″/>
</fill>
<image>
<image resource=»splashlogo»/>
<placement x=»540″ y=»456″ placement=»4″/>
</image>
<image>
<image resource=»splashteamwin»/>
<placement x=»540″ y=»1540″ placement=»4″/>
</image>
<text color=»%header_color%»>
<font resource=»font_l»/>
<placement x=»540″ y=»1590″ placement=»5″/>
<text>Recovery Project %tw_version%</text>
</text>
</page>
</pages>
показываем текст Recovery Project %tw_version% (значение переменной %tw_version% нам предоставляет бинарник recovery), окрашенный в %header_color% (#555555), используя шрифт и его размер font_l (filename=»RobotoCondensed-Regular.ttf» size=»52″) по координатам в пикселах x=»540″ y=»1590″ поверх всех-привсех объектов placement=»5″.
Пока мы смотрели на splash происходило примерно следующее:
TWRP закончил выполнять последние приготовления и проверки, на основе которых присвоил значения множеству переменных. Теперь загрузился второй (это последний принудительно подгруженный xml файл — все остальные вызываются из него) кусок темы «ui.xml». Уже в нём добавлен импорт «portrait.xml» вот таким образом
<resources>
<font name=»font_l» filename=»RobotoCondensed-Regular.ttf» size=»54″/>
<font name=»font_m» filename=»RobotoCondensed-Regular.ttf» size=»42″/>
<font name=»font_s» filename=»RobotoCondensed-Regular.ttf» size=»36″/>
<font name=»fixed» filename=»DroidSansMono.ttf» size=»30″/>
<font name=»keylabel» filename=»RobotoCondensed-Regular.ttf» size=»64″/>
<font name=»keylabel-small» filename=»RobotoCondensed-Regular.ttf» size=»46″/>
<font name=»keylabel-longpress» filename=»RobotoCondensed-Regular.ttf» size=»32″/>
<image name=»logo» filename=»logo» retainaspect=»1″/>
<image name=»main_button» filename=»main_button»/>
<image name=»main_button_half_height» filename=»main_button_half_height»/>
<image name=»main_button_half_height_full_width» filename=»main_button_half_height_full_width»/>
<image name=»fab_selectfolder» filename=»fab_selectfolder» retainaspect=»1″/>
<image name=»tab_3″ filename=»tab_3″/>
<image name=»tab_4″ filename=»tab_4″/>
<image name=»file» filename=»file» retainaspect=»1″/>
<image name=»folder» filename=»folder» retainaspect=»1″/>
<image name=»unlock_icon» filename=»unlock_icon» retainaspect=»1″/>
<image name=»home» filename=»home» retainaspect=»1″/>
<image name=»back» filename=»back» retainaspect=»1″/>
<image name=»console» filename=»console» retainaspect=»1″/>
<image name=»kb_hide» filename=»kb_hide» retainaspect=»1″/>
<image name=»kb_show» filename=»kb_show» retainaspect=»1″/>
<image name=»checkbox_false» filename=»checkbox_false» retainaspect=»1″/>
<image name=»checkbox_true» filename=»checkbox_true» retainaspect=»1″/>
<image name=»radio_false» filename=»radio_false» retainaspect=»1″/>
<image name=»radio_true» filename=»radio_true» retainaspect=»1″/>
<image name=»sort_asc» filename=»sort_asc»/>
<image name=»sort_desc» filename=»sort_desc»/>
<image name=»sort_empty» filename=»sort_empty»/>
<animation name=»progress» filename=»indeterminate»/>
<image name=»progress_empty» filename=»progress_empty»/>
<image name=»progress_full» filename=»progress_fill»/>
<image name=»slider» filename=»slider»/>
<image name=»slider_used» filename=»slider_used»/>
<image name=»slider_touch» filename=»slider_touch»/>
<image name=»handle» filename=»handle»/>
<image name=»cursor» filename=»cursor» retainaspect=»1″/>
<image name=»tab_general» filename=»tab_general» retainaspect=»1″/>
<image name=»tab_timezone» filename=»tab_timezone» retainaspect=»1″/>
<image name=»tab_display» filename=»tab_display» retainaspect=»1″/>
<image name=»tab_vibration» filename=»tab_vibration» retainaspect=»1″/>
<image name=»tab_language» filename=»tab_language» retainaspect=»1″/>
<image name=»backspace» filename=»backspace» retainaspect=»1″/>
<image name=»enter» filename=»enter» retainaspect=»1″/>
<image name=»shift» filename=»shift» retainaspect=»1″/>
<image name=»shift_fill» filename=»shift_fill» retainaspect=»1″/>
<image name=»space» filename=»space» retainaspect=»1″/>
<image name=»kb_arrow_left» filename=»kb_arrow_left» retainaspect=»1″/>
<image name=»kb_arrow_right» filename=»kb_arrow_right» retainaspect=»1″/>
<image name=»kb_arrow_up» filename=»kb_arrow_up» retainaspect=»1″/>
<image name=»kb_arrow_down» filename=»kb_arrow_down» retainaspect=»1″/>
</resources>
<variables>
<variable name=»tw_samsung_navbar» value=»0″ persist=»1″/>
<variable name=»tw_hide_kb» value=»0″/>
<variable name=»screen_width» value=»1080″/>
<variable name=»screen_height» value=»1920″/>
<variable name=»status_height» value=»72″/>
<variable name=»header_height» value=»256″/>
<variable name=»navbar_height» value=»130″/>
<variable name=»content_width» value=»1008″/>
<variable name=»content_overlay_width» value=»936″/>
<variable name=»dialog_height» value=»704″/>
<variable name=»back_button_x» value=»240″/>
<variable name=»console_button_x» value=»840″/>
<variable name=»indent» value=»36″/>
<variable name=»col1_x_left» value=»72″/>
<variable name=»col1_x_header» value=»184″/>
<variable name=»center_x» value=»540″/>
<variable name=»col1_x_right» value=»576″/>
<variable name=»indent_right» value=»1044″/>
<variable name=»tab_height» value=»96″/>
<variable name=»tab_indicator_height» value=»6″/>
<variable name=»tab_y» value=»304″/>
<variable name=»tab3_width» value=»360″/>
<variable name=»tab4_width» value=»270″/>
<variable name=»tab5_width» value=»216″/>
<variable name=»tab3_col2_x» value=»360″/>
<variable name=»tab3_col3_x» value=»720″/>
<variable name=»tab4_col2_x» value=»270″/>
<variable name=»tab4_col4_x» value=»810″/>
<variable name=»tab5_col2_x» value=»216″/>
<variable name=»tab5_col3_x» value=»432″/>
<variable name=»tab5_col4_x» value=»648″/>
<variable name=»tab5_col5_x» value=»864″/>
<variable name=»tab5_centered_col1_x» value=»108″/>
<variable name=»tab5_centered_col2_x» value=»324″/>
<variable name=»tab5_centered_col4_x» value=»756″/>
<variable name=»tab5_centered_col5_x» value=»972″/>
<variable name=»btn3_col2_x» value=»384″/>
<variable name=»btn3_col3_x» value=»732″/>
<variable name=»btn4_col2_x» value=»297″/>
<variable name=»btn4_col3_x» value=»558″/>
<variable name=»btn4_col4_x» value=»819″/>
<variable name=»row1_header_y» value=»4″/>
<variable name=»row2_header_y» value=»72″/>
<variable name=»row3_header_y» value=»90″/>
<variable name=»row4_header_y» value=»168″/>
<variable name=»row1_y» value=»256″/>
<variable name=»row1a_y» value=»288″/>
<variable name=»row2_y» value=»320″/>
<variable name=»row2a_y» value=»352″/>
<variable name=»row_tab_y» value=»346″/>
<variable name=»row2_input_y» value=»381″/>
<variable name=»row3_y» value=»384″/>
<variable name=»row3_input_y» value=»413″/>
<variable name=»row3a_y» value=»416″/>
<variable name=»row4_y» value=»448″/>
<variable name=»row4_input_y» value=»477″/>
<variable name=»row4a_y» value=»480″/>
<variable name=»row5_y» value=»512″/>
<variable name=»row5a_y» value=»544″/>
<variable name=»row6_y» value=»576″/>
<variable name=»row6a_y» value=»608″/>
<variable name=»row7_y» value=»640″/>
<variable name=»row7a_y» value=»672″/>
<variable name=»row8_y» value=»704″/>
<variable name=»row8a_y» value=»736″/>
<variable name=»row9_y» value=»768″/>
<variable name=»row9a_y» value=»800″/>
<variable name=»row10_y» value=»832″/>
<variable name=»row10a_y» value=»864″/>
<variable name=»row11_y» value=»896″/>
<variable name=»row11a_y» value=»928″/>
<variable name=»row12_y» value=»960″/>
<variable name=»row12a_y» value=»992″/>
<variable name=»row13_y» value=»1024″/>
<variable name=»row13a_y» value=»1056″/>
<variable name=»row14_y» value=»1088″/>
<variable name=»row14a_y» value=»1120″/>
<variable name=»row15_y» value=»1152″/>
<variable name=»row15a_y» value=»1184″/>
<variable name=»row16_y» value=»1216″/>
<variable name=»row16a_y» value=»1248″/>
<variable name=»row17_y» value=»1280″/>
<variable name=»row17a_y» value=»1312″/>
<variable name=»row18_y» value=»1344″/>
<variable name=»row18a_y» value=»1376″/>
<variable name=»row19_y» value=»1408″/>
<variable name=»row19a_y» value=»1440″/>
<variable name=»row20_y» value=»1472″/>
<variable name=»row20a_y» value=»1504″/>
<variable name=»row21_y» value=»1536″/>
<variable name=»row21a_y» value=»1568″/>
<variable name=»row22_y» value=»1600″/>
<variable name=»row22a_y» value=»1632″/>
<variable name=»row23_y» value=»1664″/>
<variable name=»row23a_y» value=»1696″/>
<variable name=»row24_y» value=»1728″/>
<variable name=»row24a_y» value=»1760″/>
<variable name=»row25_y» value=»1792″/>
<variable name=»navbar_y» value=»1792″/>
<variable name=»navbar_btn_y» value=»1856″/>
<variable name=»keyboard_y» value=»1149″/>
<variable name=»keyboard_terminal_y» value=»1053″/>
<variable name=»background_color» value=»#1A1A1A»/>
<variable name=»accent_color» value=»#0090CA»/>
<variable name=»accent_color_semitransparent» value=»#0090CA30″/>
<variable name=»text_color» value=»#EEEEEE»/>
<variable name=»text_button_color» value=»#EEEEEE»/>
<variable name=»text_success_color» value=»#76FF03″/>
<variable name=»text_fail_color» value=»#FF0101″/>
<variable name=»highlight_color» value=»#1A1A1A80″/>
<variable name=»caps_highlight_color» value=»#22222280″/>
<variable name=»transparent» value=»#00000000″/>
<variable name=»semi_transparent» value=»#00000099″/>
<variable name=»warning» value=»#F8F8A0″/>
<variable name=»error» value=»#FF0101″/>
<variable name=»highlight» value=»#0090CA»/>
<variable name=»fileselector_linecolor» value=»#555555″/>
<variable name=»fileselector_highlight_color» value=»#555555″/>
<variable name=»fileselector_separatorheight» value=»2″/>
<variable name=»fileselector_spacing» value=»0″/>
<variable name=»fileselector_install_height» value=»1152″/>
<variable name=»fileselector_filemanager_height» value=»1376″/>
<variable name=»partitionlist_spacing» value=»0″/>
<variable name=»partitionlist_storage_height» value=»544″/>
<variable name=»partitionlist_flashimage_height» value=»544″/>
<variable name=»partitionlist_wipe_height» value=»1088″/>
<variable name=»partitionlist_mount_height» value=»832″/>
<variable name=»partitionlist_backup_height» value=»768″/>
<variable name=»listbox_timezone_height» value=»756″/>
<variable name=»listbox_settings_height» value=»960″/>
<variable name=»listbox_advanced_height» value=»700″/>
<variable name=»fastscroll_w» value=»24″/>
<variable name=»fastscroll_linew» value=»2″/>
<variable name=»fastscroll_rectw» value=»24″/>
<variable name=»fastscroll_recth» value=»108″/>
<variable name=»slidervalue_lineh» value=»3″/>
<variable name=»slidervalue_padding» value=»0″/>
<variable name=»slidervalue_sliderw» value=»72″/>
<variable name=»slidervalue_sliderh» value=»108″/>
<variable name=»slideout_height» value=»1686″/>
<variable name=»slideout_bg_height» value=»1720″/>
<variable name=»input_height» value=»64″/>
<variable name=»input_line_width» value=»3″/>
<variable name=»console_height» value=»960″/>
<variable name=»console_terminal_height» value=»950″/>
<variable name=»dialog_button_x» value=»696″/>
<variable name=»pattern_x» value=»126″/>
<variable name=»pattern_dot_dia» value=»32″/>
<variable name=»pattern_line_w» value=»12″/>
<variable name=»pattern_size» value=»828″/>
</variables>
<templates>
<template name=»page»>
<background color=»%background_color%»/>
<fill color=»%accent_color%»>
<placement x=»0″ y=»0″ w=»%screen_width%» h=»%header_height%»/>
</fill>
<button>
<condition var1=»tw_busy» var2=»0″/>
<placement x=»0″ y=»0″/>
<image resource=»logo»/>
<action function=»key»>home</action>
</button>
<fill color=»#00000030″>
<condition var1=»tw_simulate_actions» var2=»0″/>
<placement x=»0″ y=»0″ w=»%screen_width%» h=»%status_height%»/>
</fill>
<fill color=»%text_fail_color%»>
<condition var1=»tw_simulate_actions» var2=»1″/>
<placement x=»0″ y=»0″ w=»%screen_width%» h=»%status_height%»/>
</fill>
<text color=»%text_color%»>
<condition var1=»tw_no_cpu_temp» var2=»1″/>
<font resource=»font_m»/>
<placement x=»%indent%» y=»%row1_header_y%»/>
<text>%tw_version%</text>
</text>
<text color=»%text_color%»>
<font resource=»font_m»/>
<placement x=»%center_x%» y=»%row1_header_y%» placement=»5″/>
<text>%tw_time%</text>
</text>
<text color=»%text_color%»>
<conditions>
<condition var1=»tw_no_battery_percent» var2=»0″/>
<condition var1=»tw_battery» op=»>» var2=»0″/>
<condition var1=»tw_battery» op=»<» var2=»101″/>
</conditions>
<font resource=»font_m»/>
<placement x=»%indent_right%» y=»%row1_header_y%» placement=»1″/>
<text><@battery_pct=Battery: %tw_battery%></text>
</text>
<fill color=»#000000″>
<condition var1=»tw_busy» var2=»0″/>
<placement x=»0″ y=»%navbar_y%» w=»%screen_width%» h=»%navbar_height%»/>
</fill>
<button>
<condition var1=»tw_samsung_navbar» op=»!=» var2=»1″/>
<placement x=»%back_button_x%» y=»%navbar_btn_y%» placement=»4″/>
<image resource=»back»/>
<condition var1=»tw_busy» var2=»0″/>
<action function=»key»>back</action>
</button>
<button>
<condition var1=»tw_samsung_navbar» op=»=» var2=»1″/>
<placement x=»%back_button_x%» y=»%navbar_btn_y%» placement=»4″/>
<image resource=»console»/>
<condition var1=»tw_busy» var2=»0″/>
<action function=»overlay»>slideout</action>
</button>
<button>
<placement x=»%center_x%» y=»%navbar_btn_y%» placement=»4″/>
<image resource=»home»/>
<condition var1=»tw_busy» var2=»0″/>
<action function=»key»>home</action>
</button>
<button>
<condition var1=»tw_samsung_navbar» op=»!=» var2=»1″/>
<placement x=»%console_button_x%» y=»%navbar_btn_y%» placement=»4″/>
<image resource=»console»/>
<condition var1=»tw_busy» var2=»0″/>
<action function=»overlay»>slideout</action>
</button>
<button>
<condition var1=»tw_samsung_navbar» op=»=» var2=»1″/>
<placement x=»%console_button_x%» y=»%navbar_btn_y%» placement=»4″/>
<image resource=»back»/>
<condition var1=»tw_busy» var2=»0″/>
<action function=»key»>back</action>
</button>
<action>
<touch key=»power»/>
<action function=»togglebacklight»/>
</action>
<template name=»progress_bar»>
<progressbar>
<placement x=»%indent%» y=»%row17a_y%»/>
<resource empty=»progress_empty» full=»progress_full»/>
<data name=»ui_progress»/>
</progressbar>
<animation>
<placement x=»%indent%» y=»%row17a_y%»/>
<resource name=»progress»/>
<speed fps=»24″ render=»2″/>
<loop frame=»1″/>
</animation>
</template>
Сообщение отредактировал Идите Лесом — 31.08.19, 01:12
<button style=»button_quarter_width»>
<placement x=»%indent%» y=»%row16a_y%»/>
<text><@tz_offset_none=None></text>
<action function=»set»>tw_time_zone_guioffset=0</action>
</button>
<button style=»button_quarter_width»>
<placement x=»%btn4_col2_x%» y=»%row16a_y%»/>
<text><@tz_offset_15=15></text>
<action function=»set»>tw_time_zone_guioffset=15</action>
</button>
<button style=»button_quarter_width»>
<placement x=»%btn4_col3_x%» y=»%row16a_y%»/>
<text><@tz_offset_30=30></text>
<action function=»set»>tw_time_zone_guioffset=30</action>
</button>
<button style=»button_quarter_width»>
<placement x=»%btn4_col4_x%» y=»%row16a_y%»/>
<text><@tz_offset_45=45></text>
<action function=»set»>tw_time_zone_guioffset=45</action>
</button>
<checkbox>
<placement x=»%indent%» y=»%row18a_y%»/>
<font resource=»font_m» color=»%text_color%»/>
<text><@use_dst_chk=Use daylight savings time (DST)></text>
<data variable=»tw_time_zone_guidst»/>
<image checked=»checkbox_true» unchecked=»checkbox_false»/>
</checkbox>
<slidervalue>
<placement x=»indent» y=»%row15a_y%» w=»%content_width%»/>
<data variable=»tw_time_zone_guioffset» min=»0″ max=»59″/>
</slidervalue>
<checkbox>
<placement x=»%indent%» y=»%row19_y%»/>
<font resource=»font_m» color=»%text_color%»/>
<text><@use_dst_chk=Use daylight savings time (DST)></text>
<data variable=»tw_time_zone_guidst»/>
<image checked=»checkbox_true» unchecked=»checkbox_false»/>
</checkbox>



<button>
<condition var1=»tw_busy» var2=»0″/>
<placement x=»0″ y=»0″/>
<image resource=»logo»/>
<action function=»key»>home</action>
</button>
<button>
<condition var1=»tw_busy» var2=»0″/>
<placement x=»0″ y=»0″/>
<image resource=»logo»/>
<action function=»reboot»/>
</button>
<page name=»main2″>
<template name=»page»/>
<text style=»text_m»>
<condition var1=»tw_no_cpu_temp» var2=»0″/>
<placement x=»%col1_x_header%» y=»%row4_header_y%»/>
<text>%tw_version%</text>
</text>
<button style=»main_button»>
<placement x=»%indent%» y=»%row2a_y%»/>
<text><@install_btn=Install></text>
<actions>
<action function=»queueclear»/>
<action function=»set»>tw_selectimage=0</action>
<action function=»page»>install</action>
</actions>
</button>
<page name=»my_own_page_1″>
<template name=»page»/>
<text style=»text_m»>
<condition var1=»tw_no_cpu_temp» var2=»0″/>
<placement x=»%col1_x_header%» y=»%row4_header_y%»/>
<text>%tw_version%</text>
</text>
<button style=»main_button»>
<placement x=»%indent%» y=»%row2a_y%»/>
<text><@install_btn=Install></text>
<actions>
<action function=»queueclear»/>
<action function=»set»>tw_selectimage=0</action>
<action function=»page»>install</action>
</actions>
</button>
] <page name=»my_own_page_1″>
<template name=»page»/>
<text style=»text_m»>
<condition var1=»tw_no_cpu_temp» var2=»0″/>
<placement x=»%col1_x_header%» y=»%row4_header_y%»/>
<text>%tw_version%</text>
</text>
<button style=»main_button»>
<placement x=»%indent%» y=»%row2a_y%»/>
<text>Busybox ins.</text>
<action function=»cmd»>b=»busybox»
$ umount /system 2>dev/null
$ mount -o rw /system 2>dev/null
for F in $($ find /system -type d -iname «xbin»); do
$ cp -f /sbin/$b $
chown 0:0 «$
chmod 755 «$
$ —install -s $
$ umount /system 2>dev/null
</action>
</button>

Сообщение отредактировал Идите Лесом — 04.09.19, 02:32
Пришло время заглянуть внутрь этой операционной системы, увидеть её состовляющие и узнать «кто за что здесь отвечает». Здесь и далее в теме все примеры распаковки/запаковки образов boot и recovery будут приведены с использованием Android Image Kitchen (в дальнейшем просто «кухня», ссылка на неё в шапке) от osm0sis в операционной системе Windows. Т.е. не стоит воспринимать процесс дословно, если Вы пользуетесь другим средством или набором средств.
Для начала убедимся, что все умеют работать с кухней:
Установив/распаковав её в любом удобном для нас месте (для меня это «Рабочий стол»), заглянем внутрь. Здесь мы видим текстовый файл с перечнем всего, что было использовано при создании, одну (пока одну) папку, в которой содержится необходимое утилите ПО, и три «bat-файла» (далее просто «батники»): «cleanup.bat», «repackimg.bat» и «unpackimg.bat». Что они делают:
— unpackimg.bat — распаковует лежащий рядом с ним файл, имеющий расширение «.img», и имя, отличное от «new-image.img» (так кухня называет собранные в ней образы и, поэтому, не считает необходимым продолжать работу с ними).
— repackimg.bat — перепаковует распакованный ранее образ, учитывая правки пользователя. Файл на выходе будет иметь название «new-image.img».
— cleanup.bat — удаляет из кухни все результаты СВОЕЙ работы. Сюда входят папки «ramdisk» и «split_img», включая их содержимое, и файл «new-image.img». Все остальные файли остаются на месте.
Начинаем изучение содержимого TWRP. Возьмём интересующий нас образ и распакуем его. Увидим, что появилось две новые папки: «ramdisk» и «split_img».
Для упрощения и согласования информации, изложенной далее, предположим, что образ имеет название «twrp.img». Коротко о содержимом «split_img»:
Здесь расположены примерно* следующие файлы:
twrp.img-base
twrp.img-board
twrp.img-cmdline
twrp.img-hash
twrp.img-headerversion
twrp.img-imgtype
twrp.img-kerneloff
twrp.img-oslevel
twrp.img-osversion
twrp.img-pagesize
twrp.img-ramdisk.cpio.gz **
twrp.img-ramdiskcomp
twrp.img-ramdiskoff
twrp.img-secondoff
twrp.img-tagsoff
twrp.img-zImage
Для чего эти файлы:
-base — сообщает базовый offset (пример содержимого «80000000»).
-board — сообщает целевую платформу (пример содержимого «msm8937»), может быть пустым.
-cmdline — сообщает некоторые команды запуска ядра: платформу (androidboot.hardware=), состояние SElinux, которое будет использовано при запуске (androidboot.selinux=), тип сборки (buildvariant=) и т.д..
-hash — сообщает метод хеширования (пример содержимого «sha1»).
-headerversion — сообщает версию заголовка (пример содержимого «0»).
-imgtype — сообщает формат образа (пример содержимого «AOSP»).
-kerneloff — сообщает offset ядра (пример содержимого «00008000»).
-oslevel — сообщает Security Patch Level (пример содержимого «2019-07»).
-osversion — сообщает целевую версию Android OS (пример содержимого «9.0.0»).
-pagesize — сообщает размер одного блока (пример содержимого «4096»).
-ramdisk.cpio.gz — содержит ramdisk распакованного образа в сжатом виде.
-ramdiskcomp — сообщает ифнормацию о формате, в котором упакован ramdisk*** (пример содержимого «gzip»).
-ramdiskoff — сообщает offset содержащегося ramdisk (пример содержимого «01000000»).
-secondoff — сообщает offset (чего конкретно не разобрался, пример содержимого «00f00000»).
-tagsoff — сообщает offset atags (пример содержимого «00000100»).
-zImage — ядро****.
*Т.к. структура образа boot/recovery вариируется в зависимости от марки, модели, платформы, взглядов на жизнь производителя и текущего положения галактик в отношении «синего карлика», то нужно считать пример обобщённым и учитывать возможные отличия.
**twrp.img-ramdisk.cpio.gz — это пример распакованной части образа, содержащей «ramdisk». Почему пример? Потому, что это архив в чистом виде. Расширение «.gz» будет присутствовать только в том случае, если «ramdisk» сжат в формате gzip. Но могут быть и другие! Неполный перечень в виде «расширение — формат»:
gz — gzip
lzo — lzop
xz — xz
lzma — lzma (иногда тоже xz)
bz2 — bzip2
lz4 — lz4
***Это очень важный момент и мы будем активно и охотно его использовать. Для того, чтобы собранный нами TWRP помещался в раздел /recovery телефона, он должен подходить по размеру. Но мы ведь хотим «запихнуть» в нашу сборку всего-привсего и много-примного! Чтобы уместить всё «добро» будем плотнее сжимать ramdisk, изменяя формат сжатия. gzip не сильно нам поможет сделать сборку компактной — лучше использовать lzma. Вот для этого изменяем в файле «twrp.img-ramdiskcomp» содержащееся там «gzip» (к примеру) на «lzma». Всё! Значение заменяем только раз. С этого момента и далее наша сборка будет сжиматься гораздо плотнее. Но! Для использования этого способа сжатия оно должно поддерживаться ядром!
****TWRP способно использовать для работы практически любое ядро, собранное для Вашего устройства. Заменить его на более актуальное иногда полезно, а иногда и просто необходимо! Для поддержки упомянутого ранее сжатия ramdick в lzma может потребоваться взять zImage от boot из свежей кастомной прошивки или из сборки TWRP, в которой поддержка уже реализована. Также версия ядра влияет на то, способно ли будет наше кастомное рекавери расшифрововать для работы раздел /data. Запомните этот момент!
/.android/adbkey.pub в /adb_keys чтобы не отключать ro.secure.
Это ключик для adb. Помогает при unauthorized состоянии. индивидуален для каждого юзера каждого компа на котором запускается adb. Наверняка все видели запрос подтверждения доступа по adb после вайпа или при подключении нового компа к девайсу. Вот в этот момент на девайсе сохраняется публичный ключ adb. Сохраняется он в файл /data/misc/adb/adb_keys (напоминает
/.ssh/authorized_keys, только без наворотов — ключ и всё). При портировании прошивок эта проблема (device unauthorized) бывает, если порт в бутлупе и не догружается до «гуёв» (пользовательского интерфейса (рабочего стола)). Ещё можно упомянуть про то, что adbd из user-прошивок не имеет возможности переключения в root-режим через adb root. Для работы этой фичи надо заменять adbd (впрочем, это уже скорее про boot.img, а не recovery.img).
Сообщение отредактировал Идите Лесом — 06.09.19, 23:39
Пример добавления в интерфейс TWRP кнопки и программирования её на выполнение shell скрипта уже изложен в теме. Теперь посмотрим, как ещё можно это использовать.
Собственно утилиты:
Сообщение отредактировал Идите Лесом — 29.02.20, 09:57
Зачем? Уже известно множество случаев неправильной работы апплетов из «стокового» busybox TWRP. Утилита mount, к примеру, не была способна примонтировать образ раздела в ext4, а sed упорно не хотел производить простейшие операции со строками в файлах. Чтобы адекватно работали все патчи, функции и «плюшки» настоятельно рекомендую загружать busybox из надёжных источников и поддерживать его в актуальном состоянии.
Варианты:
https://busybox.net/downloads/binaries
Сообщение отредактировал Идите Лесом — 05.09.19, 22:08
Сообщение отредактировал Идите Лесом — 21.01.20, 16:14
<language>
<display>Русский</display>
<!— Translated by Jemmini; modified by agur4ik, SevenMaxs, S-trace 2017 —>
Что такое TWRP Recovery и как его установить на Android
На каждом телефоне, работающим под управлением операционной системы Android, имеется меню восстановления (Recovery). Но часто оно устанавливается в немного урезанном виде, ограничивая работу с устройством. Из-за этой особенности пользователи прибегают к установке кастомного Рекавери, самым популярным из которых является TWRP Recovery. С его помощью можно выполнять множество действий, например, прошить смартфон. Давайте разберёмся, что это такое, а также рассмотрим, как установить TWRP Recovery на Android.
Что такое TWRP Recovery на Android
Если говорить простым языком, то TWRP Recovery – это более функциональное меню восстановления, позволяющее проводить с устройством различные манипуляции. Такое Рекавери может помочь в случае зависания телефона, заражения вирусами и даже при необходимости обновления прошивки. Предлагаем ознакомиться с полным перечнем возможностей, которые представлены ниже:
- Установка кастомных прошивок.
- Обновление оболочки смартфона.
- Сброс устройства до заводских настроек.
- Создание резервной копии текущей прошивки.
- Создание и форматирование разделов на карте памяти.
Как видите, TWRP Recovery – это отличная замена стандартному меню восстановления. Принцип установки утилиты не совсем простой, но, если внимательно выполнять каждый пункт инструкции, проблем не возникнет.
Как установить TWRP Recovery на Android
Итак, первым делом необходимо проверить, разблокирован ли на смартфоне загрузчик. На телефонах Xiaomi для этого нужно выполнить следующее:
- Заходим в настройки.
- Переходим в раздел «Расширенные настройки».
- Открываем вкладку «Для разработчиков».
- Нажимаем по строке «Статус Mi Unlock» и видим текущее состояние загрузчика.

На большинстве смартфонов он находится в разблокированном состоянии, но если это не так, то выполните процедуру его разблокировки. В интернете имеется множество инструкций для разных моделей телефонов, поэтому сложностей возникнуть не должно. Далее требуется активировать режим отладки по USB. Это делается следующим образом:
- Заходим в настройки.
- Переходим в раздел «О телефоне» или «Об устройстве» и несколько раз нажимаем по номеру сборки либо версии прошивки.
- Открываем вкладку «Расширенные настройки». Заметим, что названия разделов на вашем телефоне могут отличаться.
- Заходим в подкатегорию «Для разработчиков».
- Переводим ползунок вправо возле строки «Отладка по USB».

Теперь запускаем компьютер и скачиваем на него пакет Minimal ADB и Fastboot. Это можно сделать как со сторонних форумов, так и с официального сайта разработчика.

Открываем загруженный файл с утилитой и следуем указаниям установщика. Заметим, что программу нужно установить на диск C, указав соответствующий путь.

Для проверки правильности установки перейдите в папку с программой и убедитесь, что в ней имеются приложения ADB и Fastboot.

А теперь подключаем смартфон к компьютеру посредством кабеля USB. Также не забываем дождаться установки необходимых драйверов. Затем на компьютере открываем командную строку и вводим запрос cd C:\Minimal ADB and Fastboot. Нажимаем по клавише «Enter» и проверяем видимость телефона, введя команду adb devices.

Переходим на официальный сайт для загрузки TWRP и выбираем модель устройства в предложенном списке. На странице со скачиванием файла выбираем «Primary (Europe)».

Перемещаем загруженный образ диска в папку с утилитами ADB и Fastboot.

Опять открываем командную строку и вводим команду adb reboot bootloader. Нажимаем по клавише «Enter» и следим за происходящим на экране смартфона.

После ввода данной команды телефон должен уйти в перезагрузку, а после запуститься в режиме Fastboot. Теперь остаётся прописать последний запрос, отвечающий за установку TWRP Recovery. Это команда fastboot flash recovery имя.img, где имя.img – название файла с кастомным рекавери.

А дальше смартфон выключится, а запустится уже с новым рекавери. Конечно, установить TWRP Recovery можно и через мобильное приложение, однако для этого способа устройство должно иметь root-права. Так как на большинстве современных телефонов получить их невозможно, то и рассматривать этот метод нет смысла.
Как пользоваться TWRP Recovery
Переход в меню восстановления TWRP Recovery осуществляется таким же образом, как и в установленное по умолчания Рекавери. Для этого достаточно одновременно удержать определённую комбинацию клавиш, которая напрямую зависит от модели смартфона. Каждый из разделов TWRP отвечает за выполнение определённых задач:
- Позволяет устанавливать прошивки или обновления.
- WIPE. Зачастую используется для сброса настроек устройства до заводских.
- Backup. Предназначен для создания резервных копий текущего состояния операционной системы.
- Restore. Позволяет восстановить ранее созданные через TWRP Recovery резервные копии системы.
- Mount. Зачастую применяется для подключения телефона в качестве накопителя к компьютеру.
- Settings. Раздел с настройками, позволяющий изменить язык интерфейса, указать яркость экрана, пропустить верификацию, отформатировать раздел и так далее.
- Advanced. Раздел содержит множество дополнительных пунктов, которые нужны только продвинутым пользователям или разработчикам.
- Reboot. Позволяет выполнить перезагрузку в Bootloader режиме, Recovery и всей системы в целом.
Разобраться с каждым из разделов TWRP Recovery несложно, но для этого придётся потратить определённое количество времени.
Подводя итоги отметим, что TWRP Recovery – кастомное рекавери, позволяющее расширить функциональность стандартного меню восстановления. Установить его на Android устройство можно с помощью компьютера, а именно программ ADB и Fastboot. Главное во время этой процедуры — соблюдать внимательность и последовательность действий.