2

我正在定制AOSP。我有system service,从SystemServerother开始system services。我将从我的service. 我正在使用Runtime.getRuntime().exec(command)- 如果命令不需要 root 权限,这可以正常工作。我的系统服务具有“系统”权限,而不是“根”权限(这是合乎逻辑的)。我正在尝试执行带有"su -c"前缀(例如 - "su -c mkdir /mnt/sdcard/NewFolder")的命令,但没有成功。

问题:如何以root身份执行shell命令?(su 二进制文件包含在 build 中)。我是否应该创建以 root 权限而不是系统权限运行的服务(如果可能的话!)

编辑:我不需要 SuperUser.apk,只需要 su 二进制文件(可能的 busybox 用于附加功能)。

4

1 回答 1

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;
}
于 2013-05-17T14:59:39.017 回答