android “adb root”命令返回“adbd无法在生产构建中作为root运行”,即使在模拟器上也是如此?

mctunoxg  于 2023-01-24  发布在  Android
关注(0)|答案(3)|浏览(159)

我正在模拟器上运行adb root命令;这是我连接的唯一设备:

$ adb devices
List of devices attached
emulator-5554   device

但是,我收到以下错误消息:

$ adb root
adbd cannot run as root in production builds

我尝试按照adb shell su works but adb root does not这个答案来解决我的问题:
根据设计,adb根命令仅在开发版本中有效(即eng和userdebug,默认情况下ro.debuggable=1)。或者,您可以使用修改后的adbd二进制文件(不检查ro.debuggable)
但是,我不清楚如何将构建版本更改为开发构建版本而不是生产构建版本?

更新我发现了一些额外的说明,使我相信要使它工作,您需要使您的模拟器成为一个“可写系统”(参见How to make system partition in AVD in emulator writable)。

$ emulator -avd Nexus_5X_API_28 -writable-system
emulator: WARNING: System image is writable
emulator: ERROR: Running multiple emulators with the same AVD is an experimental feature.
Please use -read-only flag to enable this feature.

我真的不知道如何解析这个错误消息;这是否意味着系统映像已经是可写的?

n7taea2i

n7taea2i1#

我查了谷歌提供的一些模拟器。它们都是用户二进制,不是工程师二进制。你可以使用“adb shell”命令自己检查。如果命令行以“#"开头,则是工程师构建。如果命令行以“$"开头,则是用户构建。例如:

  • jackpot 2lte:/ # =〉工程师版本
  • jackpot 2lte:/ $ =〉用户内部版本

只有工程师内部版本才能给予您root权限。您不能将用户内部版本更改为工程师内部版本,但可以对其进行“root”操作。有关详细信息,请查看"How to get root access on Android emulator?"

h43kikqp

h43kikqp2#

选择一个模拟器系统映像,没有标记为“Google Play”。
https://stackoverflow.com/a/45668555开始。

gev0vcfq

gev0vcfq3#

根据上面的Xanhacks答案详细说明

如果使用VSCode,请确保您可以在Android Studio中添加根虚拟设备(它可共享到VSCode)
然后搜索谷歌并下载Windows上的“adb平台工具”
使用下面的VSCode与设备交互的示例...(我已经在虚拟设备上安装了sqlite)

相关问题