2012-02-23 32 views
0

我遇到了一个可能很容易解决的问题,但我似乎无法找到答案。Android strace(或任何linux二进制文件)执行

我正试图在Android设备上运行的不同进程上执行strace。我已经通过将strace二进制文件复制到/ system/xbin(就像模拟器一样)并且工作得很好。我的问题是我通过引导程序复制了二进制文件,我不希望用户必须经历这些。

所以我发现这个伟大的教程,从一个应用程序中运行的二进制文件:

http://gimite.net/en/index.php?Run%20native%20executable%20in%20Android%20App

我按照教程,做这样的:

  • 复制使用strace的二进制/数据/ data/com.mypackage
  • 更改执行权限到二进制文件(我也试过用777)
  • 尝试执行它

    Process process = Runtime.getRuntime()。exec(“/ data/data/com.mypackage/strace -p PID -o/sdcard/folder_I_know_it_works”);

我知道命令是正确的,因为当我从/ XBIN /系统执行它,它完美的作品。当我运行从应用程序中复制的那个时,我得到空输出。我只为自己的流程获得适当的输出,所以我明白这是一个权限问题。

我没有提到,我的应用程序当然拥有root权限。我也尝试将所有者更改为strace二进制文件作为root:root和system:system并且没有任何内容。

综上所述:我需要就一个二进制相同的权限,我从我的应用程序复制到手机内存比我有开/ XBIN/strace的

我在做什么错找到了一个二进制?

另一个好的解决方案是找到一种方法,将strace从具有根权限的应用程序中复制到/ system/xbin。有任何想法吗?

非常感谢!

回答

2

如果对其他人有用,请找到答案。

Process process = Runtime.getRuntime().exec("su"); 
OutputStream os; 
os = process.getOutputStream(); 
os.write("your linux command here".getBytes()); 
os.close(); 

你基本上只运行su作为一个过程,并通过其输出流发送命令。

稍后您可能需要调用process.wait()

相关问题