我在自定义设备上运行android 7.1.1,在'userdebug'配置中从源代码编译AOSP,它提供root访问和调试。
我可以使用android设备桥连接到设备。
adb root
adb shell
device_name:/ # su
所有这些命令都可以正常工作,我可以作为超级用户进行更改。 我遇到的问题是从应用程序运行相同的“su”命令
Java.Lang.Process suProcess = Runtime.GetRuntime().Exec("su");
我收到的错误是:
Java.IO.IOException:无法运行程序“su”:error = 13,Permission denied
adb root / shell su命令与从应用程序中运行的命令之间是否存在差异?
答案 0 :(得分:2)
看起来Linux DAC和SE-Android都阻止了您的应用程序进入“访问”的过程。可执行文件。
检查您的系统是否在强制模式下运行,这意味着启用了SE-Android。如果确实如此,您可以通过运行:
暂时禁用它adb root
adb shell setenfoerce 0
这将禁用SE-Android,并且不会阻止应用程序进程执行' su'。
此外,您的应用可能没有启动' su'所需的DAC权限。作为根。您可以执行以下命令:
adb shell ps
获取设备上所有正在运行的进程的列表。找到您的应用程序(通过搜索其包名称),并检查其组和uid。很可能都不是root。
请注意,构建自定义userdebug图像与生成标准Android设备不太相似。调试版本旨在允许访问设备的内部,同时仍然模拟一个真正正常运行的设备,并启用其所有默认安全机制。