关于亚行的基本问题。
adb root
以 root 身份重新启动 adb。但我想要的是在一段时间后重新启动它给用户。
我尝试了以下方法:
adb kill-server
adb start-server
不起作用..
ps -A
-> 记下 adb 的进程号并杀死它.. 即使这样也不起作用。最后我重新启动我的设备。有什么办法可以从 root adb 返回到 General 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
守护进程。恢复由 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 shell(root)。然后输入以下命令。
stop adbd && setprop service.adb.root 0 && start adbd &
此命令将
stop adbd
,然后 setprop service.adb.root 0
(如果 adbd
已成功 stop
ped),最后重新start adbd
(如果 .root
属性已成功设置为 0)。所有这些都将在背景感谢最后的&
。
我想对@user837048的答案添加更多解释。在我的 OSX Yosemite 和 Galaxy S3 上,它们已获得 root 权限并使用固件
CyanogenMod 11
和 KitKat
我已针对 Enable
和 Disable
root 提示完成了以下操作。
请确认以下内容
在您的系统上
Android SDK
并且已设置二进制文件的路径。在 shell 上输入 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
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 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
是我们执行 adb root 时出现的一个新的 prop 变量。
因此,为了将 adb 从 root 改回用户,我继续将其设置为 0
setprop service.adb.root 0
但这并没有改变任何事情。
然后我继续杀死该进程(意图重新启动该进程)。我的设备中
pid
进程的 adbd
是 133
kill -9 133
杀死进程后,我自动退出 shell。
我再次执行了
adb shell
,它处于用户模式。
总结:
所以,我们有 3 个非常简单的步骤。
(pid of adbd)
完成这些步骤后,只需使用
adb shell
重新进入 shell,您就会以用户身份返回设备。
我能够按照以下步骤推送我的主机文件 如何将文件复制到 Android 的 /system 文件夹,只需进行少量修改。
. adb root
. adb shell avbctl disable-verification
. adb reboot
// wait for the avd to reboot before proceeding
. adb root
. adb remount
. adb push <your_host_file> /system/etc/hosts
这是一个很常见的问题。
一种解决方案是终止 adb 服务器并通过命令提示符重新启动。有时这可能没有帮助。
只需进入 Window 任务管理器终止 adb 进程并重新启动 Eclipse。
会完美工作:)
我一直在使用elementary OS loki 来解决这个问题。大约有一天,我使用以下命令重新启动 adb 解决了这个问题:
./adb kill-server
和
./adb start-server
需要在Sdk文件夹>Platform Tools
现在,重新启动手机,这将重新启动手机中的所有进程。
这就是我修复它的方法。
如果您无法访问 Android Device Monitor 上的数据文件夹
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>
工作正常......