我植根了解锁的Galaxy S3(SGH-T999)
现在,我正在尝试从Windows 命令提示符运行adb root
,但是,我收到adbd cannot run as root in production builds
错误。所以,我检查的第一件事是我的手机是否真的扎根了?
所以我尝试了以下内容:
打开命令提示符
$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 cannot run as root in production builds
错误。
所以,我想,我可能不得不做一些超出我上面所做的事情。我在以下SO问题中尝试了所有解决方案:
以上都不适合我。他们所做的只是让SHELL的ROOT访问。我希望adb root
能够工作,这样我就可以执行各种adb命令而无需进入shell。
答案 0 :(得分:22)
在某些对开发人员友好的ROM中,您只需在设置>中启用 Root Access 即可。开发人员选项>根访问。之后adb root
变得可用。不幸的是,它不适用于市场上的大多数库存ROM。
答案 1 :(得分:18)
按设计adb root
命令仅适用于开发版本(即eng
和userdebug
,默认情况下为ro.debuggable=1
。因此,要在您的 rooted 设备上启用adb root
命令,只需将ro.debuggable=1
行添加到以下文件之一:
/system/build.prop
/system/default.prop
/data/local.prop
如果您希望adb shell
默认以root
开头 - 那么也要添加ro.secure=0
。
或者您可以使用修改后的adbd
二进制文件(不检查ro.debuggable
)
来自https://android.googlesource.com/platform/system/core/+/master/adb/daemon/main.cpp
#if defined(ALLOW_ADBD_ROOT)
// The properties that affect `adb root` and `adb unroot` are ro.secure and
// ro.debuggable. In this context the names don't make the expected behavior
// particularly obvious.
//
// ro.debuggable:
// Allowed to become root, but not necessarily the default. Set to 1 on
// eng and userdebug builds.
//
// ro.secure:
// Drop privileges by default. Set to 1 on userdebug and user builds.
答案 2 :(得分:8)
我有三星Galaxy Trend Plus(GT-S7580)。
运行'adb root'给了我同样的'adbd无法在生产版本中以root身份运行'错误。
对于具有开发者选项的设备 - > Root访问权限,选择“仅限ADB”以提供对设备的adb root访问权限(由NgaNguyenDuy建议)。
然后尝试按Launch a script as root through ADB处的解决方案运行命令。 就我而言,我只是想运行'netcfg rndis0 dhcp'命令,我这样做了:
adb shell "su -c netcfg rndis0 dhcp"
请以这种方式运行时检查您是否犯了任何错误。
如果仍然无效,请检查您是否正确设备了设备。 如果仍然没有运气,请尝试安装自定义ROM,例如Cyanogen Mod,以便“adb root”正常工作。
答案 3 :(得分:6)
您需要将boot.img / sbin /文件夹中的adbd二进制文件替换为su功能的二进制文件。您还必须进行一些default.prop编辑。
三星似乎比其他厂商更难。我有一些你可以尝试的adbd二进制文件,但它需要知道使用新的二进制文件去编译和重新编译boot.img。此外,如果你有一个锁定的bootloader ...这不会发生。
此外,Chainfire还有一款可在Play商店中授予adbd root权限的应用:https://play.google.com/store/apps/details?id=eu.chainfire.adbd&hl=en
最后,如果您正在尝试编写具有SU权限的Windows脚本,您可以使用以下命令样式执行此操作...但是,您至少需要在第一个时间授予(在电话上)SU权限跑...
adb shell“su -c ls”< -list具有su权限的工作目录。 adb shell“su -c echo anytext> /data/test.file”
这些只是一些例子。如果您明确说明您要完成的任务,我可能会提供更具体的建议
-scosler
答案 4 :(得分:6)
我用于在abd shell中输入su模式
adb shell" su"
答案 5 :(得分:4)
我在尝试root模拟器时遇到了这个问题,我发现这是因为我正在运行带有Google Play的Nexus 5x模拟器。创建了一个没有谷歌播放的不同模拟器,adb root
将为您设备。希望这有助于某人。
答案 6 :(得分:1)
就我而言,(设备已植根)
linux$ adb shell # in linux shell
mobile$ su root #=> notice the $ will become #
mobile# whoami #=> root
如果您在 Magisk 中安装了“adb root”模块,您仍然需要通过 root
手动切换到 su root
,否则,看起来您是 root,但实际上您不是 root。
答案 7 :(得分:1)
我有一台运行 Android 7.0 的三星 Galaxy Tab S2。 以下是我今天如何扎根:
阅读此线程中关于编辑 system\build.prop 文件的 Alex P.'s answer。
下载到您的平板电脑上:v1.3.9 System Tools Android: All-In-One toolbox
运行应用程序;在“系统实用程序”下确认您的 Odin 根使用“根检查”
在同一个应用程序中,转到“Root Manager”并使用“Build.prop editor”来影响 system\build.prop 中的更改(由 Alex P. 指定)。
最终确认:
C:\Android\sdk\platform-tools>adb shell
gts28vewifi:/ $ whoami
shell
gts28vewifi:/ $ su
gts28vewifi:/ # su root
gts28vewifi:/ # whoami
root
答案 8 :(得分:0)
如果您确实需要<jnlp spec="1.0+" codebase="http://192.168.2.40/New" href="index.jnlp">
<information>
<title>Safety</title>
<homepage href="/Safety" />
<Application-Name>Safety</Application-Name>
<icon href="Safety.gif"/>
<icon kind="shortcut" href="Safety.jpeg" width="32" height="32"/>
<icon kind="shortcut" href="Safety.jpeg" width="48" height="48"/>
<icon kind="splash" href="index.jpeg"/>
<offline-allowed/>
<shortcut online="true">
<desktop/>
<menu submenu="Safety Home"/>
</shortcut>
</information>
<update check="always" policy="prompt-update"/>
<security>
<all-permissions/>
</security>
<resources os="Windows" arch="x86_64 amd64">
<j2se version="1.6+" max-heap-size="2000m"/>
</resources>
<resources os="Linux" arch="x86_64 amd64">
<j2se version="1.6+" max-heap-size="2000m"/>
</resources>
<resources>
<j2se version="1.6+"/>
<jar href="Safety-maven-1.0.13.jar" />
</resources>
<application-desc main-class="in.NewFrame" />
</jnlp>
作为ADB
运行,最快捷最简单的方法是安装Android自定义ROM,最流行的是root
,因为它有{{1}开发人员选项菜单中的选项,您可以在其中选择授予CyanogenMod
的root访问权限。之前我使用过CM,但由于它还没有开发,我试着寻找一些解决方案。虽然CyanogenMod仍然是一个很好的选择,因为它没有臃肿软件。
我从朋友那里发现的一个替代方法是使用Root Access
应用,您可以在此处尝试:https://forum.xda-developers.com/showthread.php?t=1687590。在我的情况下,它与Android自定义内核一起工作,但不适用于Android股票ROM(仅限vanilla android)。您可以尝试其他替代方案,例如修改Android ROM的apps and ADB
。
答案 9 :(得分:0)
adbd
具有启用根访问权限的编译标志/选项:ALLOW_ADBD_ROOT=1
。
直到Android 9:如果您的设备上的adbd
编译时都没有该标志,则它将在启动时始终放弃特权,因此“ adb root”根本无济于事。
我不得不修补对setuid()
,setgid()
,setgroups()
的调用,而我自己的能力就从二进制文件中删除了,从而在我的电子书阅读器上获得了永久扎根的adbd。
在Android 10中,此更改;当手机/平板电脑解锁(ro.boot.verifiedbootstate == "orange"
)时,则在任何情况下都可以使用adb root模式。