ADB root 无法在模拟器上运行(无法在生产版本中以 root 身份运行)

Posted

技术标签:

【中文标题】ADB root 无法在模拟器上运行(无法在生产版本中以 root 身份运行)【英文标题】:ADB root is not working on emulator (cannot run as root in production builds) 【发布时间】: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' 吗?它显示相同的东西吗? 【参考方案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身份运行的模拟器镜像:

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

【讨论】:

以上是关于ADB root 无法在模拟器上运行(无法在生产版本中以 root 身份运行)的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Android Studio 上启动模拟器:EventQueue.isDispatchThread()=false,然后无法定位 adb

Android Studio 错误:无法找到 adb 位置

AVD 管理器错误:“无法找到 adb”

Android ADB 无法在 ubuntu 14.04 LTS 上启动或无法在模拟器中启动 AVD

Android Studio:“无法定位 ADB”和模拟器屏幕出错,颤振

错误:无法在 Android Studio 的 SDK 中找到 adb