如何从根启动到用户模式?
亚行的基本问题。
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-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)
试试这个来确保你得到你的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 11
和KitKat
我已经做了以下程序Enable
和Disable
根提示。
请确保下面
-
在你的系统上
- 确保你已经安装了
Android SDK
并且已经设置了二进制文件的path。 在你的shell上键入which adb
。 它必须给你一些结果。$ which adb /Applications/Android Studio.app/sdk/platform-tools/adb
- 确保你已经安装了
-
在你的手机上
- 设置>开发者选项> Androiddebugging=
ON
- 设置>开发者选项>根访问=
Apps and ADB
- 设置>开发者选项> Androiddebugging=
如果您在设置中看不到“ Developer Options
,请转到“设置”>“关于电话”。 向下滚动到Build number
并点击7次。 我知道它的疯狂。 但相信我的作品:D
通过USB电缆连接您的手机。 键入您的computer's
terminal
$ 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
进程的pid
是133
kill -9 133
我杀了这个过程后,我自动退出了shell。
我再次做了adb shell
它是在用户模式。
总结:
所以,我们有三个非常简单的步骤。
- inputadb shell作为根。
- setprop service.adb.root 0
- 杀-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。
将工作完美:)