Я рутировал свой разблокированный Galaxy S3 (SGH-T999)
Теперь я пытаюсь запустить adb root
из командной строки Windows , но получаю сообщение adbd cannot run as root in production builds
об ошибке. Итак, первое, что я проверил, было действительно ли мой телефон рутирован?
Итак, я попробовал следующее:
Открыть командную строку
$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.**
Однако когда я это делаю adb root
, я получаю adbd cannot run as root in production builds
ошибку. Так что, подумал я, мне, возможно, придется сделать еще кое-что помимо того, что я сделал выше. Я попробовал все решения в следующих вопросах SO:
- Запускаем скрипт как root через ADB
- В разрешении adb remount отказано, но есть возможность получить доступ к суперпользователю в оболочке - android
- Невозможно запустить adb root на рутированном телефоне Android
У меня ничего из вышеперечисленного не сработало. Все, что они делают, это дают ROOT доступ ВНУТРИ ОБОЛОЧКИ. Я хочу adb root
работать так, чтобы я мог выполнять различные команды adb БЕЗ входа в оболочку.
Ответы:
По конструкции
adb root
команда работает в разработке строит только (то естьeng
иuserdebug
которых естьro.debuggable=1
по умолчанию). Итак, чтобы включитьadb root
команду на вашем устройстве с рут- правами, просто добавьтеro.debuggable=1
строку в один из следующих файлов:Если хотите
adb shell
запустить какroot
по умолчанию - тоro.secure=0
тоже добавляйте .В качестве альтернативы вы можете использовать модифицированный
adbd
двоичный файл (который не проверяетro.debuggable
)С 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.
источник
В некоторых удобных для разработчиков ПЗУ вы можете просто включить рут-доступ в « Настройки»> «Разработчик»> «Корневой доступ» . После этого
adb root
становится доступным. К сожалению, это не работает для большинства стандартных прошивок на рынке.источник
Я столкнулся с этой проблемой при попытке получить root-доступ к эмулятору, я обнаружил, что это потому, что я запускал эмулятор Nexus 5x, на котором был Google Play. Создал другой эмулятор, у которого не было Google Play, и он
adb root
будет рутировать устройство за вас. Надеюсь, это кому-то поможет.источник
Я использую для входа в режим su в оболочке abd
adb shell "su"
источник
adb shell "su -c whoami"
У меня рутированный Samsung Galaxy Trend Plus (GT-S7580).
Запуск 'adb root' дает мне ту же ошибку 'adbd не может работать как root в производственных сборках'.
Для устройств, у которых есть параметры разработчика -> Root-доступ, выберите «ADB only», чтобы предоставить устройству root-доступ по adb (как предлагает NgaNguyenDuy ).
Затем попробуйте выполнить команду в соответствии с решением в разделе Запуск сценария от имени пользователя root через ADB . В моем случае я просто хотел запустить команду netcfg rndis0 dhcp, и сделал это следующим образом:
adb shell "su -c netcfg rndis0 dhcp"
Пожалуйста, проверьте, не допускаете ли вы ошибок при использовании этого способа.
Если он по-прежнему не работает, проверьте, правильно ли вы рутировали устройство. Если по-прежнему не повезло, попробуйте установить пользовательское ПЗУ, такое как Cyanogen Mod, чтобы «adb root» работал.
источник
Вам необходимо заменить двоичный файл adbd в папке boot.img / sbin / на тот, который поддерживает su. Вам также придется внести некоторые правки в default.prop.
Samsung, похоже, делает это сложнее, чем другие производители. У меня есть несколько двоичных файлов adbd, которые вы можете попробовать, но для этого потребуются знания о декомпиляции и повторной компиляции boot.img с новым двоичным кодом. Кроме того, если у вас заблокирован загрузчик ... этого не произойдет.
Также у Chainfire есть приложение, которое будет предоставлять root-права adbd в игровом магазине: https://play.google.com/store/apps/details?id=eu.chainfire.adbd&hl=en
Наконец, если вы пытаетесь написать сценарий Windows с разрешениями SU, вы можете сделать это, используя следующий стиль команд ... Однако вам, по крайней мере, потребуется предоставить (по телефону) разрешения SU при первом запуске .. .
adb shell "su -c ls" <-list рабочий каталог с правами su. оболочка adb "su -c echo anytext> /data/test.file"
Это всего лишь несколько примеров. Если вы конкретно укажете, чего вы пытаетесь достичь, я могу дать более конкретный совет.
-скослер
источник
adbd
имеет компиляции флаг / параметр , чтобы разрешить доступ корня:ALLOW_ADBD_ROOT=1
.До Android 9: если
adbd
ваше устройство скомпилировано без этого флага, оно всегда будет терять привилегии при запуске и, таким образом, «adb root» не поможет вообще. Я должен был залатать вызовы кsetuid()
,setgid()
,setgroups()
а также возможность выпадает из двоичных себя , чтобы получить постоянно коренятся adbd на моем чтения электронных книг.С Android 10 это изменилось; когда телефон / планшет разблокирован (
ro.boot.verifiedbootstate == "orange"
) то режим adb root возможен в любом случае.источник
Если вам действительно нужно
ADB
запускать от имениroot
, самый быстрый и простой способ - установить Android Custom ROMs, а самый популярный -CyanogenMod
этоRoot Access
опции в меню параметров разработчика, где вы можете предоставить root-доступ кapps and ADB
. Раньше я использовал CM, но поскольку он больше не был разработан, я попытался найти какие-то решения. Хотя CyanogenMod по-прежнему является хорошей альтернативой, поскольку в нем нет вредоносного ПО.Одна альтернатива, которую я узнал от друга, - это использовать
adbd insecure
приложение, которое вы можете попробовать отсюда: https://forum.xda-developers.com/showthread.php?t=1687590 . В моем случае он отлично работает с пользовательским ядром Android, но не со стандартным ПЗУ Android (только ванильный Android). Вы также можете попробовать другие альтернативы, такие как изменениеboot.img
ПЗУ Android.источник