关于亚行的基本问题。
adb root
以 root 身份重新启动 adb。但我想要的是在一段时间后重新启动它给用户。
我尝试了以下方法:
adb kill-server
adb start-server
不工作..
ps -A
-> 记下 adb 的进程号并将其杀死.. 即使这样也没有用。最后我正在重新启动我的设备。有什么办法可以从根 adb 回到一般 adb?
谢谢你。
adb kill-server
并且adb start-server
只控制adb
PC端的守护进程。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)
如果您使用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
试试这个以确保你得到你的外壳:
输入 adb shell(根)。然后在下面输入命令。
stop adbd && setprop service.adb.root 0 && start adbd &
该命令将stop adbd
,然后setprop service.adb.root 0
ifadbd
已成功stop
ped,最后 restart adbd
应.root
已成功将属性设置为 0。所有这一切都将在后台完成,这要归功于最后一个&
。
我想为@user837048 的回答添加更多解释。在我的 OSX Yosemite 和 Galaxy S3 上,它已植根并使用固件CyanogenMod 11
,KitKat
我已经完成了以下程序Enable
和Disable
root 提示。
请确保在下面
在您的系统上
Android SDK
并设置了二进制文件的路径。which adb
在你的外壳上输入。它必须给你一些结果。
$ which adb
/Applications/Android Studio.app/sdk/platform-tools/adb
在您的手机上
ON
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:/ $
嗯..你是非root
如需快速步骤,只需检查摘要。如果有兴趣了解详细信息,请继续阅读下文。
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 根模式:
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 变量。
因此,要从 root 将 adb 改回用户,我继续将其设为 0
setprop service.adb.root 0
但这并没有改变什么。
然后我继续并终止了该过程(打算重新启动该过程)。pid
我设备中的进程adbd
是133
kill -9 133
杀死进程后,我自动退出了 shell。
我又做adb shell
了一次,它是在用户模式下。
概括 :
所以,我们有 3 个非常简单的步骤。
(pid of adbd)
完成这些步骤后,只需重新输入 shell,adb shell
您就会以用户身份回到您的设备上。
这是一个非常普遍的问题。
一种解决方案是杀死 adb 服务器并通过命令提示符重新启动它。有时这可能无济于事。
只需去窗口任务管理器杀死 adb 进程并重新启动 Eclipse。
将完美工作:)
我一直在使用基本操作系统 loki 来解决这个问题。就像一天一样,我使用以下命令解决了它重新启动 adb 的问题:
./adb kill-server
和
./adb start-server
您需要在 Sdk 文件夹 > 平台工具中
现在,重新启动您的手机,这将重新启动您手机中的所有进程。
这就是我修复它的方式。
如果您无法访问 Android 设备监视器上的数据文件夹
命令
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>
工作正常......