Android模拟器获取Root权限

近期突然想root安卓模拟器,因为更改开放的adb端口号,需要以su身份执行。经过一些试错终于root了,特此记录下来,希望可以帮到需要root模拟器的小伙伴。

  • 需要的准备:

  1. SuperSU apk管理root授权

  2. Recovery Flashable.zip,包含su文件

  3. 能以可写方式运行的avd

    注:如果可以翻墙你可以选择从官网下载最新版本的1.2文件http://www.supersu.com/download

  • Root步骤

  1. 启动模拟器

    进入emulator目录,使用命令行形式,以可写形式启动avd。

    我的mac os的emulator路径为:/Users/mac02/Library/Android/sdk/emulator,里边应该有各个cpu架构对应的emulator命令。

    emulator -list-avds查看avd列表

    查看avd列表

    emulator -avd Nexus_5X_API_26 -writable-system启动avd,在我的mac 64位电脑上如果虚拟机用的x86的img则启动会失败报下图错误,把镜像改成x86_64后成功启动。

    x86镜像启动虚拟机报错
  2. 安装SuperSU

    adb install /Users/mac02/Downloads/SuperSU-v2.79-20161205182033.apk

    安装后打开提示su文件没有安装,也就是系统未root

    系统未root提示

  3. 将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

  4. 修改su文件权限

    adb shell

    su root

    cd /system/bin

    chmod 06755 su

  5. 安装su并设置后台驻留,注意是两个横线

    su --install

    su --daemon&

  6. 关闭SE Linux

    setenforce 0

  7. 打开SuperSu,提示已经root
    已经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

你可能感兴趣的:(Android模拟器获取Root权限)