您的位置:首页 > 移动开发 > Android开发

开发板环境下在Android应用程序中调用需要root权限的脚本命令的一种方法

2016-04-17 16:22 399 查看
Xilinx Zynq-7000 zc702开发板环境下,找到官方的Android SD卡文件(Android2.3),已经能够在开发板上运行Android,希望写一个应用程序调用一个重构FPGA的脚本命令,尝试了很多天都失败了,最后查找资料做了很多实验终于成功了,代码片段如下:

try{

Process suProcess = Runtime.getRuntime().exec("/system/xbin/su");
DataOutputStream dos = new DataOutputStream(suProcess.getOutputStream());
dos.writeBytes("ls > /data/local/d\n");
dos.flush();
dos.writeBytes("cat /system/Zynq_RealFFT_wrapper.bin > /tmp/dev1/xdevcfg\n");
dos.flush();
dos.close();
suProcess.waitFor();
} catch (Exception e) {
// Please do something, don't let Exceptions be raised and silently trapped.
e.printStackTrace();
}


原理就是通过执行su获得root权限,通过DataOutPutStream向su启动的shell里用writeBytes写入要执行的命令。在stackoverflow上找到的

另外,需要注释掉su.c中的以下代码片段:

if (myuid != AID_ROOT && myuid != AID_SHELL) {
fprintf(stderr,"su: uid %d not allowed to su\n", myuid);
return 1;
}


这样执行su的时候即使是即使真实用户id是普通用户也能继续执行。

除此之外,还必须把su可执行文件 sudo chmod a+s su ,这样有效用户id会暂时为0,也就是root。

说实话,关于Android权限不太懂,有个文章总结的还将就,可以学习一下;
http://blog.csdn.net/superkris/article/details/7709504/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: