android jni开发权限问题

没名 发布于 2013/02/28 16:18
阅读 2K+
收藏 2

用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");

以下是问题补充:

@没名:在程序运行起来用ps看到的程序的USER为root (2013/03/01 10:12)
加载中
1
没名
没名
@蒋勃茏 问题解决了,不是权限问题,是在java执行可执行程序之前的拷贝上出现了问题。原来将可执行程序放入了assets目录下了,这个目录下的内容在执行copy时会转换成二进制进行拷贝,由于可执行程序已经是二进制了,所以这样拷贝后的程序运行异常。应将可执行程序放入res/raw目录中,没有可以进行创建。raw目录在拷贝时原封不动的将文件拷贝过相应目录下,这样可执行程序可以正常执行。
没名
没名
@蒋勃茏 root权限只能执行命令不能执行代码。
我不是咸蛋
我不是咸蛋
那做成so的文件呢?可以这样做不呢?
0
vvtf
vvtf
要root哦,亲。
0
没名
没名

引用来自“rouyh”的答案

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