У меня есть все версии Android SDK (от 1.5 до 2.3.3), и я пробовал много методов для получения root в эмуляторе Android. Я не использую никаких устройств Android и тестирую все на эмуляторе (AVD).
Мне нужно получить root-доступ в любом из эмуляторов Android, чтобы использовать функциональность 'iptables' и 'busybox'. А чтобы использовать iptables, я должен иметь root-доступ. По крайней мере, команда 'su' должна выполняться в эмуляторе терминала.
Я также установил приложение z4root
,
Но оно занимает очень много времени и не завершает укоренение, застревает. некоторые говорят, что если мы понизим систему до уровня ниже RC30, то сможем получить root-доступ. если это правда, то как это сделать? Я использую как Linux, так и Windows OS.
Пожалуйста, кто-нибудь подскажите мне какой-нибудь метод, чтобы получить root-доступ к моему эмулятору.
Как к корневым Android эмулятор (проверял на Android 7.1.1/ Нуга) Требования:
АБР -е установить SuperSU.АПК
) emulator.exe -АВД {emulator_name} -записи-системы
Примечание: перейдите к инструменты папку где SDK для ОС Android, устанавливается и откройте командную строку там, нажав клавишу Shift и щелкнув правой кнопкой мыши. корень АБР
АБР перемонтировать
Теперь его время, чтобы подтолкнуть Су двоичный:
Это код, который я успешно использовал: АБР -е нажимаем C:\Users\User1\Desktop\rootemu\x86\su.pie /системы/Бен/Су
(по фигу о моих конкретных расположении Су двоичный, любое расположение в порядке, если нет белого пространства)
Примечание: чтобы выяснить, бин
или хя
сделать в консоли перед: > АБР оболочки
, > Общ /системы/xbin/Су
Если это не удается, попробуйте это толкает в этот каталог вместо /системы/xbin/Су
. Также для эмуляторов под управлением Android 5.1 и ниже используйте команду su
, а не Су.пирог
АБР -электронной оболочки корень Су компакт-диск /системы/Бен команду chmod 06755 Су
Важно!! Принять к сведению бинарные путь Су (шахта /системы/бин) демон
Введите коды:
Су-установить
и для настройки демона:
Су --демон&
Важно!! Принять к сведению интервал setenforce 0
Это довольно много его!!
Откройте любое приложение, требующее разрешений СУ просто чтобы проверить, и действительно так же просто спросить, если вы хотите предоставить разрешения Су.
Чтобы у корня сохраняются обновить бинарный файл su (используя нормальный метод), то система копирования.img из директории темп (пользователи\папка AppData\местные\темп\эмулятор Androidфайл обычно случайно назван е.г'1359g.ТМП
с большим размером) и заменить систему по умолчанию.ИМГ
.
Обновление:
Я отметил это легче получить временный образ системы в Linux, чем Windows. Вы можете попробовать использовать изображения снимка.
С появлением эмулятора 27.3.х это делает сохранение корневой гораздо проще через функцию моментального снимка (если копирование системы.способ ИМГ
это'т рабочих):
В идеале это больше похоже hibernarig виртуальное устройство с config нетронутым, поэтому все сохранилось.
Снимки
теперь вы можете сохранить несколько снимков АВД для данного устройства и gt; Настройки и выбрать один из сохраненных снимков для загрузки, когда вы запустить эмулятор. Запуск виртуального устройства при загрузке снимка так же, как пробуждение от физического состоянии сна, в отличие от загрузки > это от питание-выключенном состоянии. Из этого вытекает только требование для запуска эмулятора добавляет
-записи-параметр системы для эмулятора-АВД нормальная команда [avdname]
для запуска эмулятора. (Запуск эмулятора просто с эмулятора -АВД [avdname]` не'т запустить корни версию/копию или может привести к некоторой погрешностью) <суп>тестирование на уровень API 22</SUP и ГТ; Также для приложение вопросы см. другой пост: Android эмулятор: Как избежать загрузки петли после укоренения? и их обновления. Замечания Большинство контента в ссылка для более старых версий Android и, следовательно, причина для разных команд и путей, которые я изменил. * Благодарности;**
Вот список команд, которые нужно выполнить во время работы эмулятора, я тестирую это решение для avd на Android 2.2:
adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
adb push su /system/xbin/su
adb shell chmod 06755 /system
adb shell chmod 06755 /system/xbin/su
Предполагается, что бинарный файл su находится в рабочем каталоге. Вы можете найти su и superuser здесь : http://forum.xda-developers.com/showthread.php?t=682828. Вам нужно запускать эти команды каждый раз при запуске эмулятора. Вы можете написать скрипт, который запускает эмулятор и дает ему root.
Для AVD с 5.1.1 и 6.0 я использовал следующий сценарий в windows:
set adb=adb -s emulator-5558
set arch=x64
set pie=
adb start-server
%adb% root
%adb% remount
rem %adb% shell mount -o remount,rw /system
%adb% shell setenforce 0
%adb% install common/Superuser.apk
%adb% push %arch%/su%pie% /system/bin/su
%adb% shell chmod 0755 /system/bin/su
%adb% push %arch%/su%pie% /system/xbin/su
%adb% shell chmod 0755 /system/xbin/su
%adb% shell su --install
%adb% shell "su --daemon&"
rem %adb% shell mount -o remount,ro /system
exit /b
Нужен UPDATE.zip от SuperSU. Распакуйте их в любую папку. Создайте bat-файл с содержанием, приведенным выше. Не забудьте указать необходимую архитектуру и устройство: set adb=adb -s emulator-5558
и set arch=x64
. Если вы используете Android выше или равный 5.0, измените set pie=
на set pie=.pie
. Запустите его. Вы получите временный root для текущего запуска.
Если вы получили ошибку при перемонтировании системного раздела, то вам необходимо запустить AVD из командной строки. Смотрите ниже первый шаг для Android 7.
Если вы хотите сделать его постоянным - обновите бинарник в SuperSU и сохраните system.img из папки temp вместо стандартного system.img.
Как преобразовать полученный временный root в постоянный.
Сначала - обратится к SuperSu. Он предлагает бинарное обновление. Обновляем обычным способом. Перезагрузка отклоняется.
Второй - актуален только для эмуляторов. Тот же самый AVD. Суть в том, что изменения в образе системы не сохранятся. Их нужно сохранить для себя.
Для разных эмуляторов уже есть разные инструкции.
Для AVD можно попробовать найти временный файл system.img, сохранить его где-нибудь и использовать при запуске эмулятора.
В Windows он находится в папке %LOCALAPPDATA%\Temp\AndroidEmulator
и имеет имя что-то вроде TMP4980.tmp
.
Вы копируете его в папку avd device (%HOMEPATH%\.android\avd\%AVD_NAME%.avd\
), и переименовываете в system.img
.
Теперь он будет использоваться при запуске, вместо обычного. Правда, если образ в SDK будет обновлен, то будет использоваться старый.
В этом случае нужно будет удалить этот system.img
, и повторить операцию по его созданию.
Более подробное руководство на русском языке: http://4pda.ru/forum/index.php?showtopic=318487&view=findpost&p=45421931
Для android 7 необходимо выполнить дополнительные шаги:
Запустите эмулятор вручную.
Перейдите в папку sdk sdk\tools\lib64\qt\lib
.
Запустите из этой папки эмулятор с опциями -writable-system -selinux disabled
.
Например:
F:\android\sdk\tools\lib64\qt\lib>F:\android\sdk\tools\emulator.exe -avd 7.0_x86 -verbose -writable-system -selinux disabled
Вам нужно перезапустить adbd
от имени root:
adb -s emulator-5554 root
И перемонтировать систему:
adb -s emulator-5554 remount
Это можно сделать только один раз за один запуск эмулятора. И любой другой remount может нарушить режим записи. Из-за этого вам не нужно выполнять другие команды с remount, например mount -o remount,rw /system
.
Остальные шаги остаются прежними - загрузка бинарника, запуск бинарника как демона и так далее.
Изображение с AVD Android 7 x86 с правами root:
Если вы видите ошибку PIE при выполнении бинарника su
- значит вы загрузили в эмулятор не тот бинарник. Вы должны загрузить бинарник с именем su.pie
внутри архива, но на эмуляторе он должен называться su
, а не su.pie
.
Я считаю, что самый простой способ - это создать псевдоним для команды sh
, например.
adb shell
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cd /system/bin
cat sh > su && chmod 4775 su
Проверено на эмуляторе Android 3.0 и выше.
Попробовать другой способ решить этот вопрос.
Использовать как Genymotion вместо эмулятора Android по умолчанию. Это'с корнями по умолчанию. Это'ы гораздо легче и больше похож на обычный телефон. Это's бесплатная для личного использования.
Я нашел этот вопрос, потому что я хочу установить Экспоузд Framework на эмуляторе Android по умолчанию. Что установка нуждается в корневой и вспышку пользовательское восстановление (например, карты), как трудно для эмулятора Android по умолчанию. Наконец я пользовался Genymotion и все сделано в течение нескольких минут.
Я просто заменил и присвоить атрибуты для Су в ~/система-изображениями Android/СДК//андроид-22/google_apis/х86/системы.ИМГ и теперь на Android 5 у меня всегда есть свои корни даже для новой системы, для этого достаточно установить SuperSU.АПК
Android 6 is necessary only
adb root
adb shell
>/system/xbin/su --daemon &
>setenfoce 0
после этого включить.АПК видит корень. Но я не обновить бинарный файл
Здесь мой пакет со всем необходимым. Или вы можете использовать этот скрипт:
echo on
set device=emulator-5554
set avd_name=
set adb=d:\Poprygun\DevTools\Android\Android-sdk\platform-tools\adb -s %device%
set emulator=d:\Poprygun\DevTools\Android\Android-sdk\emulator\emulator
set arch=x86
set pie=
echo Close all ANDROID emulators and press any key
pause
start %emulator% -avd Nexus_One_API_25 -verbose -writable-system
echo Wait until ANDROID emulator loading and press any key
pause
%adb% start-server
%adb% root
%adb% remount
%adb% shell setenforce 0
%adb% install D:\SuperSU\SuperSU.apk
%adb% push D:\SuperSU\su\%arch%\su.pie /system/bin/su
%adb% shell chmod 0755 /system/bin/su
%adb% push D:\SuperSU\su\%arch%\su.pie /system/xbin/su
%adb% shell chmod 0755 /system/xbin/su
%adb% shell su --install
%adb% shell "su --daemon&"
pause
exit /b
Я пробовал многие из перечисленных выше предложений, включая SuperSU и не мог'т получить любую работу, но найти что-то гораздо проще, что работал для моих целей. В моем случае, я хотел только, чтобы иметь возможность работать с SQLite в командной строке. Я просто подключил эмулятор с более старой версией Android (Lollipop) и тут же корневой доступ.
Я использовал часть способ от вышеперечисленных решений; однако, они не полностью работают. На последней версии Энди, этот работал для меня:
Энди (корневой оболочки) [скачать, щелкните правой кнопкой мыши на значок и выберите HandyAndy термин оболочка]
Внутри оболочки, выполните следующие команды:
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cd /system/bin
cat sh > su && chmod 4775 su
Затем установите SuperSU и установить бинарный файл su. Это позволит заменить двоичный СУ, мы только что создали. (Необязательно) Удалить SuperSU и установите суперпользователя на УВС. Снова установить бинарный Су. Теперь, корень работает!