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

Я использую официальный Android SDK с эмулятором Android для создания виртуального 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 root-доступ пропадает.

Ответы (1)

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

Я рад сообщить сообществу о более простом способе рутирования эмулятора Android (запуск из автономного 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. Перемещение бинарного файла su в системный каталог
  • Извлеките Recovery flashable.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. Мы должны сделать это в устройстве эмулятора через 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, и оно может попросить обновить двоичные файлы, вы можете использовать обычный метод.

Откройте любое приложение, требующее разрешения 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]команде эмулятора для запуска эмулятора. (Запуск эмулятора только с помощью emulator -avd [avdname] не запускает корневую версию/копию или может привести к некоторой ошибке)

Протестировано на уровне API 22

Спасибо за подробный ответ. Я еще не пробовал, но это кажется жизнеспособным решением!
@SaAtomic, ваши шаги очень полезны, более того, можно также прошить Supersu 2.82 / Magisk, используя пользовательское восстановление, например, TWRP, и легко получить root .... Это хорошо работает на любой версии 7.1.1 или 7.1.2. работающие устройства.... Спасибо..
Я только что проверил это с помощью Android SDK 2.3.3 (AVD Manager) и виртуального пикселя с использованием Android 7.1.1. Работает так же, как описано сразу. Спасибо!
Обновление: этот подход все еще жизнеспособен с Android Studio 3.0.1.
Я попробовал ваш подход, но получил ошибку на 3-м шаге. Я использовал: Android Studio 3.0.1 на Mac, Nexus 5X с Android 7.1, поэтому для справки имя эмулятора будет Nexus_5X_API_25. При выполнении adb root, как указано в 3-м шаге, я получаю следующую ошибку: <br/>$<b>adb root</b><br/> <b>adbd не может работать как root в производственных сборках</b> Пожалуйста дайте мне знать, если ваш подход все еще работает в данный момент. Спасибо.
Скорее всего, вы используете неправильный образ эмулятора, который вам нужно использовать, Google APIs Intel x86 Atom System Imageа неGoogle Play Intel x86 Atom System Image
Обновление: после последнего обновления Android Studio до версии 3.1 suдвоичный файл предназначен /system/xbin/suдля Pixel AVD с Android 7.1.1 (API 25), и что бы я ни пытался, рутирование не сохраняется. После перезагрузки AVD больше не рутируется.
$ adb remount 1 Не работает от имени пользователя root. Сначала попробуйте "adb root".
@SaAtomicвам нужно обновить эмулятор и использовать snaptop для загрузки
Первая ссылка мертва