即使在模拟器上,“adb root”命令也会返回“adbd 无法在生产版本中以 root 身份运行”?

Kur*_*eek 4 android adb

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

$ adb devices
List of devices attached
emulator-5554   device
Run Code Online (Sandbox Code Playgroud)

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

$ adb root
adbd cannot run as root in production builds
Run Code Online (Sandbox Code Playgroud)

我试过按照这个答案,adb shell su 工作但 adb root 没有,以解决我的问题:

通过设计 adb root 命令仅适用于开发版本(即默认情况下具有 ro.debuggable=1 的 eng 和 userdebug)。或者,您可以使用修改后的 adbd 二进制文件(不检查 ro.debuggable)

但是,我不清楚如何将构建更改为开发构建而不是生产构建?

更新 我发现了一些额外的说明,这让我相信要使其工作,您需要使您的模拟器成为“可写系统”(参见如何在模拟器可写的 AVD 中制作系统分区)。但是,如果我尝试

$ 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.
Run Code Online (Sandbox Code Playgroud)

我不太确定如何解析此错误消息;这是否意味着系统映像已经可写?

小智 7

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

  • jackpot2lte:/ # => 工程师构建
  • jackpot2lte:/ $ => 用户构建

只有工程师构建可以给你root权限。您不能将用户构建更改为工程师构建,但您可以“root”它。请检查“如何在 Android 模拟器上获得 root 访问权限?” 想要查询更多的信息。


小智 6

选择一个未标记为“Google Play”的模拟器系统映像。

来自/sf/answers/3196798881/