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

2024-04-18

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

$ adb devices
List of devices attached
emulator-5554   device

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

$ adb root
adbd cannot run as root in production builds

我尝试遵循这个答案,adb shell su 可以工作,但 adb root 不能 https://stackoverflow.com/questions/25477424/adb-shell-su-works-but-adb-root-does-not,解决我的问题:

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

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

Update我发现了一些额外的说明,这些说明使我相信要使其工作,您需要使您的模拟器成为“可写系统”(参见如何使模拟器中AVD中的系统分区可写 https://stackoverflow.com/questions/42647209/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.

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


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

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

只有工程师构建才能给你root权限。您无法将用户版本更改为工程师版本,但您可以“root”它。 请检查“如何在 Android 模拟器上获得 root 访问权限?” https://stackoverflow.com/questions/5095234/how-to-get-root-access-on-android-emulator了解更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐