4
回答
android jni开发权限问题
科大讯飞通用文字识别100000次/天免费使用。立即申请   

用c编写了一个与iptables相关的小程序,java通过jni来调用执行。在adb shell模式下程序行正确,但通过jni启动时发现进程中本应有3个线程却只有一个线程启动起来。现在想了解下jni执行下面的代码和在adb shell中执行程序权限有什么区别:

怎么查看c代码中的printf调试信息?

Runtime.getRuntime().exec("su");
os1 = new DataOutputStream(process1.getOutputStream());
os1.writeBytes("/data/data/com.test.jni/files/test" + "\n");
os1.writeBytes("exit\n");
举报
没名
发帖于5年前 4回/2K+阅

以下是问题补充:

  • @没名 :在程序运行起来用ps看到的程序的USER为root (5年前)
共有4个答案 最后回答: 5年前
@蒋勃茏 问题解决了,不是权限问题,是在java执行可执行程序之前的拷贝上出现了问题。原来将可执行程序放入了assets目录下了,这个目录下的内容在执行copy时会转换成二进制进行拷贝,由于可执行程序已经是二进制了,所以这样拷贝后的程序运行异常。应将可执行程序放入res/raw目录中,没有可以进行创建。raw目录在拷贝时原封不动的将文件拷贝过相应目录下,这样可执行程序可以正常执行。
--- 共有 2 条评论 ---
没名@蒋勃茏 root权限只能执行命令不能执行代码。 5年前 回复
我不是咸蛋那做成so的文件呢?可以这样做不呢? 5年前 回复

引用来自“rouyh”的答案

要root哦,亲。
测试设备已经root,在adb shell下直接运行执行程序可以执行成功,继续求教。
这个问题我遇见过 我当初是push 一个可执行文件进去再执行 可以成功 但是做成so文件导入就不行  然后我用package manager检查说的是没有权限 但是我也root过的 跟你一样遭遇 你可以从权限一块下手
--- 共有 1 条评论 ---
没名请问你到最后怎么解决的呀,我这边在java程序里以"su"运行了。 5年前 回复
顶部