Mam wszystkie wersje Android SDK (od 1.5 do 2.3.3) i próbowałem wielu metod na uzyskanie roota w emulatorze Androida. Nie używam żadnego urządzenia z Androidem i testuję wszystko na emulatorze (AVD).
Aby móc korzystać z funkcji „iptables” i „busybox”, muszę uzyskać uprawnienia administratora w dowolnym emulatorze Androida. Aby używać iptables, muszę mieć uprawnienia administratora. Co najmniej polecenie „su” powinno być wykonywane w emulatorze terminala.
Zainstalowałem też z4root
aplikację,
Ale zajmuje to bardzo dużo czasu i nie kończy rootowania i utknie. niektórzy twierdzą, że jeśli obniżymy system do wersji poniżej RC30, w ten sposób uzyskamy dostęp do roota. jeśli to prawda, to jak to zrobić? Używam zarówno systemu operacyjnego Linux, jak i Windows.
Niech ktoś mi powie jakąkolwiek metodę rootowania mojego emulatora.
źródło
Odpowiedzi:
Te odpowiedzi są niepotrzebnie skomplikowane :)
źródło
adb root
wyników w trybie „adbd nie może działać jako root w kompilacjach produkcyjnych”. Czy używasz konkretnego emulatora? Podaj więcej szczegółów.adb root
wyświetla błądadbd cannot run as root in production builds
, wejdź na stackoverflow.com/a/45668555/1682419 - Potrzebujesz „Obraz systemu interfejsów API Google” zamiast „Obraz systemu Google Play”.Jak zrootować emulator Androida (testowany na Androidzie 7.1.1 / Nougat)
Wymagania :
Aplikacja SuperSU (chainfire) Najnowsza wersja 2.82.0
Odzyskiwanie flashable.zip (zawiera su binarne)(Oto alternatywny link do kopii zapasowej dostarczony przez użytkownika XDA Ibuprophen dla flashowalnych zamków błyskawicznych, jeśli główny link nie działa: Flashowalne wydania zip )Instrukcje
Zainstaluj plik SuperSu.apk
Najpierw zainstaluj aplikację SuperSu, po prostu przeciągnij i upuść (jeśli używasz najnowszej wersji emulatora lub sideload przez adb ie
adb -e install supersu.apk
)Po zainstalowaniu, po uruchomieniu wyświetla się ekran, jak pokazano poniżej, z informacją „Nie ma zainstalowanego pliku binarnego SU ..”. Ten błąd potwierdza tylko, że urządzenie nie jest jeszcze zrootowane.
Udostępnij partycję systemową emulatora do zapisu
Jak sugeruje, musimy dać emulatorowi uprawnienia do zapisu plików systemowych.
Wpisz następujący kod, aby to osiągnąć:
emulator -avd {emulator_name} -writable-system
Jeśli masz więcej niż jeden AVD, możesz uzyskać listę AVD za pomocą polecenia:
emulator -list-avds
Uwaga: przejdź do folderu narzędzi, w którym jest zainstalowany Android SDK, i otwórz tam wiersz polecenia, naciskając klawisz Shift i klikając prawym przyciskiem myszy.
Wysłanie pliku binarnego su do katalogu systemowego
Ważny! Używaj tylko pliku binarnego su, który pasuje do Twojej architektury avd, np. X86, arm itp., I zanotuj ścieżkę, w której rozpakowałeś te pliki binarne.
adb root
adb remount
Nadszedł czas, aby przesunąć plik binarny su:
Oto kod, którego z powodzeniem użyłem :
adb -e push C:\Users\User1\Desktop\rootemu\x86\su.pie /system/bin/su
(nieważne o mojej konkretnej lokalizacji su binarnej, każda lokalizacja jest w porządku, o ile nie ma spacji)
Uwaga: Aby dowiedzieć się
bin
lubxbin
zrobić w konsoli wcześniej:>adb shell
,>ls /system/xbin/su
Jeśli to się nie powiedzie, spróbuj zamiast tego wypchnąć do tego katalogu
/system/xbin/su
. Również w przypadku emulatorów z systemem Android 5.1 i starszym użyjsu
i niesu.pie
Zmień uprawnienia pliku binarnego su
adb -e shell su root cd /system/bin chmod 06755 su
Ważny!! Zwróć uwagę na ścieżkę binarną su (moja to / system / bin)
install
dyrektywę na su binarny i ustaw plikdaemon
Wpisz kody:
su --install
i do skonfigurowania demona:
su --daemon&
Ważny!! Zwróć uwagę na odstępy
Ustawienie SELinux na Permissive (tj. Wyłączenie SE Linux)
setenforce 0
Otwórz aplikację SuperSU i może poprosić o aktualizację plików binarnych, możesz użyć metody Normal.
Uwaga: jeśli doświadczasz pętli rozruchowych, raczej nie aktualizuj plików binarnych, po prostu używaj ich tak, jak jest.
To prawie wszystko !!
Otwórz dowolną aplikację wymagającą uprawnień SU, aby dokładnie sprawdzić, a SuperSU zapytaj, czy chcesz przyznać jej uprawnienia su.
Aby utrwalić aktualizację roota jako binarną (używając metody Normal), skopiuj system.img z katalogu tymczasowego (
Users\AppData\Local\Temp\Android Emulator
plik ma zwykle losową nazwę, np. O1359g.tmp
dużym rozmiarze) i zamień domyślnysystem.img
.Aktualizacja :
Zauważyłem, że łatwiej jest uzyskać tymczasowy obraz systemu w systemie Linux niż w systemie Windows. Możesz spróbować użyć migawki.
Aktualizacja 4 sierpnia 2018 r
Wraz z pojawieniem się emulatora
27.3.x
znacznie ułatwia to zachowanie roota dzięki funkcji migawki (jeśli kopiowaniesystem.img
metody nie działa):Idealnie byłoby bardziej jak hibernarig wirtualnego urządzenia z nienaruszoną konfiguracją, stąd wszystko jest zachowane.
Migawki
Oznacza to, że jedynym wymaganiem do uruchomienia emulatora jest dodanie
-writable-system
parametru do zwykłegoemulator -avd [avdname]
polecenia, aby uruchomić emulator. ( Uruchomienie emulatora tylko zemulator -avd [avdname]
nie uruchamia zrootowanej wersji / kopii lub może prowadzić do błędu )Testowane na poziomie API 22
Również w przypadku problemów z bootloopem zobacz inny post: Emulator Androida: Jak uniknąć pętli rozruchowej po rootowaniu? i ich aktualizacje.
Uwagi
Większość treści w odniesieniu do starszych wersji Androida, stąd powód dla różnych poleceń i ścieżek, które zmodyfikowałem.
Podziękowanie;
Irvin H: Rootowanie emulatora Androida - w Android Studio 2.3 ((Android 4.4)
Brak dostępu do roota AVD w systemie Android
źródło
su --install && su --daemon&
na emulatorze, a następniesetenforce 0
uzyskać roota. Czy znasz jakieś trwałe rozwiązanie problemu roota przy ponownym uruchomieniu?Oto lista poleceń, które musisz wykonać podczas działania emulatora, testuję to rozwiązanie dla avd na Androidzie 2.2:
Zakłada, że plik binarny su znajduje się w katalogu roboczym. Możesz znaleźć su i superuser tutaj: http://forum.xda-developers.com/showthread.php?t=682828 . Te polecenia należy uruchamiać za każdym razem, gdy uruchamiasz emulator. Możesz napisać skrypt, który uruchomi emulator i zrootuje go.
źródło
-partition-size
opcję określenia rozmiaru partycji. Spróbuj uruchomić emulator ztools/emulator -avd MyAndroidVirtualDeviceName -partition-size 256
adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
:adb root
adb remount
Dla AVD z 5.1.1 i 6.0 użyłem następnego skryptu w Windows:
Potrzebujesz UPDATE.zip z SuperSU. Rozpakowałem je do dowolnego folderu. Utwórz plik bat z zawartością powyżej. Nie zapomnij określić niezbędnej architektury i urządzenia:
set adb=adb -s emulator-5558
iset arch=x64
. Jeśli używasz Androida w wersji wyższej lub równej 5.0, zmieńset pie=
naset pie=.pie
. Uruchom. Otrzymujesz tymczasowy root do bieżącego uruchomienia.Jeśli pojawił się błąd przy ponownym zamontowaniu partycji systemowej, musisz uruchomić AVD z wiersza poleceń. Zobacz poniżej pierwszy krok dla Androida 7.
Jeśli chcesz, aby był trwały - zaktualizuj plik binarny w SuperSU i zapisz system.img z folderu temp jako zamiennik domyślnego system.img.
Jak przekonwertować wynikowy tymczasowy katalog główny na stały plik
Po pierwsze - trafia do SuperSu. Oferuje aktualizację binarną. Aktualizuj w normalny sposób. Reboot odrzuca.
Po drugie - dotyczy tylko emulatorów. To samo AVD. Najważniejsze jest to, że zmiany w obrazie systemu nie zostaną zapisane. Musisz je zatrzymać dla siebie.
Istnieją już różne instrukcje dla różnych emulatorów.
W przypadku AVD możesz spróbować znaleźć tymczasowy plik system.img, zapisać go gdzieś i użyć po uruchomieniu emulatora.
W systemie Windows znajduje się w
%LOCALAPPDATA%\Temp\AndroidEmulator
i ma nazwę podobną doTMP4980.tmp
.Kopiujesz go do folderu avd device (
%HOMEPATH%\.android\avd\%AVD_NAME%.avd\
) i zmieniasz jego nazwę nasystem.img
.Teraz będzie używany na początku zamiast zwykłego. Prawda, jeśli obraz w SDK zostanie zaktualizowany, będzie miał stary.
W takim przypadku będziesz musiał to usunąć
system.img
i powtórzyć operację przy jego tworzeniu.Bardziej szczegółowa instrukcja w języku rosyjskim: http://4pda.ru/forum/index.php?showtopic=318487&view=findpost&p=45421931
W przypadku systemu Android 7 należy wykonać dodatkowe czynności: 1. Należy ręcznie uruchomić emulator. Przejdź do folderu sdk
sdk\tools\lib64\qt\lib
. Uruchom z tego emulatora folderu z opcjami takimi-writable-system -selinux disabled
jak ta:Musisz zrestartować
adbd
z roota:emulator adb -s-5554 root
I ponownie zamontuj system:
Można go przekazać tylko raz na emulator przebiegu. Każde inne ponowne zamontowanie może przerwać tryb zapisu. Z tego powodu nie musisz uruchamiać żadnych innych poleceń z ponownym montowaniem, takich jak
mount -o remount,rw /system
.Kolejne kroki pozostają takie same - prześlij plik binarny, uruchom plik binarny jako demon i tak dalej.
Zdjęcie z AVD Android 7 x86 z rootem:
Jeśli widzisz błąd dotyczący PIE przy wykonywaniu
su
pliku binarnego - przesyłasz do emulatora zły plik binarny. Musisz przesłać plik binarny o nazwiesu.pie
wewnątrz archiwum, ale na emulatorze musi on mieć nazwę, asu
niesu.pie
.źródło
update binary in SuperSU and store system.img from temp folder as replace of default system.img.
Uważam, że najłatwiej jest stworzyć alias do polecenia
sh
npTestowane na Android Emulator 3.0 i nowszych.
źródło
mount: '/system' not in /proc/mounts
Tutaj mój pakiet ze wszystkim, czego potrzebujesz. Lub możesz użyć tego skryptu:
źródło
Właśnie wymieniłem i przypisałem atrybuty su do ~ / Android / Sdk / system-images / android-22 / google_apis / x86 / system.img i teraz na Androidzie 5 zawsze mam roota nawet dla nowych systemów, wystarczy zainstalować SuperSu. apk
po tym SuperSu.apk widzi root. Ale nie aktualizuję pliku binarnego
źródło
Wykorzystałem część metody z powyższych rozwiązań; jednak nie działały całkowicie. W najnowszej wersji Andy to zadziałało:
Na Andy (Root Shell) [Aby uzyskać, kliknij prawym przyciskiem myszy ikonę HandyAndy i wybierz Term Shell]
Wewnątrz powłoki uruchom następujące polecenia:
Następnie zainstaluj SuperSU i zainstaluj plik binarny SU. Zastąpi to plik binarny SU, który właśnie utworzyliśmy. (Opcjonalnie) Usuń SuperSU i zainstaluj Superuser przez CWM. Zainstaluj ponownie plik binarny su. Teraz root działa!
źródło
Wypróbowałem wiele z powyższych sugestii, w tym SuperSU i nie mogłem uruchomić żadnej, ale znalazłem coś znacznie prostszego, co działało dla moich celów. W moim przypadku chciałem mieć możliwość uruchamiania sqlite w wierszu poleceń. Po prostu uruchomiłem emulator ze starszą wersją Androida (Lollipop) i natychmiast uzyskałem dostęp do roota.
źródło
Zauważyłem, że domyślny emulator API 23 x86_64 jest domyślnie zrootowany.
źródło