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 ADB 无法在 ubuntu 14.04 LTS 上启动或无法在模拟器中启动 AVD