近期突然想root安卓模拟器,因为更改开放的adb端口号,需要以su身份执行。经过一些试错终于root了,特此记录下来,希望可以帮到需要root模拟器的小伙伴。
-
需要的准备:
SuperSU apk管理root授权
Recovery Flashable.zip,包含su文件
-
能以可写方式运行的avd
注:如果可以翻墙你可以选择从官网下载最新版本的1.2文件http://www.supersu.com/download
-
Root步骤
-
启动模拟器
进入emulator目录,使用命令行形式,以可写形式启动avd。
我的mac os的emulator路径为:
/Users/mac02/Library/Android/sdk/emulator
,里边应该有各个cpu架构对应的emulator命令。emulator -list-avds
查看avd列表emulator -avd Nexus_5X_API_26 -writable-system
启动avd,在我的mac 64位电脑上如果虚拟机用的x86的img则启动会失败报下图错误,把镜像改成x86_64后成功启动。 -
安装SuperSU
adb install /Users/mac02/Downloads/SuperSU-v2.79-20161205182033.apk
安装后打开提示su文件没有安装,也就是系统未root
-
将su文件放入系统
先以root方式运行adb
adb root
adb remount
然后找到Recovery Flashable.zip解压出来的对应cpu架构的su文件push进系统目录
adb -e push /Users/mac02/Downloads/SuperSU-v2.79-201612051815/x64/su /system/bin/su
-
修改su文件权限
adb shell
su root
cd /system/bin
chmod 06755 su
-
安装su并设置后台驻留,注意是两个横线
su --install
su --daemon&
-
关闭SE Linux
setenforce 0
-
打开SuperSu,提示已经root
有可能提示需要更新su,点击继续然后以常规方式更新su,更新完就可以使用终端模拟器使用su命令了。如果su不更新可能会无法使用su命令,表现是在终端模拟器输入su无法切换到root。
-
Root之后的注意事项:
root后关闭模拟器之后,通过android studio的Android Virtual Device Manager会无法启动模拟器,实测使用命令行可以正常启动,且root权限依然存在。
emulator -avd Nexus_5X_API_26 -writable-system
注意:此处说的关闭时只关闭窗口,不是只长按锁屏键关机,长按锁屏键关机,实测可以通过Android Virtual Device Manager启动,但是会失去root权限,刷入的su文件也会不复存在,需要重新root。
参考资料:https://stackoverflow.com/questions/5095234/how-to-get-root-access-on-android-emulator