根植Android 7.1.1的Android虚拟设备


12

我正在使用带有Android模拟器的官方Android SDK来创建虚拟Android 7.1.1(x86)。我需要测试许多事情,其中​​包括一些应用程序需要对设备的root访问权限。

现在我知道我可以adb root并且我有一个root shell,但这不允许我安装的应用程序具有root访问权限。

我已经研究了这个主题一段时间,并且看到了各种方法。大多数答案还没有发布很久以前。

我认为没有选项切换根目录很奇怪-毕竟这是一个SDK。

如何生根运行Android 7.1.1的Android虚拟设备,有效地允许已安装的应用程序具有root访问权限?

编辑:如果可能的话,我宁愿不使用像Genymotion这样的付费模拟器。

edit2:这仅供个人使用。

edit3: Genymotion似乎是一个可行的解决方案,它是替代的模拟器。Android SDK / Emulator为什么不提供这种功能?

edit4:通过答案xavier_fakerat似乎完全正常工作,但是由于Android Studio版本3.1这似乎并不为永久生根。AVD重新启动后,根访问权限就消失了。

Answers:


11

如何启动android模拟器(Android 7.1.1 / Nougat)

我很高兴通知社区一个更简单的方法来root android仿真器(从独立的Android SDK运行)

要求

注意:SuperSU现在已被弃用,但是该方法仍然可以使仿真器成为root用户,并且对于较新的rooting方法将提供更多更新。

使用说明

  1. 安装SuperSu.apk

    • 首先安装SuperSu应用程序,只需拖放即可(如果运行最新的仿真器版本或通过adb进行侧面加载,例如adb –e install supersu.apk

    • 安装后,在运行时会显示如下屏幕,指示“未安装SU二进制文件。”。此错误只是确认设备尚未生根。

在此处输入图片说明

  1. 使模拟器的系统分区可写

    • 正如它建议的那样,我们需要授予仿真器写入系统文件的权限。

    • 键入以下代码以完成此操作: emulator.exe –avd {emulator_name} –writable-system

注意:导航到安装了Android SDK 的工具文件夹,然后通过按住shift键并单击鼠标右键打开其中的命令提示符。

  1. 在系统目录中推送su二进制文件

    • 提取Recovery flashable.zip(包含不同体系结构的二进制文件)

重要!仅使用与您的avd体系结构(例如x86,arm等)匹配的su二进制文件,并记下提取这些二进制文件的路径。

  • 确保您以root用户身份运行adb,并且还需要重新挂载。只需输入这些代码

adb root

adb remount

现在是时候推送su二进制文件了:

这是我成功使用的代码adb -e push C:\%USERPROFILE%\Desktop\rootemu\x86\su.pie /system/bin/su

(不要管我su二进制文件的具体位置,只要没有空格,任何位置都可以)

如果失败,请尝试将其推送到该目录/system/xbin/su。另外,对于运行android 5.1及以下版本的模拟器,请使用susu.pie

  1. 更改su二进制文件的权限

    • 接下来,让我们对su binary的权限进行一些修改。我们必须通过adb在模拟器设备中执行此操作:

    adb –e shell su root cd /system/bin chmod 06755 su

重要!!注意su二进制路径(我的是/ system / bin)

  1. install在su二进制文件上设置指令并设置一个daemon

输入代码:

su --install

并设置守护进程:

su --daemon&

重要!!注意间距

  1. 将SELinux设置为宽松(即关闭SE Linux)

    • 最后通过以下代码关闭selinux:

setenforce 0

差不多了!!打开SuperSU应用程序,可能会要求更新二进制文件,您可以使用Normal方法。

打开任何需要SU权限的应用只是为了仔细检查,实际上SuperSU会询问您是否要授予su权限。

在此处输入图片说明

备注

参考中的大多数内容是针对较早的android版本的,因此是我修改了不同命令和路径的原因。

特别鸣谢;

特别感谢Irvin H,在经历了无数次失败之后,以及看到许多用户也需要扎根仿真器之后,我的教程启发了我创建本指南。我希望这也会受益良多

Irvin H:扎根Android模拟器-在Android Studio 2.3((Android 4.4)上

更新资料

正如SaAtomic所说,

这种方法在Android Studio 3.0.1中仍然可行

升级到仿真器版本27.2.9及更高版本后,它现在可以通过快照功能更轻松地保留根目录(如果无法复制system.img方法):

理想情况下,这更像是使config保持完整状态的虚拟设备休眠,因此保留了所有内容。

快照

现在,您可以为给定的设备配置保存多个AVD快照,并选择在启动仿真器时加载哪些已保存的快照。通过加载快照来启动虚拟设备非常类似于将物理设备从睡眠状态唤醒,而不是从关闭电源状态启动虚拟设备。

这意味着启动仿真器的唯一要求是将-writable-system参数添加到正常仿真器-avd [avdname]命令中以启动仿真器。(仅使用模拟器-avd [avdname]运行模拟器不会启动根目录版本/副本,否则可能会导致某些错误)

经过API 22级测试


1
感谢您的详细回答。我还没有尝试过,但这似乎是一个可行的解决方案!
SaAtomic

1
@SaAtomic,您的步骤非常有用,而且,您还可以使用自定义恢复(例如TWRP)刷新Supersu 2.82 / Magisk,并可以轻松获得root用户。这些方法在任何7.1.1或7.1.2上都可以正常工作正在运行的设备....谢谢..
Panchajanya Sarkar

我刚刚使用Android SDK 2.3.3(AVD管理器)和使用Android 7.1.1的虚拟Pixel进行了测试。立刻按照说明进行工作。谢谢!
SaAtomic

1
更新:这种方法在Android Studio 3.0.1中仍然可行
SaAtomic

1
这是最有可能你使用了错误的仿真图像,你需要使用的Google APIs Intel x86 Atom System Image,而不是Google Play Intel x86 Atom System Image
xavier_fakerat
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.