如何在安卓系统上执行"su"命令?

3
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.writeBytes(command + "\n");
os.writeBytes("exit\n");
os.flush();
process.waitFor();

系统提示:"07-06 11:01:34.337: I/System.out(3864): su: uid 10170 not allowed to su"

我在终端中执行了"adb root"

:~/android/android-sdk/platform-tools$ ./adb root

adbd is already running as root

有什么想法吗?
3个回答

1

看起来你的adb正在以root身份运行,但你只有原始的'su'工具。你可以使用adb将其替换为你选择的自定义工具。

要么如此,你确实有一个自定义的工具,但它已经被配置为不允许你正在运行的应用程序用户ID - 在这种情况下,你需要打开它的配置工具并进行更改。

请注意 - 这是对一个旧问题旧回答 - 自SELinux采用以来,几个Android版本以来,在典型的终端用户Android构建中停止使用传统的su已经不可能了。解决方法远远超出了这个问题的范围。


1
对不起,我的英语不好。"stock 'su' tool" 是什么意思?我怎样才能得到一个定制的工具呢? - android_su
2
@JoxTraex 如果 adb 正在以 root 权限运行,就像发布的消息所示,那么手机已经被 root(即用户可以作为 root 运行任意代码)。现在只需要根据需要进行配置即可。 - Chris Stratton
@android_test - 你需要自己决定是否信任任何非官方工具。考虑的一部分是你为什么需要root权限。 - Chris Stratton
@Chris Stratton 只是一个测试。所以,非官方工具也可以。但我仍然困惑为什么现在无法执行 'su'?为什么我需要其他工具? - android_su
由于某些安卓官方版本上的su工具并不适用于第三方开发者或终端用户。 - Chris Stratton
@ChrisStratton 我也遇到了同样的问题。我该如何用ADB替换原始su二进制文件?https://android.stackexchange.com/questions/174697/how-to-full-root-a-stock-root-only-android-device - PrashanD

0

如果系统拒绝您的root权限,除了对设备进行root之外,您没有太多可以做的。


如果这是真的,那么就返回True吧,但由于他们已经通过adb获得了root访问权限,这与问题无关。 - Chris Stratton

0

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