有时候我们写的app要用uid=0的方式启动一个process,framework层和app层是做不到的,只有通过写脚本,利用am来实现。下面是具体步骤:
1.1.创建一个Java project
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SNwYTM1gjMycTMtcjM4kTMwQjMyQjMxETNxAjMtkzN0YTN08CXxETNxAjMvwVO3QjN1QzLcd2bsJ2Lc12bj5ycn9Gbi52YuUTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
1.2.添加Main()方法
1.3.导出为jar包
1.4.将java 版本的jar变成android 版本的jar
首先,找到dx工具所在文件夹,如android-sdk/build-tools/20.0.0,并将该文件夹加入到环境变量PATH中;
其次,执行编译命令dx --dex --output=classes.dex BKTools.jar
最后,将dex文件打包成android版本的jar,aapt add BKTools.jar classes.dex
1.5.将该jar包push到手机的/system/framework目录下
1.6.修改jar包的权限为777
2.1.新建一个文本,命名为run_bktools.sh
输入以下代码:
2.2.将该sh文件run_bktools.sh push到手机/system/bin目录下,并且修改权限为777
2.3.测试利用sh脚本启动jar包
OK,启动成功啦。
3.1.创建一个android project
3.2.用root起shell脚本
3.3.检验shell是否成功叫起
将手机连上电脑,编译执行bkapp,用adb logcat检查是否打有“Success execRootCmdSilent.."字样,观察手机上是否显示“start success.”
检验OK,我就不再截图了。
此时后台也在执行我们在Jar包中写的代码了,如果,我们在Jar包中写一个自己的 ActivityManagerSerive,PowerManagerSerive或者,其他,都将是以root运行的。
本文转自demoblog博客园博客,原文链接http://www.cnblogs.com/0616--ataozhijia/p/4993196.html如需转载请自行联系原作者
demoblog