ADB的基本问题。
adb root
以root权限重新启动adb。但我想在一段时间后将其重新启动为用户。
我尝试了以下方法:
adb kill-server
adb start-server
无法工作...
ps -A
-> 注意adb进程的编号并将其杀死...即使这样也不起作用。最终我重新启动了我的设备。是否有任何方法可以从root adb返回普通adb?
谢谢。
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 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:
输入adb shell(root)。然后输入以下命令。
stop adbd && setprop service.adb.root 0 && start adbd &
执行该命令将停止adbd
,然后如果成功停止adbd
,则设置属性service.adb.root 0
,最后如果成功将.root
属性设置为0,则重新启动adbd
。所有这些都将在后台完成,感谢最后的&
。
CyanogenMod 11
和KitKat
,以下是我执行的步骤,以启用
和禁用
root提示。
请确保以下内容:
在您的系统上
Android SDK
并设置了二进制文件的路径。在您的shell上键入which adb
。它必须给出一些结果。
$ which adb
/Applications/Android Studio.app/sdk/platform-tools/adb
在您的手机上
打开
应用程序和ADB
如果您在设置中看不到开发人员选项
,请转到设置>关于手机。向下滚动到构建号码
并点击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:/ #
Wow.. you are root
root@m0:/ # id
uid=0(root) gid=0(root) context=u:r:shell:s0
我尝试了许多方法来回到正常的非根提示符。但除了@user837048的解决方案外,其他都没有奏效。
root@m0:/ # stop adbd && setprop service.adb.root 0 && start adbd &
[1] 32137
root@m0:/ #
$
Adb提示符
退出到正常提示符。现在重新连接。$ 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和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]
adb root 模式:
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
是一个新的属性变量。setprop service.adb.root 0
但这并没有改变任何事情。
然后我继续杀死了进程(意图重新启动该进程)。 我的设备中adbd
进程的pid
是133
kill -9 133
我在杀死进程后自动退出了shell。
我再次执行adb shell
,它处于用户模式。
总结:
所以,我们有三个非常简单的步骤。
(adbd的pid)
完成这些步骤后,只需使用adb shell
重新进入shell,您就可以作为用户回到设备上了。
./adb kill-server
和
./adb start-server
你需要在Sdk文件夹中的平台工具内。
现在,重新启动你的手机,这将重新启动你手机中的所有进程。
这就是我修复它的方法。
这是一个非常普遍的问题。
一种解决方法是通过命令提示符关闭adb服务器并重新启动它。有时这可能无法解决问题。
只需转到Windows任务管理器,关闭adb进程并重新启动Eclipse即可。
就可以完美地工作啦 :)
如果您无法在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>
运行正常......
unroot
。Alex P 的解决方案有效。 - user13107