无法运行程序“ /data/data/my.app.package/files/my-executable”:错误= 13,权限被拒绝

时间:2019-10-20 23:12:32

标签: android processbuilder permission-denied

我将二进制可执行文件复制到路径context.getFilesDir()的位置/data/data/my.app.package/files/my-executable

/data/data/my.app.package/files/my-executable的文件许可为-rwxr-xr-x

然后,我尝试使用Java ProcessBuilder执行命令,例如:

commands = Arrays.asList("/data/data/my.app.package/files/my-executable", "ls");
ProcessBuilder pb = new ProcessBuilder(commands);
pb.redirectErrorStream(true);
final Process p = pb.start();

语句pb.start()引发以下IOException:

Caused by java.io.IOException: error=13, Permission denied
       at java.lang.UNIXProcess.forkAndExec(UNIXProcess.java)
       at java.lang.UNIXProcess.<init>(UNIXProcess.java:133)
       at java.lang.ProcessImpl.start(ProcessImpl.java:141)
       at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)

Cannot run program "/data/data/my.app.package/files/my-executable": error=13, Permission denied

我在测试电话上没有root访问权限。在Android版本9(API 28)之前,它可以正常工作。从Android 10(API 29)开始,我得到了上面的IOException。

如何在Android 10+中运行可执行文件?它可以在另一个目录中工作吗?感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我通过在“ build.gradle(Module:app)”中将“ android.defaultConfig.targetSdkVersion”的值从“ 29”更改为“ 28”来解决。