Root Android виртуальное устройство с Android 7.1.1

12

Я использую официальный Android SDK с Android Emulator для создания виртуального Android 7.1.1 (x86). Мне нужно протестировать ряд вещей, среди прочего, некоторые приложения требуют root-доступа к устройству.

Теперь я знаю, что могу, adb rootи у меня есть корневая оболочка, но это не позволяет установленным приложениям иметь root-доступ.

Я исследовал эту тему некоторое время и видел различные подходы. Большая часть ответов была опубликована довольно давно.

Я думаю, что это довольно странно, что нет возможности переключать root - это все-таки SDK.

Как получить root на виртуальном устройстве Android, работающем под управлением Android 7.1.1, эффективно позволяя установленным приложениям получать root-доступ?

редактировать: я бы предпочел не прибегать к платным эмуляторам, как Genymotion, если это возможно.

edit2: это исключительно для личного использования.

edit3: Genymotion представляется жизнеспособным решением, в качестве альтернативного эмулятора. Почему Android SDK / Emulator не предлагает такую ​​функцию?

edit4: ответ от xavier_fakerat, кажется, работает отлично, однако, поскольку Android Studio версии 3.1, это не похоже на постоянное рутирование. Как только AVD перезагружен, корневой доступ исчез.

SaAtomic
источник

Ответы:

11

Как получить root права на эмулятор Android (Android 7.1.1 / Nougat)

Я рад сообщить сообществу более простой способ получить root права на эмулятор андроида (запустить из отдельного Android SDK)

Требования :

Примечание. Теперь SuperSU устарела, но этот метод все еще работает для рутинного эмулятора, и будут добавлены дополнительные обновления для новых методов рутирования.

инструкции

  1. Установите SuperSu.apk

    • Сначала установите приложение SuperSu, просто перетащите (если запущена последняя версия эмулятора или загружены через adb т.е. adb –e install supersu.apk)

    • После его установки при запуске отображается экран, показанный ниже, в котором указано «Не установлен бинарный файл SU ..». Эта ошибка только подтверждает, что устройство еще не рутировано.

введите описание изображения здесь

  1. Сделать системный раздел эмулятора доступным для записи

    • Как следует из этого, нам нужно дать эмулятору разрешение на запись системных файлов.

    • Введите следующий код для этого: emulator.exe –avd {emulator_name} –writable-system

Примечание. Перейдите в папку инструментов, где установлен Android SDK, и откройте командную строку, нажав клавиши Shift и правую кнопку мыши.

  1. Нажав су бинар в системном каталоге

    • Извлеките Recovery flashhable.zip (содержащий наборы различных архитектур)

Важный! Используйте только двоичный файл su, соответствующий вашей архитектуре avd, например x86, arm и т. Д., И отметьте путь, по которому вы извлекли эти двоичные файлы.

  • Убедитесь, что вы используете ADB от имени пользователя root, а также вам нужно перемонтировать его. Просто введите эти коды

adb root

adb remount

Теперь пришло время нажать на двоичный файл su:

Это код, который я успешно использовал :adb -e push C:\%USERPROFILE%\Desktop\rootemu\x86\su.pie /system/bin/su

(не берите в голову мое определенное местоположение su бинарного, любое местоположение хорошо, пока нет пробела)

Если это не удается, попробуйте вместо этого перейти в этот каталог /system/xbin/su. Также для эмуляторов под управлением Android 5.1 и ниже используйте suи неsu.pie

  1. Измените разрешения su бинарного

    • Далее давайте сделаем небольшую модификацию разрешений su bin. Мы должны сделать это в эмуляторе устройства через ADB:

    adb –e shell su root cd /system/bin chmod 06755 su

Важный!! Обратите внимание на двоичный путь su (мой - / system / bin)

  1. Установите installдирективу на двоичный файл su и установитеdaemon

Введите коды:

su --install

и для настройки демона:

su --daemon&

Важный!! Обратите внимание на расстояние

  1. Настройка SELinux на Permissive (т.е. отключение SE Linux)

    • Наконец выключите selinux через этот код:

setenforce 0

Это довольно много !! Откройте приложение SuperSU и оно может попросить обновить двоичные файлы, вы можете использовать метод Normal.

Откройте любое приложение, для которого требуются разрешения SU, просто дважды проверьте, и, действительно, SuperSU спросит, хотите ли вы предоставить ему разрешения su.

введите описание изображения здесь

замечания

Большая часть ссылок была для более старых версий Android и, следовательно, причина различных команд и путей, которые я изменил.

Специальные признания;

Особая благодарность Ирвину Х, чье руководство вдохновило меня на создание этого руководства после того, как я потерпел неудачу бесчисленное количество раз, а также после того, как увидел необходимость для многих пользователей рутировать свои эмуляторы. Я надеюсь, что это также принесет большую пользу

Ирвин Х: Рутинг эмулятора Android - на Android Studio 2.3 ((Android 4.4)

Обновить

Как прокомментировал SaAtomic,

Этот подход все еще жизнеспособен с Android Studio 3.0.1

После обновления до версии эмулятора 27.2.9и выше теперь намного проще сохранить root с помощью функции моментальных снимков (если копирование system.img не работает):

В идеале это больше похоже на гибернацию виртуального устройства с сохранением конфигурации, поэтому все сохраняется.

моментальные снимки

Теперь вы можете сохранить несколько снимков AVD для данной конфигурации устройства и выбрать, какие из сохраненных снимков загрузить при запуске эмулятора. Запуск виртуального устройства путем загрузки снимка очень похож на выход физического из спящего режима, а не для загрузки его из выключенного состояния.

Это подразумевает, что единственным требованием для запуска эмулятора является добавление -writable-systemпараметра в обычную -avd [avdname]команду эмулятора для запуска эмулятора. (Запуск эмулятора только с помощью эмулятора -avd [avdname] не запускает корневую версию / копию или может привести к некоторой ошибке)

Проверено на уровне API 22

xavier_fakerat
источник
1
Спасибо за подробный ответ. Я еще не пробовал, но это, кажется, жизнеспособное решение!
SaAtomic
1
@ SaAtomic, ваши шаги очень полезны, более того, можно также прошить Supersu 2.82 / Magisk с помощью пользовательского рекавери, например, TWRP, и легко получить root .... Это хорошо работает на любых 7.1.1 или 7.1.2 работающие устройства .... Спасибо ..
Panchajanya Sarkar
Я только что проверил это с Android SDK 2.3.3 (AVD Manager) и виртуальным пикселем с использованием Android 7.1.1. Работает так же, как описано сразу. Спасибо!
SaAtomic
1
Обновление: этот подход все еще жизнеспособен с Android Studio 3.0.1
SaAtomic
1
Скорее всего, вы используете неправильный образ эмулятора, который вам нужен, Google APIs Intel x86 Atom System Imageа неGoogle Play Intel x86 Atom System Image
xavier_fakerat