前言
- android 开发过程中程序很多时候免不了需要对系统目录下的内容进行操作,虽然android的内核是linux系统,但是在linux中切换到root下的方式是sudo root,但是在的android中并没有提供我们su文件。
So我们要向需要root的系统中添加su文件,同时改变su二进制文件的权限。原文
原材料
- android 模拟器
- supersu.apk 软件需要在google play 上下载,没有科学上网的同学点击笔者提供的free链接下载[http://download.csdn.net/download/qq_34023135/9977307]
- supersu.zip 软件需要在google play 上下载,没有科学上网的同学点击笔者提供的free链接下载[http://download.csdn.net/download/qq_34023135/9977287]
步骤
步骤一
将需要root的模拟器运行起来
步骤二
在有 supersu.apk文件的目录处执行如下命令
$ adb -e install supersu.apk
将super.apk 安装到模拟器中,安装好后不要急着运行此App
步骤三
$ emulator.exe -avd [模拟器名字] -writable-system
以可写的方式运行模拟器,你应该在你的sdk目录下的tools文件目录下使用这句命令,因为在这下面才有emulator.exe程序
步骤四
将下载好的supersu.zip 文件解压,你能看到里面有很多文件夹中都包含su文件。我的模拟器模拟器是Androidx86,所以我在x86文件夹下找到su.pie文件,如果你的android版本是5.1和大于5.1版本的系统使用su.pie比su文件更合适,可以避免出现一些不必要的问题,接下来你需要如下操作
$ adb root
$ adb remount
$ adb -e push C:\SuperSU-v2.79\x86\su.pie /system/xbin/su
在root状态下 adb remount 的意思是 重新挂载系统分区,使系统分区重新可写,一般情况下system下面的文件斯不允许只读的。通过push的方式将su.pie拷贝到/system/xbin/su文件中
注意 如果你android模拟器的系统版本小于5.1你需要使用的是su的二进制文件,而不是su.pie
$ adb -e push C:\SuperSU-v2.79\x86\su /system/xbin/su
步骤五
现在我们需要获得通过adb去修改模拟器中su二进制文件的权限
$ adb -e shell
$ su root
$ cd /system/xbin
$ chmod 06755 su
如果你发现通过ls -l 看到你的su文件的权限是rwsr_x_x 了说明已经成功
步骤六
现在我们需要安装su 二进制件(具体安装到什么地方我也不清楚,也许是安装到supersu.apk中吧? 我也不知道)同时将它设置为后台守护程序
$ su --install
$ su --daemon&
这一步的目的暂时我也没有仔细了解
步骤七
设置SELinux的限制,主要是关闭SELinux,这个命令的具体执行位置没有具体的固定,但貌似在最后执行没有什么问题
$ setenforce 0
到这里,我的android模拟器似乎已经完成的root,重新打开android模拟器,点击运行supersu程序(也就是刚才安装到你android系统中的程序),打开和可能它会提示你更新,你可以直接忽略直接使用。然后你的系统就已经完成root了,可以做一些涉及到系统的操作了。
注意
如果最后点击supersu App时提示的是找不到su文件说明,你的su文件可能是不匹配,或者是因为你在没有将su文件的设置进行完整就打开了supersu App。哈哈可以尝试一下卸载supersu App,重从头开始以上的几个步骤。