TWRP Android Custom Recovery
What is TWRP Recovery ?
TWRP will work on most of the Android devices and this recovery is custom made. This can avoid limitations in the original Android System. TWRP recovery has more features than other factory fitted default recoveries. This is also known as TeamWin Recovery project.
How to install TWRP Recovery on your device?
Installing this recovery is easy and you only need to have rooted android device with latest Android firmware updated. There are two methods to install this recovery to your device.
Installation Method 01
This is called the PlayStore method and this is very easy to do. Download TWRP Manager from the PlayStore and check the device compatibility from the app. If your devices is supported you can download the recovery to your mobile. If your device is not listed in the TWRP manager you need to wait until developers make the recovery. Unfortunately this is slow process and using manual method you can install recovery without waiting. Please make sure your device is rooted and enable USB debugging before start this procedure.
Installation Method 02
This method called manual method and you need to have installed the ADB drivers on your PC. Then download the custom recovery files from the official website and open the command prompt in that location and click the install via ADB method after the connecting your device to the PC. Do not forget to enable USB debugging and unknown source in your device before start the procedure.
Что такое 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. Главное во время этой процедуры — соблюдать внимательность и последовательность действий.
Кастомное рекавери 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 —>
Как установить кастомное рекавери на Android — пошаговый гайд
![]()
Кастомное рекавери — это сторонняя среда восстановления, которая используется для внесения изменений в работу устройства. Кастомное рекавери позволяет:
- Устанавливать прошивки;
- Поднимать тактовую частоту процессора;
- Подключаться к ПК в режиме ADB;
- Восстанавливать данные из бекапов;
- Сбрасывать устройство;
- Устанавливать сторонние дополнения к ОС.
Разберемся как установить кастомное рекавери TWRP на Android-устройство, на примере смартфона Samsung Galaxy S8.
Подготовка к установке рекавери
Активируем режим разработчика. Для этого открываем настройки и выбираем пункт «О телефоне» (About phone).
![]()
Открываем пункт «О телефоне» в настройках устройства
![]()
Семь раз тапаем по пункту «Номер сборки» (Build Number).
![]()
Всё — мы активировали режим разработчика. Теперь в настройках появится новый пункт «Режим разработчика».
![]()
![]()
Открываем «Режим разработчика».
Теперь нужно разблокировать загрузчик. Для этого нужно отметить чекбоксы «Разблокировка OEM» (OEM unlocking) и USB debugging.
![]()
Внимание! На этом этапе делаем бекап всех данных телефона.
Устанавливаем TWRP
Идём по ссылке и выбираем свой смартфон. В моём случае — это Galaxy S8.
![]()
Скачиваем самый верхний тар-файл. Для удобства переносим скачанный файл на рабочий стол.
Устанавливаем Odin
![]()
Скачанный архив переносим на рабочий стол. Архив распаковываем и запускаем программу. Кликаем по AP и указываем архив TWRP (tar-файл), который мы оставили на рабочем столе:
![]()
В Options нужно снять выделение с чекбокса Auto Reboot:
![]()
Теперь вынимаем USB-шнур и отключаем смартфон. Если у вас тоже Samsung Galaxy S8 нажимаем кнопку «Громкость -» и «Питание» одновременно и держим пока не появится предупреждение:
![]()
Соглашаемся, при помощи кнопки «Громкость +». Теперь снова подключаем смартфон к ПК по USB. Выбираем пункт Start. После завершения операции отсоединяем USB-кабель от смартфона.
В течение семи секунд одновременно удерживаем «Громкость -» и «Питание». Сразу как экран погаснет одновременно удерживаем клавиши «Громкость +» и «Питание». Откроется TEAM WIN рекавери. Внизу экрана свайпаем чтобы разрешить изменения. Откроется главный экран:
![]()
![]()
Выбираем пункт Wipe
Затем — Format Data. (Ещё раз убедитесь, что сделан бекап всех данных!) :
![]()
Подтверждаем действие, напечатав слово yes
После завершения кликаем по кнопке Домой, снова попадаем в главное меню. Выбираем Reboot и дальше пункт Recovery:
![]()
Появится окно Unmodified System Partition. Свайпаем внизу Swipe to Allow Modifications:
![]()
Теперь будем скачивать следующий zip-файл. Снова подключаем смартфон к ПК при помощи USB-шнура. Cкачиваем файл no-verity по ссылке. Переносим скачанный файл на рабочий стол. Копируем архив на смартфон в папку TWRP, которая находится во внутреннем хранилище:
![]()
Отключаем смартфон от ПК. Возвращаемся к телефону и на главном экране Team Win Recovery Project тапаем Install. Выбираем папку TWRP, затем — файл no-verity-opt-encypt-5.1.zip:
![]()
Выбираем скачанный файл:
![]()
Свайпаем ползунок внизу чтобы начать установку:
![]()
После её завершения, тапаем по кнопке Домой, выбираем Reboot — Recovery. Тапаем Do Not Install. Смартфон перезагрузится. Снова откроется рекавери. Снова выбираем Reboot — System. Тапаем Do Not Install:
![]()
Телефону потребуется от 5 до 10 минут чтобы перезагрузиться.
Устанавливаем Magisk
Устанавливаем Magisk. Подключаем смартфон по USB к ПК. Cкачиваем версию 20.4
На смартфоне выбираем режим «Передача данных». Копируем скачанный архив во внутреннее хранилище смартфона, в корневую директорию. Отключаем телефон от USB. Отключаем смартфон. Одновременно удерживаем кнопки «Громкость +» и «Питание» в течение несколько секунд. Попадаем в кастомное рекавери, выбираем Install:
![]()
Находим архив Magisk, который мы скопировали в корень диска
![]()
Свайпаем строку внизу — начнется установка Magisk:
![]()
По окончанию установки, на следующем экране, тапаем Reboot System и Do Not Install. Всё — Magisk установлен.
Устанавливаем Root Check
Теперь устанавливаем приложение Root Check через Play Маркет. При первом запуске подтверждаем все запросы и даём все разрешения приложению, которые оно затребует. Затем тапаем Get Started — Verify Root. Выбираем Grant:
![]()
Готово! Мы установили кастомное рекавери и получили рут-права на устройстве. Теперь можно выполнять любые нестандартные действия: начиная с установки сторонних прошивок и заканчивая поднятием тактовой частоты процессора устройства.
Напоследок интересное видео о том, как получить рут-права на любом андроид-устройстве — даже без компьютера: