ADB root 不能在模拟器上工作(不能 运行 作为生产构建中的 root)

ADB root is not working on emulator (cannot run as root in production builds)

我刚刚更新了模拟器 26.0.3,现在我无法对新创建的模拟器执行 运行 adb root 命令。

显示的错误如下:

adbd cannot run as root in production builds

我已经杀死并重新启动 adbd 喜欢:

adb kill-server
adb devices

没有任何帮助,有什么想法吗?


我不确定有什么区别以及如何 select 不同的构建但是, 如果在创建时启用了以下设置,则它有根。

如果您想要 root 访问权限,则您使用了错误的模拟器映像。如错误消息所述,production 构建中不允许使用 root,请改用 userdebug 构建。

要启用 root 访问权限: 选择一个未标记为“Google Play”的模拟器系统映像。 (标签文本和其他 UI 详细信息因 Android Studio 版本而异。)

异常: 自 2020 年 10 月 8 日起,R 版“Android 电视”系统映像将不会 运行 作为 root。 解决方法:改用 Release Q(API 级别 29)Android 电视系统图像。

测试它:启动模拟器,然后运行adb root。应该是

  • restarting adbd as root

  • adbd is already running as root

没有

  • adbd cannot run as root in production builds

备选测试:运行adb shell,如果提示以$结尾,运行su.它应该显示 # 提示符。

步骤: 安装和使用可以 运行 作为 root 的模拟器映像:

  1. 在 Android Studio 中,使用菜单命令 工具 > AVD 管理器.
  2. 单击 + 创建虚拟设备... 按钮。
  3. Select虚拟硬件,然后点击下一步
  4. Select 一个系统映像。
    • 选择任何在“目标”列中说“(Google 播放)”的图像。
    • 如果您依赖 Google APIs(Google 登录、Google 合身等),请选择标有“(Google APIs)".
    • 您可能需要从“推荐”组切换到“x86 图像”或“其他图像”组才能找到一个。
  5. 如果需要,请单击下载 按钮。
  6. 完成创建新的 AVD。
    • 提示:AVD 名称以 API 级别编号开头,因此虚拟设备列表将按 API 级别排序。
  7. 启动您的新 AVD。 (您可以点击AVD中的绿色“play”三角window。

[信用属于@Merk,但这应该作为答案而不是评论发布。]

转到工具 -> SDK 管理器 -> Android SDK -- 现在 在第一个选项卡(SDK 平台)中,首先“select”在页面底部显示包详细信息。 现在 Select “Google APIs Intel x86 Atom System Image” 和 unselect “Google 播放 Intel x86 Atom 系统映像”。 此模拟器不会显示“adbd 不能 运行 作为生产构建中的根目录”。 Google API 没有 Play 商店应用,只有 Play 服务。

我遇到了这样的问题,因为由于某种原因它是在 build.gradle 文件 release 构建模式中默认设置的。此模式不允许以根用户身份与虚拟设备通信。必须启用调试模式

buildTypes {
      release {
         signingConfig signingConfigs.debug
      }
}

改为

buildTypes {
    debug{
        debuggable true
    }
}

然后在AVD Manager我删除并重新创建了一个新的虚拟设备。重新启动,一切正常,root 权限可用。

我遇到了同样的问题并通过以下方式解决了:

第一件事:转到工具 => Android => SDK 管理器 => Android SDK --In(SDK 平台)。 Select“Google APIs Intel x86 Atom System Image”并且不select“Google Play Intel x86 Atom System Image”。

第二件事:创建一个新的模拟器“不要 select Google Play Store”。