微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尽管Android模拟器上存在ABD根,但SU权限被拒绝

如何解决尽管Android模拟器上存在ABD根,但SU权限被拒绝

我想这样向SU写命令:

java.lang.Process process = java.lang.Runtime.GetRuntime().Exec("su");

我不幸遇到以下错误

'Cannot run program "su": error=13,Permission denied'

我已经运行过adb root,现在可以访问shell了,但是此错误不断弹出。我正在使用Xamarin.Android和Visual Studio

解决方法

使用adb root与拥有可访问su命令的root用户设备不同。为什么只有在模拟器上使用Android调试桥(adb)才能使用该命令,所以有一个原因。

您可以在植根的设备上使用su。我在此处撰写了有关如何使用Xamarin进行此操作的博客文章:https://blog.ostebaronen.dk/2018/07/xamarin-and-java-processes.html

您可以使用Java.Lang.Runtime.GetRuntime().Exec()来代替使用ProcessBuilder来启动该过程,它可以像这样很好地构建命令并等待如下结果:

var builder = new ProcessBuilder("echo","hello");
var process = builder.Start();
var exitCode = await process.WaitForAsync();

要以root身份启动某些进程,您可以执行以下操作:

var builder = new ProcessBuilder("su","-c","echo hello");

但是,执行此操作不会更改您使用的仿真器未植根于设备的事实。因此,这些都不如您期望的那样起作用。

如果您希望植根仿真器,就像植根设备一样。您需要在AVD上安装SuperSU或Magisk之类的东西。这里对此进行了很好的描述:https://medium.com/@anthony.f.tannous/android-10-emulation-of-magisk-supersu-on-an-aosp-avd-de93ed080fad

这将涉及:

  1. 使用adb root
  2. 获取root
  3. 安装/system/分区
  4. 推送一些覆盖已修补文件的su和其他二进制文件
  5. 启动SU守护程序

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。