如何从 Android 模拟器“删除”root 访问权限并在 adb 中获得正常的 shell 提示符?

v1h*_*1h5 4 shell android

我正在使用 adb(Android 调试桥)并在 Genymotion 模拟器中使用 shell(我在本问题末尾提到了所有配置)。

我执行“adb shell”并成功获取 shell,但问题是我获得了模拟器的 root 访问权限。我不需要 root shell,我想要普通的 shell,就像我们在通过 USB 连接的实际设备上执行“adb shell”时得到的那样。如何实现呢?

任何帮助将不胜感激。

*配置 :

Ubuntu 13.10,32 位。

带 ADT 的 Eclipse 4.2。

Genymotion Emulator(具体来说,我这里使用的是Android 4.3)。

v1h*_*1h5 8

我发布这个问题已经很久了,但仍然想回答它,因为它可能会帮助有需要的人。

我的主要目的是为了一些测试目的在模拟器上获得非root shell,但经过多次尝试后未能成功。

有时,侥幸的是,我在模拟器内摆弄 Playstore 应用程序,间接找到了上述问题的解决方案。

我注意到在创建模拟器时,如果我使用“Google Play”作为图像,我会得到一个不是 root 的模拟器。

按照以下步骤获取无需 root 的 Android 模拟器:

  1. 创建一个新的虚拟设备,然后选择“Playstore”列中可见 Playstore 图标(小三角形)的虚拟设备,如下面的屏幕截图所示。

在此输入图像描述

  1. 在下一步中,下载创建设备所需的适当文件。确保将目标/ABI 选择为“Google Play”而不是“Google API”。这将使一切变得不同。在下图中,您可以看到我有 2 个 AVD(Android 虚拟设备),第一个 (andy_7) 目标为“Google API”,另一个 (nexus_5) 目标为“Google Play”。

在此输入图像描述

  1. 使用目标 Google Play(在本例中为nexus_5)启动 avd ,我们将获得所需的结果。

在此输入图像描述


eph*_*ent 5

adb shell setprop service.adb.root 0
adb shell setprop ctl.restart adbd
Run Code Online (Sandbox Code Playgroud)

或者

adb unroot
Run Code Online (Sandbox Code Playgroud)

简而言之。