Zrootowałem odblokowanego Galaxy S3 (SGH-T999)
Teraz próbuję uruchomić adb root
z wiersza polecenia systemu Windows , jednak pojawia się adbd cannot run as root in production builds
błąd. Więc pierwszą rzeczą, którą sprawdziłem, było to, czy mój telefon jest naprawdę zrootowany?
Więc spróbowałem następujących rzeczy:
Otwórz wiersz polecenia
$adb devices // lists my device
$adb shell //goes to shell
$su // opens a 'SuperSu' prompt on my phone and I 'Grant' permission
# // Before following the rooting instructions, I was getting 'no su command found' in the previous step. So, I believe my phone is ROOTED. **Correct me if I'm wrong.**
Jednak kiedy to robię, pojawia adb root
się adbd cannot run as root in production builds
błąd. Pomyślałem więc, że być może będę musiał zrobić kilka dodatkowych rzeczy poza tym, co zrobiłem powyżej. Wypróbowałem wszystkie rozwiązania w następujących pytaniach SO:
- Uruchom skrypt jako root przez ADB
- Odmowa uprawnienia do ponownego montażu adb, ale możliwość uzyskania dostępu do superużytkownika w powłoce - Android
- Nie można uruchomić „adb root” na zrootowanym telefonie z Androidem
Żadne z powyższych nie działało dla mnie. Wszystko, co robią, to daje ROOTowi dostęp WEWNĄTRZ SHELL. Chcę adb root
pracować, aby móc wykonywać różne polecenia adb BEZ wchodzenia w powłokę.
Odpowiedzi:
adb root
Polecenie Zgodnie z projektem działa tylko w kompilacjach deweloperskich (tj.eng
Iuserdebug
które mająro.debuggable=1
domyślnie). Aby włączyćadb root
polecenie na urządzeniu zrootowanym w inny sposób , po prostu dodajro.debuggable=1
wiersz do jednego z następujących plików:Jeśli chcesz
adb shell
zacząćroot
domyślnie - dodajro.secure=0
również.Alternatywnie możesz użyć zmodyfikowanego
adbd
pliku binarnego (który nie sprawdzaro.debuggable
)Z https://android.googlesource.com/platform/system/core/+/master/adb/daemon/main.cpp
#if defined(ALLOW_ADBD_ROOT) // The properties that affect `adb root` and `adb unroot` are ro.secure and // ro.debuggable. In this context the names don't make the expected behavior // particularly obvious. // // ro.debuggable: // Allowed to become root, but not necessarily the default. Set to 1 on // eng and userdebug builds. // // ro.secure: // Drop privileges by default. Set to 1 on userdebug and user builds.
źródło
W niektórych przyjaznych dla programistów ROMach można po prostu włączyć dostęp do roota w Ustawienia> Opcja programisty> Dostęp do roota . Po tym stanie
adb root
się dostępny. Niestety nie działa z większością dostępnych na rynku pamięci ROM.źródło
Napotkałem ten problem podczas próby zrootowania emulatora, dowiedziałem się, że to dlatego, że korzystałem z emulatora Nexus 5x, który miał Google Play. Utworzono inny emulator, który nie ma Google Play i
adb root
zrootuje urządzenie. Mam nadzieję, że to komuś pomoże.źródło
Używam do wejścia w tryb su w powłoce abd
powłoka adb „su”
źródło
adb shell "su -c whoami"
Mam zrootowanego Samsunga Galaxy Trend Plus (GT-S7580).
Uruchomienie „adb root” daje mi ten sam błąd „adbd nie może działać jako root w kompilacjach produkcyjnych”.
W przypadku urządzeń, które mają opcje programisty -> dostęp do roota, wybierz „tylko ADB”, aby zapewnić dostęp root adb do urządzenia (zgodnie z sugestią NgaNguyenDuy ).
Następnie spróbuj uruchomić polecenie zgodnie z rozwiązaniem w Uruchom skrypt jako root przez ADB . W moim przypadku chciałem po prostu uruchomić polecenie `` netcfg rndis0 dhcp '' i zrobiłem to w ten sposób:
adb shell "su -c netcfg rndis0 dhcp"
Sprawdź, czy nie popełniasz błędów podczas uruchamiania go w ten sposób.
Jeśli nadal nie działa, sprawdź, czy poprawnie zrootowałeś urządzenie. Jeśli nadal nie masz szczęścia, spróbuj zainstalować niestandardową pamięć ROM, taką jak Cyanogen Mod , aby „adb root” działał.
źródło
Musisz zamienić plik binarny adbd w folderze boot.img / sbin / na taki, który obsługuje su. Będziesz także musiał wprowadzić pewne zmiany w pliku default.prop.
Wydaje się, że Samsung sprawia, że jest to trudniejsze niż inni dostawcy. Mam kilka plików binarnych adbd, które możesz wypróbować, ale będzie to wymagało wiedzy na temat dekompilacji i ponownej kompilacji pliku boot.img z nowym plikiem binarnym. Ponadto, jeśli masz zablokowany program ładujący ... to się nie stanie.
Chainfire ma również aplikację, która przyzna uprawnienia roota adbd w sklepie Play: https://play.google.com/store/apps/details?id=eu.chainfire.adbd&hl=en
Na koniec, jeśli próbujesz napisać skrypt systemu Windows z uprawnieniami SU, możesz to zrobić, kupując za pomocą następującego stylu poleceń ... Jednak będziesz musiał przynajmniej przyznać (przez telefon) uprawnienia SU w pierwszym czasie jego uruchomienia. .
powłoka adb "su -c ls" <-list katalog roboczy z prawami su. powłoka adb „su -c echo anytext> /data/test.file”
To tylko kilka przykładów. Jeśli szczegółowo określisz, co próbujesz osiągnąć, być może będę mógł udzielić bardziej szczegółowych porad
-scosler
źródło
adbd
ma kompilacji flagi / opcję, aby umożliwić dostęp do konta root:ALLOW_ADBD_ROOT=1
.Aż do Androida 9: Jeśli
adbd
na twoim urządzeniu zostanie skompilowane bez tej flagi, zawsze zrzuci uprawnienia podczas uruchamiania, a zatem „adb root” w ogóle nie pomoże. Miałem załatać połączenia dosetuid()
,setgid()
,setgroups()
i zdolność odpada od binarnego się dostać na stałe zakorzenione adbd na mój czytnik ebook.Z Androidem 10 to się zmieniło; gdy telefon / tablet jest odblokowany (
ro.boot.verifiedbootstate == "orange"
), w każdym przypadku możliwy jest tryb root adb.źródło
Jeśli naprawdę potrzebujesz
ADB
uruchomić jakoroot
, najszybszym i najłatwiejszym sposobem jest zainstalowanie niestandardowych ROM-ów z Androidem, a najpopularniejszym jestCyanogenMod
to, że maRoot Access
opcje w menu opcji programisty, w których możesz przyznać uprawnienia rootaapps and ADB
. Używałem CM wcześniej, ale ponieważ nie był już rozwijany, próbowałem tam znaleźć jakieś rozwiązania. Chociaż CyanogenMod jest nadal dobrą alternatywą, ponieważ nie ma nadużyć.Jedną z możliwości, o której dowiedziałem się od znajomego, jest
adbd insecure
aplikacja, którą możesz wypróbować tutaj: https://forum.xda-developers.com/showthread.php?t=1687590 . W moim przypadku działa doskonale z niestandardowym jądrem Androida, ale nie z pamięcią ROM systemu Android (tylko waniliowy Android). Możesz także wypróbować inne alternatywy, takie jak modyfikacjaboot.img
pamięci ROM systemu Android.źródło