Я использую официальный 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-доступ пропадает.
Как получить root права на эмулятор Android (Android 7.1.1/Nougat)
Я рад сообщить сообществу о более простом способе рутирования эмулятора Android (запуск из автономного Android SDK)
Требования :
Recovery flashable.zip (содержит двоичный файл su) (Вот альтернативная зеркальная ссылка для flashable zip, если основная ссылка не работает: Flashable zip super su 2.82 для всех ромов )
Примечание. SuperSU устарел, но этот метод по-прежнему работает для рутирования эмулятора, и для более новых методов рутирования будут предоставлены дополнительные обновления.
инструкции
Сначала установите приложение SuperSu, просто перетащите его (при использовании последней версии эмулятора или боковой загрузки через adb, т.е. adb -e install supersu.apk
)
После его установки при запуске отображается экран, показанный ниже, с указанием «Двоичный файл SU не установлен…». Эта ошибка просто подтверждает, что устройство еще не рутировано.
Как он предполагает, нам нужно дать эмулятору разрешение на запись системных файлов.
Для этого введите следующий код:emulator.exe -avd {emulator_name} -writable-system
Примечание. Перейдите в папку инструментов, в которой установлен Android SDK, и откройте там командную строку, нажав Shift и щелкнув правой кнопкой мыши.
Важный! Используйте только тот двоичный файл su, который соответствует вашей архитектуре avd, например, x86, arm и т. д., и запишите путь, по которому вы распаковали эти двоичные файлы.
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
Далее давайте немного изменим права доступа к двоичному файлу su. Мы должны сделать это в устройстве эмулятора через adb:
adb -e shell
su root
cd /system/bin
chmod 06755 su
Важный!! Обратите внимание на двоичный путь su (у меня это /system/bin)
install
директивы на двоичный файл su и установкаdaemon
Введите коды:
su --install
и для настройки демона:
su --daemon&
Важный!! Обратите внимание на интервал
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
Панчаджанья Саркар
SaAtomic
SaAtomic
Вивек Ананд
xavier_fakerat
Google APIs Intel x86 Atom System Image
а неGoogle Play Intel x86 Atom System Image
SaAtomic
su
двоичный файл предназначен/system/xbin/su
для Pixel AVD с Android 7.1.1 (API 25), и что бы я ни пытался, рутирование не сохраняется. После перезагрузки AVD больше не рутируется.Калеб Фентон
xavier_fakerat
щенок