我正在尝试从Android应用程序运行一些类似LINUX的命令,我希望我的应用程序运行一些自定义命令,如pkg
,dpkg
等。基本上我需要我的应用程序充当终端app,为此,我创建了一个Linux文件结构,在应用程序包中包含必要的库和二进制文件,即我将文件放在/data/data/com.example.root.app/files/usr/bin
目录结构下。然后我从我的代码执行它们:
Process process;
try {
process = Runtime.getRuntime().exec(new String[]{"pkg","search","apache2"}, env, new File(cwd));
} catch (IOException e) {
// TODO: Visible error message?
}
我使用变量 env 来设置环境变量 PATH,LD_LIBRARY_PATH,HOME 等。我将其传递给上面的过程。另外,我从包含命令的目录开始这个过程,即
String cwd = "/data/data/com.example.root.app/files/usr/bin"
我能够运行基本命令,例如env
,ls -l
,pwd
,但我无法运行自定义构建的命令,例如pkg
。
当我尝试执行命令pkg
时,它会抛出 IOException错误= 13权限被拒绝
请注意,我已将可执行权限设置为777递归到整个目录,只是为了查找它是否运行,但它没有。
当我使用现有的终端应用程序时,我可以运行pkg
命令