我定制AOSP
。我有system service
,以SystemServer
与其他system services
开头。我将从service
在shell中执行一些命令。
我使用Runtime.getRuntime().exec(command)
- 如果命令不需要root权限,这可以正常工作。我的系统服务有" system"权利,而不是" root" (这是合乎逻辑的)。我尝试使用"su -c"
前缀(例如 - "su -c mkdir /mnt/sdcard/NewFolder"
)执行命令,但没有成功。
问题:如何以root身份执行shell命令? ( su binary包含在构建中)。我应该创建以root权限运行的服务,而不是系统权限(如果可能的话!)
编辑:我不需要SuperUser.apk,只需要su二进制文件(可能的busybox用于其他功能)。
答案 0 :(得分:1)
你得到什么错误? 可能是你需要修改system / extras / su / su.c:
/* Until we have something better, only root and the shell can use su. */
myuid = getuid();
if (myuid != AID_ROOT && myuid != AID_SHELL && myuid != AID_SYSTEM) {
fprintf(stderr,"su: uid %d not allowed to su\n", myuid);
return 1;
}