Как перезапустить adb от root до пользовательского режима?
Основной вопрос по АБР.
adb root
перезапускает adb как root. Но я хочу перезапустить его обратно пользователю через некоторое время.
Я попробовал следующее:
adb kill-server
adb start-server
не работает.
ps -A
→ отметил номер процесса adb и убил его.. даже это не сработало. Наконец, я перезапускаю свое устройство. Есть ли способ вернуться из корневого adb в общий adb?
Спасибо.
Ответы
Ответ 1
Немного поздно, я думаю, но вот он идет:
Если вы использовали - "adb root", у вас появилось бы следующее сообщение:
C:\>adb root
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
restarting adbd as root
чтобы выйти из корневого режима, вы можете использовать:
C:\>adb unroot
restarting adbd as non root
Ответ 2
adb kill-server
и adb start-server
управляют только демонами adb
на стороне ПК. Вам необходимо перезапустить демон adbd
на самом устройстве после возврата изменения свойства service.adb.root
, сделанного adb root
:
~$ adb shell id
uid=2000(shell) gid=2000(shell)
~$ adb root
restarting adbd as root
~$ adb shell id
uid=0(root) gid=0(root)
~$ adb shell 'setprop service.adb.root 0; setprop ctl.restart adbd'
~$ adb shell id
uid=2000(shell) gid=2000(shell)
Ответ 3
Попробуйте, чтобы вы вернули оболочку:
введите команду adb shell (root). Затем введите ниже comamnd.
stop adbd && setprop service.adb.root 0 && start adbd &
Эта команда будет stop adbd
, затем setprop service.adb.root 0
, если adbd
успешно прошла stop
ped, и, наконец, re start adbd
, если свойство .root
было успешно установлено на 0. И все это будет сделанный в фоновом режиме благодаря последнему &
.
Ответ 4
Я хотел бы добавить немного больше объяснений для ответа @user837048. на моем OSX Yosemite и Galaxy S3, которые внедрены и используют прошивку CyanogenMod 11
и KitKat
. Я сделал приведенные ниже процедуры в Enable
и Disable
корневой строке.
Пожалуйста, убедитесь, что ниже
Если вы не видите Developer Options
в своих настройках, выберите "Настройки" > "О телефоне". Прокрутите вниз до Build number
и коснитесь его 7 раз. Я знаю его сумасшедший. Но поверьте мне, это работает: D
Подключите телефон через USB-кабель.
типа на терминале computer's
$ adb shell
вы увидите подсказку similiar, Если на вашем мобильном телефоне было показано какое-либо приглашение, чтобы доверять соединению, нажмите "Всегда доверять" и "ОК"
[email protected]:/ $
теперь введите
[email protected]:/ $ id
uid=2000(shell) gid=2000(shell) groups=1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats) context=u:r:shell:s0
Увидите, что вы not root
Теперь выйдите из оболочки, которая вернется к computer prompt
[email protected]:/ $ exit
Теперь активируйте root
$adb shell
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
[email protected]:/ #
Вау.. вы root
[email protected]:/ # id
uid=0(root) gid=0(root) context=u:r:shell:s0
Я попробовал много решений вернуться к normal non root prompt
. Но не работал, кроме @user837048.
[email protected]:/ # stop adbd && setprop service.adb.root 0 && start adbd &
[1] 32137
[email protected]:/ #
$
Это может привести к выходу из Adb prompt
в обычное приглашение. Теперь подключитесь снова.
$ adb shell
[email protected]:/ $
Ну.. Вы не root
Ответ 5
Для быстрых шагов просто проверьте summary. Если вас интересует информация, прочтите ниже.
adb - демон. Выполняя ps adb
, мы можем видеть его процесс.
[email protected]:/ $ ps adb
USER PID PPID VSIZE RSS WCHAN PC NAME
shell 133 1 4636 212 ffffffff 00000000 S /sbin/adbd
Я только что проверил, какие дополнительные переменные свойства он использует, когда adb работает как root и пользователь.
Режим пользователя adb:
[email protected]:/ $ getprop | grep adb
[init.svc.adbd]: [running]
[persist.sys.usb.config]: [mtp,adb]
[ro.adb.secure]: [1]
[sys.usb.config]: [mtp,adb]
[sys.usb.state]: [mtp,adb]
Режим adb root:
[email protected]:/ # getprop | grep adb
[init.svc.adbd]: [running]
[persist.sys.usb.config]: [mtp,adb]
[ro.adb.secure]: [1]
[service.adb.root]: [1]
[sys.usb.config]: [mtp,adb]
[sys.usb.state]: [mtp,adb]
Мы видим, что service.adb.root
- это новая переменная prop, которая появилась, когда мы сделали adb root.
Итак, чтобы изменить adb на пользователя от root, я пошел вперед и сделал это 0
setprop service.adb.root 0
Но это ничего не изменило.
Затем я пошел вперед и убил процесс (с намерением перезапустить процесс). Процесс pid
adbd
в моем устройстве 133
kill -9 133
Я вышел из оболочки автоматически после того, как я убил процесс.
Я сделал adb shell
снова в режиме пользователя.
РЕЗЮМЕ:
Итак, у нас есть 3 очень простых шага.
- Введите оболочку adb в качестве корня.
- setprop service.adb.root 0
- kill -9
(pid of adbd)
После этих шагов просто заново введите оболочку с помощью adb shell
, и вы вернетесь на свое устройство в качестве пользователя.
Ответ 6
У меня была эта проблема с использованием элементарной ОС loki. Как один день, и я решил перезапустить adb с помощью этой команды:
./adb kill-server
и
./adb start-server
Вы должны находиться в папке Sdk > Инструменты платформы
Теперь перезагрузите телефон, это перезапустит весь процесс на вашем телефоне.
И как я его исправил.
Ответ 7
если вы не можете получить доступ к папке с данными на Android Device Monitor
CMD
C:\Users\bscis\AppData\Local\Android\sdk\platform-tools
(Where you located sdk folder)
C:\Users\bscis\AppData\Local\Android\sdk\platform-tools>adb shell
generic_x86:/ $
C:\Users\bscis\AppData\Local\Android\sdk\platform-tools>adb kill-server
C:\Users\bscis\AppData\Local\Android\sdk\platform-tools>adb start-server
* daemon not running. starting it now at tcp:5037 *
* daemon started successfully *
C:\Users\bscis\AppData\Local\Android\sdk\platform-tools>adb root
C:\Users\bscis\AppData\Local\Android\sdk\platform-tools>
работает нормально.....
Ответ 8
Это очень распространенная проблема.
Одним из решений является убить сервер adb и перезагрузить через командную строку. Иногда это может не помочь.
Просто зайдите в Window Task Manager, чтобы убить процесс adb и перезапустить Eclipse.
Будет работать отлично:)