如何从root用户模式重启adb?

时间:2013-03-11 10:26:04

标签: android adb root

关于亚行的基本问题。

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

我尝试了以下内容:

adb kill-server
adb start-server

不起作用..

ps -A - >注意到adb的进程号并将其杀死..即使这样也行不通。最后我正在重启我的设备。有什么方法可以从root adb返回到一般adb吗?

谢谢。

8 个答案:

答案 0 :(得分:27)

adb kill-serveradb start-server仅控制PC端的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)

答案 1 :(得分:19)

我想有点晚了,但这里有: 如果您使用 - “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

答案 2 :(得分:11)

试试这个以确保你的shell回来了:

输入adb shell(root)。然后在comamnd下面键入。

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

如果stop adbd已成功setprop service.adb.root 0,则此命令将adbd,然后stop,最后start adbd属性.root已成功设置为0.所有这些都将在后台完成,这要归功于最后&

答案 3 :(得分:2)

我想对@ user837048的答案添加一些解释。在我的OSX Yosemite和Galaxy S3上植根并使用固件CyanogenMod 11KitKat我在EnableDisable根提示下完成了以下操作。

请在下面确认

  • 在您的系统上

    • 确保已安装Android SDK,并且已设置二进制文件的路径。在shell上输入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

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

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:/ $

嗯..你是非根

答案 4 :(得分: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 root mode:

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变量。

因此,要从根目录将adb更改回用户,我继续将其设为0

setprop service.adb.root 0

但这并没有改变任何事情。

然后我继续杀了这个过程(打算重启这个过程)。我的设备中的pidadbd进程为133

kill -9 133

在我杀死进程后,我自动从shell中退出。

我再次adb shell处于用户模式。

摘要:

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

  1. 以root身份输入adb shell。
  2. setprop service.adb.root 0
  3. kill -9 (pid of adbd)
  4. 完成这些步骤后,只需使用adb shell重新进入shell,即可以用户身份重新登录设备。

答案 5 :(得分:-1)

这是一个非常常见的问题。

一种解决方案是通过命令提示符终止adb服务器重启。有时这可能无济于事。

只需转到Window Task Manager即可终止adb进程并重新启动Eclipse。

工作完美:)

答案 6 :(得分:-1)

我使用基本操作系统loki解决了这个问题。就像有一天我解决了它使用这个命令重新启动adb:

./adb kill-server

./adb start-server

您需要位于Sdk文件夹>平台工具

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

这就是我如何解决它。

答案 7 :(得分:-1)

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

<强> CMD

<form name="converter">
  <table border="0">
    <tr>
      <td>
        <select name = "currency">
        <option value="EUR" selected> Euro </option>
        <option value="USD">Dollar</option></select>
      </td>

      <td>
        <input type="text" name="ammount" onkeyup="Converter()" />
      </td>
    </tr>
    <tr>
     <td>£:</td>
     <td><input type="text" name="pound" disabled /></td>
    </tr>
  </table>
</form>

工作正常.....