Android:adbd无法在生产版本中以root身份运行

68

我有一部基于Android 2.3.6系统的手机,并且已经取得了解锁和root权限。 由于我希望通过电脑访问手机,今天我安装了QtAdb和Android SDK。 如果我打开一个命令提示符并输入

adb shell su

我会得到

#

这样我就能在手机上拷贝、删除、推送文件了(在手机上我使用“SuperSU”应用程序收到通知)。

但是如果我在Windows 7下启动QtAdb,则会出现以下错误:“adbd cannot run as root in production builds”。我错过了什么吗?QtAdb有问题吗?


"adb shell su" 不会改变您可以推送或拉取的内容,因此,如果您可以访问所需内容,那么显然您并不需要root权限。 - Chris Stratton
我需要访问手机的整个文件系统。如果我执行“id”命令,显然会得到“uid=0(root) gid=0(root)”结果。我想知道为什么QtAdb告诉我“adbd不能在生产构建中以root身份运行”。 - Dave
3
在另一个shell中使用su运行一个shell并不会改变adbd执行push和pull操作所用的UID。 - Chris Stratton
你可以查看这个帖子 http://android.stackexchange.com/questions/5884/is-there-a-way-for-me-to-run-adb-shell-as-root-without-typing-in-su - Muhammad Soliman
https://dev59.com/l18e5IYBdhLWcg3wssAV#25490518 - Alex P.
5个回答

41
即使您的手机已经root,问题在于手机上的'adbd'服务器不使用root权限。您可以尝试绕过这些检查或在手机上安装不同的adbd,或者安装包含修补程序的自定义内核/分发版本。或者,一个更简单的解决方案是使用Chainfire的'adbd insecure',它将实时修补您的adbd。这不是永久性的,因此您必须在启动adb服务器之前运行它(或者设置每次启动时运行它)。您可以从Google Play商店购买该应用程序,售价几美元。

https://play.google.com/store/apps/details?id=eu.chainfire.adbd&hl=en

或者你可以免费获取,作者在xda-developers上发布了一个免费版本:

http://forum.xda-developers.com/showthread.php?t=1687590

将其安装到您的设备上(将其复制到设备并使用文件管理器打开apk文件),在设备上运行adb insecure,最后在计算机上关闭adb服务器:

% adb kill-server

然后重新启动服务器,它应该已经是root了。


6
启用该补丁会禁用Nexus 5X上的USB调试。有什么选项吗? - HungryFoolish
应用程序从未请求权限,但却说我需要授予权限。有什么想法吗?(已安装adb) - HyperionX
“is saying that I need to give it permission” 是什么意思?你的手机需要被root,而且你需要确保如果你有任何限制root可用性的应用程序(如Greenify),它们允许该应用程序拥有root权限。 - David Ljung Madison Stellar
当我在模拟器内点击文件时,会出现以下内容:adbd不安全需要超级用户访问权限,但无法获取。您是否已经root并授权? - harry1102

22

这对我有用。现在我可以从我的电脑上运行 adb root - Harm
3
我在已root的Pixel 4(Android 11)上使用Magisk尝试了这个方法,然而即使成功安装了abd_root模块,仍然出现了同样的错误提示:"adbd不能在生产版本中以root身份运行"。 - avelyne
2
@avelyne ADB Root 只支持 ARM64,也许这就是问题所在。 - mzuther
adb root shell adbd 无法在生产版本中以 root 权限运行。 - CS QGB

6

使用 adb shell; su;

我仍未找到其他适用于安装 magisk 的 Android 12 设备的解决方案。adb_root 在 Android 12 上无效。adbd insecure 在我的设备上无法工作,会抛出错误 could not patch adbd


2
首先运行一个非特权 shell,然后在该 shell 结束后在您的计算机上运行 su。无效。 - jp_

6

如果还有人遇到问题,这是我修复的方法:

你需要使用手机启动shell,并进入Magisk应用程序,在超级用户选项卡(底部)中启用shell的Root访问权限,然后它就可以工作了!


3
你需要授予壳程序(com.android.shell)超级用户权限。 在我的情况下,我使用Magisk来获取我Nexus 6P(Oreo 8.1)手机的root权限。因此,我可以在Magisk Manager应用程序中授予超级用户权限,在左上角的选项菜单中可以找到。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接