问题描述
安装xposed表示failed to access root权限,新版的mumu模拟器没有了root选项,需要自己root。
1.先关掉应用兼容性,然后重启
电脑一般都是x86的,mumu模拟器的本地命令其实都是这个格式的。可如下进行查看
#链接模拟器
>adb connect 127.0.0.1:7555
* daemon not running; starting now at tcp:5037
* daemon started successfully
connected to 127.0.0.1:7555
#随便从模拟器系统路径下取回一个命令文件,这里选择mv命令
>adb pull /system/bin/mv c:\apk\mv
/system/bin/mv: 1 file pulled. 5.0 MB/s (415716 bytes in 0.079s)
#查看其ELF Header,其Machine值是Intel 80386
>readelf -h c:\apk\mv
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2\'s complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: DYN (Shared object file)
Machine: Intel 80386
Version: 0x1
Entry point address: 0x6030
Start of program headers: 52 (bytes into file)
Start of section headers: 414556 (bytes into file)
Flags: 0x0
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 9
Size of section headers: 40 (bytes)
Number of section headers: 29
Section header string table index: 28
兼容性设置让只支持arm架构的应用也能安装在模拟器上,但是装xposed的过程里将会往模拟器 /system/bin或/system/xbin里复制一些新的命令,这些命令有些是通过XposedInstaller安装的,而XposedInstaller是根据检测出来的系统架构选择相对的命令进行安装的,打开兼容性时XposedInstaller认为系统的架构是arm,这样安装的命令是不能在模拟器上执行的。
2.对模拟器进行root
mumu模拟器可用很多真机需要root才能用的命令,比如pull,但是其其实是没root的。没root其实就是没有su命令,不能通过su获得root权限,root其实是linux的一个用户。这里安装supersu2.82.apk,安装后打开显示没有su命令,这个应用其实是管理其它应用的,当其它应用需要root权限时跟它申请,它会跳出对话框让你选择是否同意。但现在supersu也没有root权限,这是因为模拟器里就没有su这个命令。下载supersu对应的Recovery Flashable.zip,这里头有各种架构下的su命令,目标就是选择适合的su命令复制到模拟器可执行目录下。具体做法如下
#选择x86文件夹下的su.pie复制到 /system/xbin/su
#经测试复制到/system/bin/su不行
#选择su.pie是因为mumu模拟器是android 6.0属于较高版本
>adb push c:\SuperSU-v2.82-201705271822\x86\su.pie /system/xbin/su
#修改su的权限为可执行文件
>adb shell
>su root
>cd /system/xbin/su
>chmod 06755 su
#安装些啥,照着做
>su --install
#打开守护进程
>su --daemon&
#Set SELinux to Permissive
>setenforce 0
这里可重启下模拟器在打开supersu会下载些文件,之后就可用了。到此,模拟器算是root了。
3.用XposedInstaller安装xposed
下载XposedInstaller_3.1.5.apk安装,傻瓜式安装即可。期间supersu会弹出对话框选择同意,别错过对话框。装好后最好重启下模拟器。
4.记得重新打开兼容
主要参考
1.MuMu模拟器怎么安装Xposed框架
有点过时,新版的mumu模拟器没有root选项了,需要自己root,这也是我遇到的真正问题。
2.Rooting the Android Emulator – on Android Studio 2.3 (Android 4.4+)
主要根据这个来,因为mumu模拟器可直接往/system/xbin目录push文件,省略了一些步骤。