Android 如何将adb从root模式重新启动到用户模式?

Android 如何将adb从root模式重新启动到用户模式?,android,adb,root,Android,Adb,Root,亚洲开发银行的基本问题 adb根目录将adb作为根目录重新启动。但我想要的是在一段时间后重新启动它并返回给用户 我尝试了以下方法: adb kill-server adb start-server 不起作用 ps-A->记录了adb的工艺编号并将其终止。。即使这样也不行。最后,我重新启动我的设备。有没有办法让我从根adb回到通用adb 谢谢。adb kill server和adb start server仅控制PC端的adb守护进程。恢复由adb root执行的service.adb.root

亚洲开发银行的基本问题

adb根目录
将adb作为根目录重新启动。但我想要的是在一段时间后重新启动它并返回给用户

我尝试了以下方法:

adb kill-server
adb start-server
不起作用

ps-A
->记录了adb的工艺编号并将其终止。。即使这样也不行。最后,我重新启动我的设备。有没有办法让我从根adb回到通用adb


谢谢。

adb kill server
adb 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)

请尝试以下操作以确保您能拿回外壳:

输入adb外壳(根)。然后在comamnd下面键入

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

此命令将
停止adbd
,然后
如果
adbd
已成功
停止
ped,则
setprop service.adb.root 0
,最后如果
属性已成功设置为0,则重新
启动adbd
。所有这些都将在后台完成,这要感谢最后一个
&

这是一个非常常见的问题

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

只需转到窗口任务管理器,终止adb进程并重新启动Eclipse


将完美地工作:)

我想对@user837048的答案再加一点解释。在我的OSX Yosemite和Galaxy S3上,它是根目录的,并且使用固件
CyanogenMod 11
KitKat
我已经完成了下面的过程来
启用
禁用
根目录提示符

请确保以下内容

  • 在你的系统上

    • 确保已安装
      Android SDK
      ,并且已设置二进制文件的路径。在shell上键入
      哪个adb
      。它一定会给你一些结果。
      
      $adb
      /Applications/Android Studio.app/sdk/platform-tools/adb
      
  • 在你的手机上

    • 设置>开发者选项>Android调试=
      开启
    • 设置>开发者选项>根访问=
      应用程序和ADB
如果在设置中看不到开发者选项,请转到设置>关于手机。向下滚动至
Build number
,然后点击7次。我知道这很疯狂。但相信我,它是有效的:D

通过USB电缆连接手机。 在
计算机的
终端上键入

$ 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
看到你是
不是root

现在退出shell,它将返回到
计算机提示

shell@m0:/ $ exit
现在激活根目录

$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
我尝试了许多解决方案以返回到
正常的非根提示符
。但除了@user837048的解决方案外,其他都不起作用

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

$ adb shell
shell@m0:/ $

嗯。。您不是root用户

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

root@m0:/ # id
uid=0(root) gid=0(root) context=u:r:shell:s0
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和user身份运行时,它正在使用哪些附加属性变量

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]
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]
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]
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改回user,我继续做了这个0

setprop service.adb.root 0
但这并没有改变任何事情

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

kill -9 133
我在结束进程后自动退出shell

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

摘要:

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]
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]
我们有3个非常简单的步骤

  • 输入adb shell作为根
  • setprop service.adb.root 0
  • kill-9
    (adbd的pid)

  • 完成这些步骤后,只需使用
    adb shell
    重新进入shell,您就可以以用户身份返回设备。

    如果使用
    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
    

    我一直在使用初级操作系统loki处理这个问题。有一天,我用以下命令重新启动adb解决了这个问题:

    ./adb kill-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>
    

    工作正常….

    您好。我试过了。执行这些步骤后,设备仍处于root模式。您可能做错了,或者您的设备是非库存android。。。查看我的更新然后尝试通过命令提示符杀死adb服务器。它可能在您这边工作。转到sdk中的平台工具文件夹。示例:可能是下载\adt-bundle-windows-x86-20131030\sdk\platform tools,然后按ctrl+shift并右键单击鼠标“在此处打开命令窗口”。然后输入两个命令adb kill server和adb start server来保持IDE的运行。这一个命令工作得很好:),但用户可能会对在哪里键入这些命令感到困惑。。所以我写了一个noob的回答,尝试了这个,我的设备(在棒棒糖5.1上)就一片空白。。。。不知道发生了什么,只是取下电池,放回去并打开电源:/这个解决方案对我不起作用。未知选项
    unroot
    。Alex P的解决方案奏效了。