代码之家  ›  专栏  ›  技术社区  ›  Kurt Peek

“adb root”命令返回“即使在模拟器上,adbd也不能在生产版本中作为根运行”。

  •  1
  • Kurt Peek  · 技术社区  · 6 年前

    我在试着运行 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 root命令只在开发构建中工作(即,默认情况下,eng和userdebug的ro.debuggable=1)。或者,您可以使用修改过的adbd二进制文件(它不检查ro.debugtable)

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

    更新 我发现了一些额外的说明,这些说明让我相信,要使这个工作,您需要使您的模拟器成为一个“可写系统”(参见。 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.
    

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

    1 回复  |  直到 6 年前
        1
  •  4
  •   Nguyen Duc An    6 年前

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

    • Jackpot2Lite:/=>工程师构建
    • jackpot2Lite:/$=>用户生成

    只有工程师构建才能授予您根权限。不能将用户生成更改为工程师生成,但可以“根”它。 请核对一下 "How to get root access on Android emulator?" 更多信息。