前言
安卓开发,免不了要用到root权限查看data/data/com.xxx.xxx/里的文件内容进行操作,虽然android的内核是linux系统,但是在的android中并没有提供su文件,所以无法进行linux下的sudo命令。我们需要向root的系统中添加su文件,同时改变su的权限。
需要的准备的资料
supersu.apk 手机root后进行授权管理的软件
supersu.zip 包括su二进制文件等
下载地址:http://www.supersu.com/download,页面中分为APK和ZIP两个部分,分别对应上面的两个文件,如果不想使用GooglePlay下载apk,可以下载History里的最后一版。本文用的版本为SuperSU V2.79 ,Recovery V2.79 Flashable.zip
操作步骤
一、进入Android SDK的安装目录
Android SDK在我的电脑上目录为:/Users/[系统用户名]/Library/Android/
打开CMD进入到安装目录的tools目录
$ cd /Users/[系统用户名]/Library/Android/sdk/tools/
为什么要进到这个目录呢?因为下一步要用到的emulator命令在这个目录里,这样方便操作。
二、以可写方式启动模拟器
$ emulator -avd Pixel_XL_API_26 -writable-system
注:Pixel_XL_API_26为模拟器名称,可以先执行$ emulator -list-avds命令获取所有模拟器名称列表。
这时候会显示
emulator: WARNING: System image is writable
说明启动可写方式成功,但此时CMD处于等待状态,无法再进行操作,如果关闭当前CMD,打开的模拟器也会随之关闭。所以需要再重新打开一个terminal进行后续操作。
三、安装Supersu.apk
进入到刚刚下载的supersu.apk的目录,然后执行如下命令
$ adb -e install SuperSU-v2.79-20161205182033
如果显示如下信息,说明安装成功。
SuperSU-v2.79-20161205182033.apk: 1 fi.... 184.7 MB/s (6581871 bytes in 0.034s)
pkg: /data/local/tmp/SuperSU-v2.79-20161205182033.apk
Success
注意:!!!将super.apk 安装到模拟器后先不要运行此App!!!
四、向系统添加su文件
将下载好的supersu.zip 文件解压,你能看到里面有很多文件夹中都包含su文件。我的模拟器模拟器是Androidx86,所以我在x86文件夹下找到su.pie文件,如果你的android版本是5.1和大于5.1版本的系统使用su.pie比su文件更合适,可以避免出现一些不必要的问题。
其实用AVD Manager创建的话那个ABI就是的对应的目录名称
另外x86_64就是x64,x86对应的是x86
还有如果文件夹内没有su.pie,没必要一定找那个,su也可以的,只不过优先su.pie的意思。
接下来执行如下命令:
首先要确保进入abi对应的su.pie所在目录
命令的大致意思为:在root状态下 adb remount 的意思是 重新挂载系统分区,使系统分区重新可写,一般情况下system下面的文件斯不允许只读的。通过push的方式将su.pie拷贝到/system/xbin/su文件中
$ adb root
adbd is already running as root
$ adb remount
remount succeeded
$ adb -e push su.pie /system/xbin/su
adb: error: cannot stat 'su.pie': No such file or directory
$ ls
libsupol.so su suinit sukernel supolicy
$ adb -e push su /system/xbin/su
su: 1 file pushed. 25.3 MB/s (104680 bytes in 0.004s)
看上面的命令是执行在x64的模拟器上,在push su.pie的时候报错了,不存在这个文件,所以在x64架构下直接su就可以了。
五、修改su文件权限
执行如下命令:
$ adb -e shell
root@generic_x86_64:/ # su root
root@generic_x86_64:/ # cd /system/xbin
root@generic_x86_64:/system/xbin # chmod 06755 su
root@generic_x86_64:/system/xbin # ls -l
查看su的权限如果是下面的结果则表示成功修改权限:
-rwsr-sr-x root     shell      104680 2008-02-29 10:33 su
六、安装su二进制文件,设置后台守护程序
# su --install
# su --daemon&
显示类似如下结果则表示成功
[1] 4323
七、设置SELinux的限制
设置SELinux的限制,主要是关闭SELinux,这个命令的具体执行位置没有具体的固定,但貌似在最后执行没有什么问题
$ setenforce 0
八、安装Root Explorer
安装这个软件后即可进行系统目录的文件操作了。软件请自行搜索下载。
写在最后
如果打开supersu提示错误,可能是su文件不匹配造成的。请尝试从第一步重新安装。在初次打开supersu时,可能提示版本更新,可以直接忽略。选择new user就行。在打开root explorer进行系统目录操作时,会提示root授权,点击grant即可。
还有就是root后无法通过Avd manager进行启动,需要使用命令行启动
emulator -avd Pixel_XL_API_26 -writable-system
至此模拟器就成功root。尽情享受吧。