Как получить root права на эмулятор Android (протестировано на Android 7.1.1 / Nougat)
Требования :
инструкции
Установите SuperSu.apk
Сначала установите приложение SuperSu, просто сделайте перетаскивание (если вы используете последнюю версию эмулятора или загружаете через adb т.е. adb -e install supersu.apk
)
После его установки при запуске отображается экран, показанный ниже, в котором указано «Нет установленного двоичного файла SU ...». Эта ошибка только подтверждает, что устройство еще не рутировано.
Сделать системный раздел эмулятора доступным для записи
Как и следует, нам нужно дать эмулятору разрешение на запись системных файлов.
Введите следующий код для этого: emulator -avd {emulator_name} -writable-system
Если у вас есть более одного AVD, вы можете получить список AVD с помощью команды: emulator -list-avds
Примечание. Перейдите в папку инструментов, где установлен Android SDK, и откройте командную строку, нажав клавиши Shift и правую кнопку мыши.
Нажав su бинарный в системном каталоге
- Извлеките Recovery flashhable.zip (содержащий наборы различных архитектур)
Важный! Используйте только двоичный файл su, соответствующий вашей архитектуре avd, например x86, arm и т. Д., И отметьте путь, по которому вы извлекли эти двоичные файлы.
- Убедитесь, что вы используете ADB от имени пользователя root, а также вам нужно перемонтировать его. Просто введите эти коды
adb root
adb remount
Теперь пришло время нажать на двоичный файл su:
Это код, который я успешно использовал :adb -e push C:\Users\User1\Desktop\rootemu\x86\su.pie /system/bin/su
(не берите в голову мое специфическое местоположение su бинарного, любое местоположение хорошо, пока нет пробела)
примечание: чтобы выяснить bin
или xbin
сделать в консоли до:> adb shell
,>ls /system/xbin/su
Если это не удается, попробуйте вместо этого перейти в этот каталог /system/xbin/su
. Также для эмуляторов под управлением Android 5.1 и ниже используйте su
и неsu.pie
Измените разрешения su бинарного
- Далее давайте сделаем небольшую модификацию разрешений su bin. Мы должны сделать это в эмуляторе устройства через ADB:
adb -e shell
su root
cd /system/bin
chmod 06755 su
Важный!! Обратите внимание на двоичный путь su (мой - / system / bin)
- Установите
install
директиву на двоичный файл su и установитеdaemon
Введите коды:
su --install
и для настройки демона:
su --daemon&
Важный!! Обратите внимание на расстояние
Настройка SELinux на Permissive (т.е. отключение SE Linux)
- Наконец выключите selinux через этот код:
setenforce 0
Откройте приложение SuperSU и оно может попросить обновить двоичные файлы, вы можете использовать метод Normal.
Примечание: если вы испытываете загрузочные циклы, лучше не обновляйте двоичные файлы, просто используйте их как есть.
Это довольно много !!
Откройте любое приложение, для которого требуются разрешения SU, просто дважды проверьте, и, действительно, SuperSU спросит, хотите ли вы предоставить ему разрешения su.
Чтобы корень сохранялся, обновите su bin (используя метод Normal), затем скопируйте system.img из временного каталога ( Users\AppData\Local\Temp\Android Emulator
файл обычно называется случайным образом, например, 1359g.tmp
с большим размером) и замените default system.img
.
Обновление :
Я заметил, что получить временный образ системы в Linux легче, чем в Windows. Вы можете попробовать использовать снимок изображения.
Обновление 4 августа 2018
С появлением эмулятора 27.3.x
это теперь значительно упрощает сохранение root с помощью функции моментальных снимков (если копирование system.img
метода не работает):
В идеале это больше похоже на hibernarig виртуальное устройство с неповрежденным config, следовательно, все сохраняется.
моментальные снимки
Теперь вы можете сохранить несколько снимков AVD для данной конфигурации устройства и выбрать, какие из сохраненных снимков загрузить при запуске эмулятора. Запуск виртуального устройства путем загрузки снимка очень похож на выход физического из спящего режима, в отличие от загрузки его из выключенного состояния.
Это подразумевает, что единственным требованием для запуска эмулятора является добавление -writable-system
параметра в обычную emulator -avd [avdname]
команду для запуска эмулятора. ( Запуск эмулятора только с emulator -avd [avdname]
не запускает рутированную версию / копию или может привести к некоторой ошибке )
Проверено на уровне API 22
Также о проблемах с загрузочным замком читайте в другом посте: Android Emulator: Как избежать цикла загрузки после рутирования? и их обновления.
замечания
Большая часть ссылочного содержимого была для более старых версий Android и, следовательно, причина различных команд и путей, которые я изменил.
Выражение признательности;