У меня есть все версии Android SDK (от 1.5 до 2.3.3), и я пробовал много способов получения root в эмуляторе Android. Я не использую Android-устройства и все тестирую на эмуляторе (AVD).
Мне нужно получить root-доступ в любом из эмуляторов Android, чтобы использовать функции «iptables» и «busybox». И чтобы использовать iptables, я должен иметь root-доступ. Команда Atleast 'su' должна выполняться в эмуляторе терминала.
Я также установил z4root
приложение,
Но это занимает очень много времени и не заканчивает рутирование, и застревает. некоторые говорят, что если мы опустим систему до уровня ниже RC30, таким образом мы сможем получить root-доступ. если это правда, то как это сделать? Я использую как Linux, так и Windows.
Пожалуйста, кто-нибудь подскажет какой-нибудь способ рутировать мой эмулятор.
источник
Ответы:
Эти ответы все излишне сложны :)
источник
adb root
результатов в "adbd не может работать от имени пользователя root в производственных сборках". Вы используете определенный эмулятор? Пожалуйста, предоставьте больше деталей.adb root
выдается сообщение об ошибкеadbd cannot run as root in production builds
, см. Stackoverflow.com/a/45668555/1682419 - Вам нужен «Системный образ API Google», а не «Системный образ Google Play».Как получить root права на эмулятор Android (протестировано на Android 7.1.1 / Nougat)
Требования :
Приложение SuperSU (chainfire) последняя версия 2.82
Recovery flashable.zip (содержит su бинарный файл)(Вот альтернативная ссылка для резервного копирования, предоставленная пользователем XDA Ibuprophen для прошиваемых zip- архивов, если основная ссылка не работает: Flashable zip release )инструкции
Установите 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 бинарный в системном каталоге
Важный! Используйте только двоичный файл su, соответствующий вашей архитектуре avd, например x86, arm и т. Д., И отметьте путь, по которому вы извлекли эти двоичные файлы.
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 бинарного
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)
setenforce 0
Откройте приложение SuperSU и оно может попросить обновить двоичные файлы, вы можете использовать метод Normal.
Примечание: если вы испытываете загрузочные циклы, лучше не обновляйте двоичные файлы, просто используйте их как есть.
Это довольно много !!
Откройте любое приложение, для которого требуются разрешения SU, просто дважды проверьте, и, действительно, SuperSU спросит, хотите ли вы предоставить ему разрешения su.
Чтобы корень сохранялся, обновите su bin (используя метод Normal), затем скопируйте system.img из временного каталога (
Users\AppData\Local\Temp\Android Emulator
файл обычно называется случайным образом, например,1359g.tmp
с большим размером) и замените defaultsystem.img
.Обновление :
Я заметил, что получить временный образ системы в Linux легче, чем в Windows. Вы можете попробовать использовать снимок изображения.
Обновление 4 августа 2018
С появлением эмулятора
27.3.x
это теперь значительно упрощает сохранение root с помощью функции моментальных снимков (если копированиеsystem.img
метода не работает):В идеале это больше похоже на hibernarig виртуальное устройство с неповрежденным config, следовательно, все сохраняется.
моментальные снимки
Это подразумевает, что единственным требованием для запуска эмулятора является добавление
-writable-system
параметра в обычнуюemulator -avd [avdname]
команду для запуска эмулятора. ( Запуск эмулятора только сemulator -avd [avdname]
не запускает рутированную версию / копию или может привести к некоторой ошибке )Проверено на уровне API 22
Также о проблемах с загрузочным замком читайте в другом посте: Android Emulator: Как избежать цикла загрузки после рутирования? и их обновления.
замечания
Большая часть ссылочного содержимого была для более старых версий Android и, следовательно, причина различных команд и путей, которые я изменил.
Выражение признательности;
Ирвин Х: Рутинг эмулятора Android - на Android Studio 2.3 ((Android 4.4)
Сбой при доступе к Android AVD.
источник
su --install && su --daemon&
на эмуляторе, а затемsetenforce 0
получить root. Знаете ли вы какое-либо постоянное исправление для root при перезагрузке?Вот список команд, которые вы должны запускать во время работы эмулятора, я тестирую это решение для avd на Android 2.2:
Предполагается, что двоичный файл su находится в рабочем каталоге. Вы можете найти su и суперпользователя здесь: http://forum.xda-developers.com/showthread.php?t=682828 . Вам нужно запускать эти команды каждый раз, когда вы запускаете эмулятор. Вы можете написать скрипт, который запускает эмулятор и рутирует его.
источник
-partition-size
опцию для указания размера раздела. Попробуйте запустить эмулятор сtools/emulator -avd MyAndroidVirtualDeviceName -partition-size 256
adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
на:adb root
adb remount
Для AVD с 5.1.1 и 6.0 я использовал следующий скрипт в Windows:
Нужен UPDATE.zip от SuperSU. Распаковал их в любую папку. Создайте файл bat с содержимым выше. Не забудьте указать необходимую архитектуру и устройство:
set adb=adb -s emulator-5558
аset arch=x64
. Если вы используете Android выше или равно 5.0, изменитеset pie=
наset pie=.pie
. Запустить его. Вы получаете временный рут для текущего запуска.Если вы получили ошибку при перемонтировании системного раздела, вам нужно запустить AVD из командной строки. Смотрите ниже первый шаг для Android 7.
Если вы хотите сделать его постоянным - обновите бинарный файл в SuperSU и сохраните system.img из временной папки вместо стандартного system.img.
Как конвертировать полученный временный корень в постоянный
Первое - это идет в SuperSu. Он предлагает бинарное обновление. Обновление нормальным способом. Перезагрузка отклонить.
Второе - актуально только для эмуляторов. Тот же AVD. Суть в том, что изменения в образе системы не будут сохранены. Вы должны сохранить их для себя.
Уже есть инструкции для разных эмуляторов.
Для AVD вы можете попытаться найти временный файл system.img, сохранить его где-нибудь и использовать при запуске эмулятора.
В Windows он находится в
%LOCALAPPDATA%\Temp\AndroidEmulator
и имеет имя что-то вродеTMP4980.tmp
.Вы копируете его в папку avd device (
%HOMEPATH%\.android\avd\%AVD_NAME%.avd\
) и переименовываете вsystem.img
.Теперь он будет использоваться на старте, вместо обычного. True, если изображение в SDK обновлено, оно будет иметь старое.
В этом случае вам нужно будет удалить это
system.img
и повторить операцию по его созданию.Более подробное руководство на русском языке: http://4pda.ru/forum/index.php?showtopic=318487&view=findpost&p=45421931
Для андроида 7 нужно запустить дополнительные шаги: 1. Нужно запустить эмулятор вручную. Перейдите в папку SDK
sdk\tools\lib64\qt\lib
. Запустите из этой папки эмулятор с параметрами-writable-system -selinux disabled
вроде этого:Вам нужно перезагрузиться
adbd
из-под root:root adb -s emulator-5554
И система перемонтирования:
Это можно сделать только один раз за запуск эмулятора. И любой другой перемонтаж может нарушить режим записи. Из-за этого вам не нужно запускать какие-либо другие команды с перемонтированием, например
mount -o remount,rw /system
.Остальные шаги остаются прежними - загрузите двоичный файл, запустите двоичный файл как демон и так далее.
Картинка с AVD Android 7 x86 с рутом:
Если вы видите ошибку о PIE при выполнении
su
бинарного файла - тогда вы загружаете в эмулятор неверный бинарный файл. Вы должны загрузить двоичный файл с именемsu.pie
внутри архива, но в эмуляторе он должен быть назван какsu
, а неsu.pie
.источник
update binary in SuperSU and store system.img from temp folder as replace of default system.img.
Я считаю, что самый простой способ - создать псевдоним для команды
sh
, напримерПроверено на Android Emulator 3.0 и выше.
источник
mount: '/system' not in /proc/mounts
Здесь мой пакет со всем, что вам нужно. Или вы можете использовать этот скрипт:
источник
Я просто заменил и назначил атрибуты su для ~ / Android / Sdk / system-images / android-22 / google_apis / x86 / system.img, и теперь на Android 5 у меня всегда есть root даже для новых систем, достаточно установить SuperSu. APK
после этого SuperSu.apk видит рут. Но я не обновляю бинарный файл
источник
Я использовал часть метода из решений выше; однако они не работали полностью. На последней версии Энди это сработало для меня:
На Andy (Root Shell) [Чтобы получить, щелкните правой кнопкой мыши значок HandyAndy и выберите Term Shell]
Внутри оболочки выполните эти команды:
Затем установите SuperSU и установите двоичный файл SU. Это заменит бинарный файл SU, который мы только что создали. (Необязательно) Удалите SuperSU и установите Superuser от CWM. Установите двоичный файл su снова. Теперь рут работает!
источник
Я перепробовал многие из вышеперечисленных предложений, в том числе SuperSU, и не смог заставить их работать, но нашел что-то гораздо более простое, что сработало для моих целей. В моем случае я хотел иметь возможность запускать sqlite только из командной строки. Я просто запустил эмулятор со старой версией Android (Lollipop) и сразу получил root-доступ.
источник
Я обнаружил, что по умолчанию эмулятор API 23 x86_64 рутирован.
источник