Как получить root-доступ на эмуляторе Android?
У меня есть все версии Android SDK (от 1.5 до 2.3.3), и я пробовал много способов получения root в эмуляторе Android. Я не использую Android-устройства и все тестирую на эмуляторе (AVD).
Мне нужно получить root-доступ в любом из эмуляторов Android, чтобы использовать функции «iptables» и «busybox». И чтобы использовать iptables, я должен иметь root-доступ. Команда Atleast ‘su’ должна выполняться в эмуляторе терминала.
Я также установил z4root приложение,
Но это занимает очень много времени и не заканчивает рутирование, и застревает. некоторые говорят, что если мы опустим систему до уровня ниже RC30, таким образом мы сможем получить root-доступ. если это правда, то как это сделать? Я использую как Linux, так и Windows.
Пожалуйста, кто-нибудь подскажет какой-нибудь способ рутировать мой эмулятор.
Эти ответы все излишне сложны 🙂
Как получить root права на эмулятор Android (протестировано на Android 7.1.1 / Nougat)
Требования :
Recovery flashable.zip (содержит su бинарный файл) (Вот альтернативная ссылка для резервного копирования, предоставленная пользователем XDA Ibuprophen для прошиваемых zip- архивов, если основная ссылка не работает: Flashable zip release )
инструкции
Установите SuperSu.apk
Сначала установите приложение SuperSu, просто сделайте перетаскивание (если вы используете последнюю версию эмулятора или загружаете через adb т.е. adb -e install supersu.apk )
После его установки при запуске отображается экран, показанный ниже, в котором указано «Нет установленного двоичного файла SU . ». Эта ошибка только подтверждает, что устройство еще не рутировано.
Сделать системный раздел эмулятора доступным для записи
Как и следует, нам нужно дать эмулятору разрешение на запись системных файлов.
Введите следующий код для этого: emulator -avd
Если у вас есть более одного AVD, вы можете получить список AVD с помощью команды: emulator -list-avds
Примечание. Перейдите в папку инструментов, где установлен Android SDK, и откройте командную строку, нажав клавиши Shift и правую кнопку мыши.
Нажав su бинарный в системном каталоге
- Извлеките Recovery flashhable.zip (содержащий наборы различных архитектур)
Важный! Используйте только двоичный файл su, соответствующий вашей архитектуре avd, например x86, arm и т. Д., И отметьте путь, по которому вы извлекли эти двоичные файлы.
- Убедитесь, что вы используете ADB от имени пользователя root, а также вам нужно перемонтировать его. Просто введите эти коды
Теперь пришло время нажать на двоичный файл 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 бинарного
- Далее давайте сделаем небольшую модификацию разрешений su bin. Мы должны сделать это в эмуляторе устройства через ADB:
adb -e shell su root cd /system/bin chmod 06755 su
Важный!! Обратите внимание на двоичный путь su (мой — / system / bin)
- Установите install директиву на двоичный файл su и установите daemon
и для настройки демона:
Важный!! Обратите внимание на расстояние
Настройка SELinux на Permissive (т.е. отключение SE Linux)
- Наконец выключите selinux через этот код:
Откройте приложение SuperSU и оно может попросить обновить двоичные файлы, вы можете использовать метод Normal.
Примечание: если вы испытываете загрузочные циклы, лучше не обновляйте двоичные файлы, просто используйте их как есть.
Это довольно много !!
Откройте любое приложение, для которого требуются разрешения SU, просто дважды проверьте, и, действительно, SuperSU спросит, хотите ли вы предоставить ему разрешения su.
Чтобы корень сохранялся, обновите su bin (используя метод Normal), затем скопируйте system.img из временного каталога ( Users\AppData\Local\Temp\Android Emulator файл обычно называется случайным образом, например, 1359g.tmp с большим размером) и замените default system.img .
Обновление :
Я заметил, что получить временный образ системы в Linux легче, чем в Windows. Вы можете попробовать использовать снимок изображения.
Обновление 4 августа 2018
С появлением эмулятора 27.3.x это теперь значительно упрощает сохранение root с помощью функции моментальных снимков (если копирование system.img метода не работает):
В идеале это больше похоже на hibernarig виртуальное устройство с неповрежденным config, следовательно, все сохраняется.
Теперь вы можете сохранить несколько снимков AVD для данной конфигурации устройства и выбрать, какие из сохраненных снимков загрузить при запуске эмулятора. Запуск виртуального устройства путем загрузки снимка очень похож на выход физического из спящего режима, в отличие от загрузки его из выключенного состояния.
Это подразумевает, что единственным требованием для запуска эмулятора является добавление -writable-system параметра в обычную emulator -avd [avdname] команду для запуска эмулятора. ( Запуск эмулятора только с emulator -avd [avdname] не запускает рутированную версию / копию или может привести к некоторой ошибке )
Проверено на уровне API 22
Также о проблемах с загрузочным замком читайте в другом посте: Android Emulator: Как избежать цикла загрузки после рутирования? и их обновления.
замечания
Большая часть ссылочного содержимого была для более старых версий Android и, следовательно, причина различных команд и путей, которые я изменил.
Выражение признательности;
Вот список команд, которые вы должны запускать во время работы эмулятора, я тестирую это решение для avd на Android 2.2:
Предполагается, что двоичный файл su находится в рабочем каталоге. Вы можете найти su и суперпользователя здесь: http://forum.xda-developers.com/showthread.php?t=682828 . Вам нужно запускать эти команды каждый раз, когда вы запускаете эмулятор. Вы можете написать скрипт, который запускает эмулятор и рутирует его.
Для 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 и повторить операцию по его созданию.
Для андроида 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 с рутом:
Источник
Google Play и root права для Android Emulator
Хочу поделиться своим опытом набивания шишек добавления Google Play в эмулятор, входящий в состав Android SDK. Вы спросите: «Да что тут может быть сложного? Добавить нужные .apk и пользоваться с удовольствием, об этом уже писали на Хабре тут!«
А вот и нет, подводных камней оказалось достаточно много. О них я расскажу под катом. Кстати, попутно расскажу как получить root права для эмулятора.
Интересно? Добро пожаловать под кат.
UPD: Обновил устаревшие ссылки.
И так, для начала — чем моя инструкция отличается от написанной ранее? Тем, что при использовании Google Play вы не столкнётесь с такой картиной, когда в категориях видно три с половиной приложения. Например вот, в Top Free видно целых два (sic!) приложения.:
Инструкция написана для ОС Windows, но подойдёт и для других поддерживаемых SDK ОС, просто с маленькими изменениями.
Нам потребуется:
Andoid SDK со следующими установленными пакетами:
- Android SDK Tools
- Android SDK Platform-tools
- SDK Platform для Android 2.3.3
- Extras/Android Support
- Extras/Google USB Driver
Обладателям процессоров от Intel с поддержкой виртуализации рекомендую, для начала, проследовать инструкции, недавно опубликованной тут, и создать эмулятор с андроидом 2.3.
Создайте папку с именем GooglePlay и откройте консоль в ней. Это легко сделать, кликнув правой кнопкой в папке, с зажатой клавишей Shift. К сожалению это работает только в Windows Vista и выше. Тем, кто пользуется XP, придётся писать пути для cd.
Теперь нужно скачать кое-какие файлы. Сохраняйте все загрузки в созданную папку.
Мы используем эмулятор 2.3, поэтому берём:
- Google Apps для CyanogenMod 7
- Утилиту mkfs.yaffs2: для ARM эмулятора
- Или же mkfs.yaffs2 для x86 эмулятора
- SuperUser.apk и su для ARM или x86.
После установки всех пакетов — добавьте android-sdk\tools и android-sdk\platform-tools в системный PATH для удобства работы.
Создайте эмулятор для Android 2.3 с помощью AVD Manager, задав размер SD карты в 200-250 мб.
Запустите эмулятор и когда он полностью загрузится — откройте командую строку и введите команду «adb devices«. Вы должны будете увидеть эмулятор в списке подключённых устройств:
Если его там нет — в эмуляторе заходим в настройки (Кнопка меню — Настройки — Приложения — Разработка). Поставьте галочку на пункте «Отладка по USB» и перезапустите эмулятор. Теперь он должен отображаться в списке.
Далее вас ждёт увлекательный не очень ввод кучи консольных команд и ожидание.
Нам понадобятся файлы GoogleServicesFramework.apk, MarketUpdater.apk и Vending.apk из скачанного архива с GoogleApps. Откройте его и скопируйте их в созданную ранее папку.
Теперь нам нужно сделать несколько хитрых хаков для того чтобы нам были доступны все приложения из Google Play, вне зависимости от их требований. Иначе — вас ожидает картина из нескольких одиноких приложений, как было показано выше. Стоит сделать ремарку — запустить неподдерживаемые приложения не получится, но эти хаки позволят скачать эти приложения на девайс и, после, вытащить apk из эмулятора, например.
Это позволит нам видеть приложения, которые требуют архитектуру процессора ARM7 и поддержку версии версии 2.0.
Так же нам нужен архив с permissions, который можно взять здесь.
Перетащите папку permissions из архива в нашу папку GooglePlay.
Эти файлы нужны для приложений, которые требуют определённое оборудование для работы. Например камеру, или акселерометр.
Кстати, насчёт ввода кучи консольных команд я соврал. Хе-хе.
Вам нужно будет всего лишь создать два .bat файлика. Приступим-с.
Первый файл назовите permissions.bat и наполните его таким вот содержанием:
adb push permissions/android.hardware.camera.autofocus.xml /system/etc/permissions/
adb push permissions/android.hardware.camera.flash-autofocus.xml /system/etc/permissions/
adb push permissions/android.hardware.camera.front.xml /system/etc/permissions/
adb push permissions/android.hardware.camera.xml /system/etc/permissions/
adb push permissions/android.hardware.location.gps.xml /system/etc/permissions/
adb push permissions/android.hardware.location.xml /system/etc/permissions/
adb push permissions/android.hardware.sensor.accelerometer.xml /system/etc/permissions/
adb push permissions/android.hardware.sensor.compass.xml /system/etc/permissions/
adb push permissions/android.hardware.sensor.gyroscope.xml /system/etc/permissions/
adb push permissions/android.hardware.sensor.light.xml /system/etc/permissions/
adb push permissions/android.hardware.sensor.proximity.xml /system/etc/permissions/
adb push permissions/android.hardware.telephony.gsm.xml /system/etc/permissions/
adb push permissions/android.hardware.touchscreen.multitouch.jazzhand.xml /system/etc/permissions/
adb push permissions/android.hardware.touchscreen.multitouch.xml /system/etc/permissions/
adb push permissions/android.hardware.touchscreen.xml /system/etc/permissions/
adb push permissions/android.hardware.wifi.xml /system/etc/permissions/
adb push permissions/android.software.live_wallpaper.xml /system/etc/permissions/
adb push permissions/android.software.sip.voip.xml /system/etc/permissions/
adb push permissions/com.android.location.provider.xml /system/etc/permissions/
adb push permissions/features.xml /system/etc/permissions/
adb push permissions/handheld_core_hardware.xml /system/etc/permissions/
adb push permissions/platform.xml /system/etc/permissions/
После — создайте ещё один, с произвольным названием, например make.bat и таким содержанием:
adb remount
adb push build.prop /system/
adb push su /system/bin/
adb push Superuser.apk /system/app/
adb push Vending.apk /system/app/
adb push MarketUpdater.apk /system/app/
adb push GoogleServicesFramework.apk /system/app/
call permissions.bat
adb push mkfs.yaffs2 /data/misc/
adb shell rm /system/app/SdkSetup.apk
adb remount
adb shell chmod 4755 /system/bin/su
adb shell chmod 777 /data/misc/mkfs.yaffs2
adb shell ./data/misc/mkfs.yaffs2 /system /sdcard/system.img
adb pull /sdcard/system.img system.img
adb push su /system/bin/
adb push mkfs.yaffs2 /data/misc/
adb shell chmod 777 /data/misc/mkfs.yaffs2
adb shell ./data/misc/mkfs.yaffs2 /system /sdcard/system.img
adb push su.x86 /system/bin/su
adb push mkfs.yaffs2.x86 /data/misc/
adb shell chmod 777 /data/misc/mkfs.yaffs2.x86
adb shell ./data/misc/mkfs.yaffs2.x86 /system /sdcard/system.img
В итоге содержимое папки GooglePlay должно быть таким:
Теперь — запускайте файл make.bat и начинайте ждать. Имейте ввиду, что последние две команды из файла make.bat будут выполняться долго. Есть маленькая хитрость — что бы ускорить этот процесс нужно что-нибудь делать на эмуляторе. Например, серфить хабрахабр из эмулятора. Я не знаю как и почему, но когда эмулятор нагружен — это здорово ускоряет процесс создания и копирования system.img.
После того, как консоль отрапортует о выполнении своим закрытием, мы обнаружим в рабочей папке файлик system.img. Теперь закроем эмулятор. Не нужно сразу логиниться или устанавливать какие-то приложения — вы потеряете все изменения после перезапуска эмулятора.
Хватайте появившийся system.img и заменяйте им файлик из папки
Не забудьте сделать резервную копию оригинального system.img!
Обратите внимание, что папка android-10 эквивалента для андроида версии 2.3. Для других версий андроида число после android- равно API Level данной версии.
Теперь заходите в папку, в которой у вас находятся файлы эмулятора и удаляйте файлы «cache.img«, «userdata-qemu.img«, «snapshot.img«, «userdata.img«(если он там есть). По умолчанию для Win7 это
После этого запускайте эмулятор, открывайте Google Play, логиньтесь, принимайте условия соглашения и… перезапускайте эмулятор ещё раз, потому что, зачастую, приложения не хотят загружаться сразу после логина.
И вот, после последней перезагрузки, вы наконец-то можете полноценно пользоваться эмулятором.
Надеюсь, моя статья поможет кому-нибудь сохранить время. Спасибо за то, что уделили время на её прочтение.
Источник