Android模拟器Root

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ocean20/article/details/82798004

前言

安卓开发,免不了要用到root权限查看data/data/com.xxx.xxx/里的文件内容进行操作,虽然android的内核是linux系统,但是在的android中并没有提供su文件,所以无法进行linux下的sudo命令。我们需要向root的系统中添加su文件,同时改变su的权限。

需要的准备的资料

  1. supersu.apk 手机root后进行授权管理的软件
  2. supersu.zip 包括su二进制文件等
    下载地址http://www.supersu.com/download,页面中分为APK和ZIP两个部分,分别对应上面的两个文件,如果不想使用GooglePlay下载apk,可以下载History里的最后一版。本文用的版本为SuperSU V2.79 ,Recovery V2.79 Flashable.zip
    本文所有操作均在Mac OS下执行。

操作步骤

一、进入Android SDK的安装目录

Android SDK在我的电脑上目录为:/Users/[系统用户名]/Library/Android/
打开terminal进入到安装目录的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
说明启动可写方式成功,但此时terminal处于等待状态,无法再进行操作,如果关闭当前terminal,打开的模拟器也会随之关闭。所以需要再重新打开一个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。尽情享受吧。

猜你喜欢

转载自blog.csdn.net/ocean20/article/details/82798004