53

关于亚行的基本问题。

adb root以 root 身份重新启动 adb。但我想要的是在一段时间后重新启动它给用户。

我尝试了以下方法:

adb kill-server
adb start-server

不工作..

ps -A-> 记下 adb 的进程号并将其杀死.. 即使这样也没有用。最后我正在重新启动我的设备。有什么办法可以从根 adb 回到一般 adb?

谢谢你。

4

8 回答 8

32

adb kill-server并且adb start-server只控制adbPC端的守护进程。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)
于 2013-03-11T16:33:05.910 回答
28

如果您使用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
于 2015-12-22T20:37:21.697 回答
11

试试这个以确保你得到你的外壳:

输入 adb shell(根)。然后在下面输入命令。

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

该命令将stop adbd,然后setprop service.adb.root 0ifadbd已成功stopped,最后 restart adbd.root已成功将属性设置为 0。所有这一切都将在后台完成,这要归功于最后一个&

于 2013-03-17T18:58:33.183 回答
2

我想为@user837048 的回答添加更多解释。在我的 OSX Yosemite 和 Galaxy S3 上,它已植根并使用固件CyanogenMod 11KitKat我已经完成了以下程序EnableDisableroot 提示。

请确保在下面

  • 在您的系统上

    • 确保您已安装Android SDK并设置了二进制文件的路径。which adb在你的外壳上输入。它必须给你一些结果。 $ which adb /Applications/Android Studio.app/sdk/platform-tools/adb
  • 在您的手机上

    • 设置 > 开发者选项 > Android 调试 =ON
    • 设置>开发人员选项>根访问=Apps and ADB

如果您没有Developer Options在设置中看到,请转到设置 > 关于手机。向下滚动Build number并点按 7 次。我知道这很疯狂。但相信我它有效:D

通过 USB 数据线连接您的手机。在computer's终端上输入

$ adb shell

您将看到类似的提示,如果您的手机上显示任何提示,请点击“始终信任”和“确定”以信任连接

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

现在从 shell 退出,这将回退到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

于 2014-10-23T01:30:00.837 回答
0

如需快速步骤,只需检查摘要。如果有兴趣了解详细信息,请继续阅读下文。

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 根模式:

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是我们做 adb root 时出现的一个新的 prop 变量。

因此,要从 root 将 adb 改回用户,我继续将其设为 0

setprop service.adb.root 0

但这并没有改变什么。

然后我继续并终止了该过程(打算重新启动该过程)。pid我设备中的进程adbd133

kill -9 133

杀死进程后,我自动退出了 shell。

我又做adb shell了一次,它是在用户模式下。

概括 :

所以,我们有 3 个非常简单的步骤。

  1. 以 root 身份输入 adb shell。
  2. setprop service.adb.root 0
  3. 杀死 -9(pid of adbd)

完成这些步骤后,只需重新输入 shell,adb shell您就会以用户身份回到您的设备上。

于 2015-03-30T07:18:45.337 回答
-1

这是一个非常普遍的问题。

一种解决方案是杀死 adb 服务器并通过命令提示符重新启动它。有时这可能无济于事。

只需去窗口任务管理器杀死 adb 进程并重新启动 Eclipse。

将完美工作:)

于 2014-05-02T04:45:26.423 回答
-1

我一直在使用基本操作系统 loki 来解决这个问题。就像一天一样,我使用以下命令解决了它重新启动 adb 的问题:

./adb kill-server

./adb start-server

您需要在 Sdk 文件夹 > 平台工具中

现在,重新启动您的手机,这将重新启动您手机中的所有进程。

这就是我修复它的方式。

于 2017-07-12T15:04:53.703 回答
-1

如果您无法访问 Android 设备监视器上的数据文件夹

命令

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>

工作正常......

于 2017-07-23T01:45:15.833 回答