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的解决方案奏效了。