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

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

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

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

 adb kill-server adb start-server 

Не работает ..

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

Спасибо.

Solutions Collecting From Web of "Как перезапустить adb от root к пользовательскому?"

Немного поздно, я думаю, но вот оно: Если вы использовали – «adb root», у вас появилось бы следующее сообщение:

 C:\>adb root * daemon not running. starting it now on port 5037 * * daemon started successfully * restarting adbd as root 

Для выхода из режима root вы можете использовать:

 C:\>adb unroot restarting adbd as non root 

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) 

Попробуйте это, чтобы убедиться, что вы вернете оболочку:

Введите команду adb shell (root). Затем введите ниже comamnd.

 stop adbd && setprop service.adb.root 0 && start adbd & 

Эта команда stop adbd , а затем setprop service.adb.root 0 если adbd успешно stop adbd и, наконец, start adbd если свойство .root было успешно установлено на 0. И все это будет сделано в фоновом режиме благодаря Последний & .

Я хотел бы добавить немного больше объяснений в ответ @ user837048. На моем OSX Yosemite и Galaxy S3, который внедрен и использует прошивку CyanogenMod 11 и KitKat я сделал следующие действия для Enable и Disable командной строки.

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

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

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

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

Если вы не видите Developer Options в своих настройках, выберите «Настройки»> «О телефоне». Прокрутите вниз до Build number и нажмите там 7 раз. Я знаю его сумасшедший. Но поверьте мне, это работает: D

Подключите телефон через USB-кабель. Типа на терминале вашего computer's

 $ adb shell 

Вы увидите подсказку similiar. Если на вашем мобильном телефоне было показано какое-либо приглашение, чтобы доверять соединению, нажмите «Всегда доверять» и «ОК»,

 shell@m0:/ $ 

Теперь введите

 shell@m0:/ $ 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's prompt

 shell@m0:/ $ exit 

Теперь активируйте root

 $adb shell * daemon not running. starting it now on port 5037 * * daemon started successfully * root@m0:/ # 

Вау .. ты корень

 root@m0:/ # id uid=0(root) gid=0(root) context=u:r:shell:s0 

Я попробовал множество решений, чтобы вернуться в normal non root prompt . Но не работал, кроме решения @ user837048.

 root@m0:/ # stop adbd && setprop service.adb.root 0 && start adbd & [1] 32137 root@m0:/ # $ 

Это может привести к выходу из Adb prompt в обычное приглашение. Теперь подключитесь снова.

 $ adb shell shell@m0:/ $ 

Ну .. Ты не root

Для быстрых шагов просто проверьте сводку . Если вас интересует информация, прочтите ниже.

Adb – демон. Выполняя ps adb мы можем видеть его процесс.

 shell@grouper:/ $ ps adb USER PID PPID VSIZE RSS WCHAN PC NAME shell 133 1 4636 212 ffffffff 00000000 S /sbin/adbd 

Я только что проверил, какие дополнительные переменные свойства он использует, когда adb работает как root и пользователь.

Пользовательский режим adb:

 shell@grouper:/ $ 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:

 shell@grouper:/ # 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 простых шага.

  1. Введите оболочку adb в качестве корня.
  2. Setprop service.adb.root 0
  3. Kill -9 (pid of adbd)

После этих шагов просто заново введите оболочку с оболочкой adb shell и вы вернетесь на свое устройство в качестве пользователя.

Я был с этой проблемой, используя элементарные ОС loki. Как один день, и я решил перезапустить adb с помощью этой команды:

 ./adb kill-server 

а также

 ./adb start-server 

Вы должны находиться в папке Sdk> Инструменты платформы

Теперь перезагрузите телефон, это перезапустит весь процесс на вашем телефоне.

И вот как я его исправил.

Если вы не можете получить доступ к папке с данными на 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> 

Работая нормально …..

Это очень распространенная проблема.

Одним из решений является уничтожение сервера adb и перезапуск его в командной строке. Иногда это может не помочь.

Просто зайдите в Window Task Manager, чтобы убить процесс adb и перезапустить Eclipse.

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