Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android adb外壳su工作,但adb根不工作_Android_Shell_Adb_Root - Fatal编程技术网

Android adb外壳su工作,但adb根不工作

Android adb外壳su工作,但adb根不工作,android,shell,adb,root,Android,Shell,Adb,Root,我在解锁的Galaxy S3(SGH-T999)上扎根 现在,我正试图从Windows命令提示符下运行adb root,但是,我发现adbd无法在生产版本中作为root运行错误。所以,我检查的第一件事是我的手机是否真的扎根了 因此,我尝试了以下方法: 打开命令提示符 $adb devices // lists my device $adb shell //goes to shell $su // opens a 'SuperSu' prompt on my phone and I 'Grant'

我在解锁的Galaxy S3(SGH-T999)上扎根

现在,我正试图从Windows命令提示符下运行
adb root
,但是,我发现
adbd无法在生产版本中作为root运行
错误。所以,我检查的第一件事是我的手机是否真的扎根了

因此,我尝试了以下方法:

打开命令提示符

$adb devices // lists my device
$adb shell //goes to shell
$su // opens a 'SuperSu' prompt on my phone and I 'Grant' permission
# // Before following the rooting instructions, I was getting 'no su command found' in the previous step. So, I believe my phone is ROOTED. **Correct me if I'm wrong.**
但是,当我执行
adb root
时,我得到了
adbd不能作为root在生产构建中运行的错误。
所以,我想,我可能不得不做一些额外的事情,超出我上面所做的。我尝试了以下所有问题的解决方案:


以上这些都不适合我。它们所做的只是在SHELL内部为ROOT用户提供访问权限。我希望
adb root
能够工作,这样我就可以执行各种adb命令,而无需进入shell。

您需要将boot.img/sbin/文件夹中的adbd二进制文件替换为具有su功能的二进制文件。您还必须进行一些default.prop编辑

三星似乎比其他供应商更难做到这一点。我有一些adbd二进制文件,您可以尝试,但它需要使用新的二进制文件反编译和重新编译boot.img的知识。另外,如果您有一个锁定的引导加载程序。。。这不会发生的

Chainfire还有一个应用程序,可以在play store中授予adbd root权限:

最后,如果您试图使用SU权限编写windows脚本,您可以使用以下命令样式完成此操作。。。但是,您至少需要在第一次运行SU时授予(电话)SU权限


adb shell“su-c ls”按设计
adb root
命令仅在开发版本中工作(即
eng
userdebug
,默认情况下具有
ro.debugable=1
)。因此,要在其他根设备上启用
adb root
命令,只需将
ro.debuggable=1
行添加到以下文件之一:

/system/build.prop
/system/default.prop
/data/local.prop
如果希望默认情况下
adb shell
root
开头,那么也添加
ro.secure=0

或者,您可以使用修改后的
adbd
二进制文件(不检查
ro.debugable


我拥有三星Galaxy Trend Plus(GT-S7580)

运行“adb根目录”时会出现相同的“adbd无法作为根目录在生产版本中运行”错误

对于具有开发人员选项->根访问权限的设备,请选择“仅ADB”以提供设备的ADB根访问权限(如建议的)

然后尝试按照处的解决方案运行该命令。 在我的例子中,我只想运行'netcfg rndis0 dhcp'命令,我是这样做的:

adb shell "su -c netcfg rndis0 dhcp"
请检查以这种方式运行时是否有任何错误

如果仍不工作,请检查是否已正确根目录设备。
如果仍然不走运,请尝试安装自定义ROM,例如,以便“adb根目录”正常工作。

在一些开发人员友好型ROM中,您可以在“设置”>“开发人员选项”>“根目录访问”中启用根目录访问。之后,
adb根目录
可用。不幸的是,它不适用于市场上的大多数股票ROM。

我使用abd shell中的enter su模式


adb shell“su”

如果您确实需要以
root
身份运行
adb
,最快、最简单的方法是安装Android定制ROM,最流行的是
CyanogenMod
,因为它在开发者选项菜单中有
根访问权
选项,您可以在其中选择为
应用程序和ADB授予根访问权。我以前用过CM,但由于它不再被开发,我试着寻找一些解决方案。虽然CyanogenMod仍然是一个很好的替代品,因为它没有膨胀软件


我从一位朋友那里发现的另一种选择是使用
adbd unsecure
应用程序,您可以在这里尝试:。在我的例子中,它与Android定制内核一起工作,但与Android股票ROM(仅适用于香草Android)不兼容。您也可以尝试其他选择,比如修改Android ROM的
boot.img

我在尝试根目录仿真器时遇到了这个问题,我发现这是因为我运行的Nexus 5x仿真器上有Google Play。创建了另一个没有google play的仿真器,
adb root
将为您创建设备的根目录。希望这对别人有帮助

adbd
有一个编译标志/选项来启用根访问:
允许adbd\u root=1

Android 9之前:如果设备上的adbd编译时没有该标志,则启动时它将始终放弃特权,因此“adb根目录”将毫无帮助。 对
setuid()
setgid()
setgroups()
的调用,以及在我的电子书阅读器上获取永久根目录adbd的二进制文件的功能

Android 10改变了这一点;当手机/平板电脑解锁时(
ro.boot.verifiedbootstate==“orange”
),则在任何情况下都可以使用adb根模式。

在我的情况下,(设备已根目录)


如果您在Magisk中安装了“adb root”模块,您仍然需要通过
su root
手动切换到
root
,否则,看起来您是root,但实际上您不是root。

我有一个运行安卓7.0的三星Galaxy Tab S2。 以下是我今天如何为它植根的:

  • 阅读有关编辑system\build.prop文件的此线程

  • 下载到平板电脑:v1.3.9

  • 运行应用程序;在“系统实用程序”下,使用“根检查”确认您的Odin根已工作

  • 在同一个应用程序中,转到“根管理器”并使用“Build.prop编辑器”来影响system\Build.prop中的更改(由Alex p.指定)

  • 最终确认:

    C:\Android\sdk\platform-tools>adb shell
    gts28vewifi:/ $ whoami
    shell
    gts28vewifi:/ $ su
    gts28vewifi:/ # su root
    gts28vewifi:/ # whoami
    root
    
  • 投票支持Alex P.的回答

  • 在android>4.3中不起作用。缺少su。我在dev opt中没有看到“根访问”选项
    linux$ adb shell      #  in linux shell
    mobile$ su root       #=> notice the $ will become #
    mobile# whoami        #=> root
    
    C:\Android\sdk\platform-tools>adb shell
    gts28vewifi:/ $ whoami
    shell
    gts28vewifi:/ $ su
    gts28vewifi:/ # su root
    gts28vewifi:/ # whoami
    root