Подтвердить что ты не робот

Как перезапустить adb от root до пользовательского режима?

Основной вопрос по АБР.

adb root перезапускает adb как root. Но я хочу перезапустить его обратно пользователю через некоторое время.

Я попробовал следующее:

adb kill-server
adb start-server

не работает.

ps -A → отметил номер процесса adb и убил его.. даже это не сработало. Наконец, я перезапускаю свое устройство. Есть ли способ вернуться из корневого adb в общий adb?

Спасибо.

4b9b3361

Ответ 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 корневой строке.

Пожалуйста, убедитесь, что ниже

  • В вашей системе

    • Убедитесь, что вы установили Android SDK, и вы установили пути к двоичным файлам. введите which adb на свою оболочку. Это должно дать вам несколько результатов. $ which adb /Applications/Android Studio.app/sdk/platform-tools/adb
  • На вашем мобильном устройстве

    • Настройки > Параметры разработчикa > Отладка Android = ON
    • Настройки > Параметры разработчикa > Root Access = Apps and ADB

Если вы не видите 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.

Будет работать отлично:)