如何从根启动到用户模式?

亚行的基本问题。

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

我尝试了以下内容:

 adb kill-server adb start-server 

不工作..

ps -A – >记下了adb的进程号并杀死了它。即使这样也行不通。 最后我重新启动我的设备。 有什么办法,我可以从根adb回到普通adb?

谢谢。

有点晚,我猜,但是这里是:如果你使用“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 

adb kill-serveradb start-server只能控制PC端的adb守护进程。 在恢复由adb root完成的service.adb.root属性更改之后,您需要在设备本身上重新启动adbd守护进程:

 ~$ 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) 

试试这个来确保你得到你的shell:

inputadb shell(root)。 然后在下面inputcomamnd。

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

这个命令将stop adbd ,然后setprop service.adb.root 0如果adbd已经成功stop ped,最后重新start adbd ,如果adbd属性已经成功设置为0.所有这些都将在后台完成,感谢最后&

我想补充一点解释@ user837048的答案。 在我的OSX优胜美地和Galaxy S3的根源,并使用固件CyanogenMod 11KitKat我已经做了以下程序EnableDisable根提示。

请确保下面

  • 在你的系统上

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

    • 设置>开发者选项> Androiddebugging= ON
    • 设置>开发者选项>根访问= Apps and ADB

如果您在设置中看不到“ Developer Options ,请转到“设置”>“关于电话”。 向下滚动到Build number并点击7次。 我知道它的疯狂。 但相信我的作品:D

通过USB电缆连接您的手机。 键入您的computer'sterminal

 $ adb shell 

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

 shell@m0:/ $ 

现在input

 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 

我尝试了很多解决scheme,以回到normal non root prompt 但除了@ user837048的解决scheme,没有工作。

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

这可能会从Adb prompt退出到正常提示符。 现在再次连接。

 $ adb shell shell@m0:/ $ 

那么..你是非根

快速的步骤只需检查总结 。 如果有兴趣知道详情,请继续阅读下面。

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用户身份运行时所使用的其他属性variables。

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是一个新的propvariables,当我们做adb root的时候出现了。

所以,为了从根改回adb,我继续做了这个0

 setprop service.adb.root 0 

但是这并没有改变任何东西。

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

 kill -9 133 

我杀了这个过程后,我自动退出了shell。

我再次做了adb shell它是在用户模式。

总结:

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

  1. inputadb shell作为根。
  2. setprop service.adb.root 0
  3. 杀-9 (pid of adbd)

完成这些步骤后,只需使用adb shell重新进入shell,然后以用户身份回到设备上。

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

 ./adb kill-server 

 ./adb start-server 

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

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

这就是我如何解决这个问题。

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

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> 

工作很好…..

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

一个解决scheme是杀死adb服务器 ,并通过命令提示符重新启动它。 有时候这可能没有帮助。

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

将工作完美:)