在AOSP中执行“adb reboot”时如何正确设置持久标志?

时间:2018-01-17 13:36:35

标签: android-source android-8.0-oreo

根据主题,我只找到了正确的.c文件来设置“adb shell reboot”(system / core / reboot / reboot.c)中的persist标志,但我在“adb reboot”中找不到它”。两个重启命令有什么区别?

1 个答案:

答案 0 :(得分:1)

管理adbd初始行为的标志是“ro”,因此不能在正在运行的系统上更改,而只能通过重新生成启动映像。

should_drop_privileges()源代码的相关部分有解释性注释。

// The properties that affect `adb root` and `adb unroot` are ro.secure and
// ro.debuggable. In this context the names don't make the expected behavior
// particularly obvious.
//
// ro.debuggable:
//   Allowed to become root, but not necessarily the default. Set to 1 on
//   eng and userdebug builds.
//
// ro.secure:
//   Drop privileges by default. Set to 1 on userdebug and user builds.

通常,您可以使用eng而不是userdebug版本来实现目标,或者将这些设置自定义为与所选构建版本的默认值不同的值。

  • eng

    • 默认到root
    • adbd默认运行
    • 不需要adb键
    • ro.debuggable = 1,ro.secure = 0
  • userdebug

    • 允许adb-root
    • adbd默认运行
    • 不需要adb键
    • ro.debuggable = 1,ro.secure = 1
  • user

    • 不允许adb-root
    • 默认情况下,
    • adbd off,直到在“设置”
    • 中启用
    • 需要adb键
    • ro.debuggable = 0,ro.secure = 1

实际上,每次需要使用adb root时,最简单的方法就是执行user。在脚本中,您可以通过一两秒或更好的睡眠来跟踪它,然后轮询设备以再次开始响应。最终尝试将您需要做的事情以root身份完成到构建系统的原始配置中,这样您最终可能会在生产中使用adb root风格构建(.k-dialog.k-alert .k-dialog-titlebar { background-color: #333; color: #eee; } .k-dialog.k-alert .k-button { background-color: #333; color: #eee; } 不支持),除非您的目标是为实验者而不是交钥匙用户制作设备。