【问题标题】:ADB root is not working on emulator (cannot run as root in production builds)ADB root 无法在模拟器上运行(无法在生产版本中以 root 身份运行)
【发布时间】:2017-10-10 23:06:27
【问题描述】:

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

显示的错误如下:

adbd cannot run as root in production builds

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

adb kill-server
adb devices

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


我不确定有什么区别以及如何选择不同的构建,但是, 如果创建时启用了以下设置,则它具有root.

【问题讨论】:

  • 你试过 adb shell 然后运行 ​​'su' 吗?它显示相同的东西吗?

标签: android android-emulator adb root


【解决方案1】:

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

例外情况: 自 2020 年 10 月 8 日起,Release R“Android TV”系统映像将不再以 root 身份运行。 解决方法:改用 Release Q(API 级别 29)Android TV 系统映像。

测试它:启动模拟器,然后运行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 中,使用菜单命令 Tools > AVD Manager
  2. 点击+创建虚拟设备...按钮。
  3. 选择虚拟硬件,然后点击下一步
  4. 选择一个系统映像。
    • 在“目标”列中选择显示“(Google Play)”的任何图片。
    • 如果您依赖 Google API(Google Sign In、Google Fit 等),请选择标有“(Google API)”的图片。
    • 您可能需要从“推荐”组切换到“x86 图片”或“其他图片”组才能找到。
  5. 如果需要,请单击下载按钮。
  6. 完成创建新的 AVD。
    • 提示:AVD 名称以 API 级别编号开头,以便虚拟设备列表按 API 级别排序。
  7. 启动您的新 AVD。 (您可以单击 AVD 窗口中的绿色“播放”三角形。

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

【讨论】:

  • su 给我“su: not found”
  • 如何安装Google APIs Intel x86 Atom System Image
  • @RoniCastro 我添加了执行此操作的步骤。
  • 谢谢伙计,sqlite 调试让我无处可去,intel x86 等旧系统映像在模拟器调试中工作。我必须使用命令“adb root”以 root 身份重新启动 adb 才能访问根文件夹。
  • @Darkmike 当前的 Release R Android TV 系统映像不会以 root 身份运行,因此请改用 Release Q(API 级别 29)Android TV 系统映像。
【解决方案2】:

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

【讨论】:

  • 我刚刚从 Android Studio 菜单创建了一个模拟器,就像我之前做的那样。
  • 可能和以前不完全一样,试试没有 Google API 的图片
  • 调试版本也有 Google API。
  • @guness 在“选择系统映像页面”上,您需要从 SECOND 选项卡中选择“Android XX (Google API)”映像,而不是从第一个选项卡,这是默认选择的。
  • @Merk :我想在模拟器中运行 playstore,并且还希望 root 能够用于研究目的。有什么解决办法吗?到目前为止,我唯一的解决方案是一台带有 playstore 的 root 设备。
【解决方案3】:

转到工具 -> SDK 管理器 -> Android SDK -- 现在 在第一个选项卡(SDK 平台)中,首先“选择”在页面底部显示包详细信息。 现在选择“Google APIs Intel x86 Atom System Image”和取消选择“Google Play Intel x86 Atom System Image”。 此模拟器不会显示“adbd 无法在生产构建中以 root 身份运行”。 Google API 没有 Play Store 应用,只有 Play 服务。

【讨论】:

  • 在模拟器中拥有 playstore 以及在同一个模拟器中拥有 root 访问权限的任何解决方案?我尝试将 playstore (com.android.vending) 安装到模拟器中(使用 Google API 映像),但没有成功。
【解决方案4】:

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

buildTypes {
      release {
         signingConfig signingConfigs.debug
      }
}

改为

buildTypes {
    debug{
        debuggable true
    }
}

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

【讨论】:

    猜你喜欢
    • 2014-10-05
    • 2019-05-08
    • 2016-01-25
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 2014-07-16
    • 2013-06-29
    相关资源
    最近更新 更多