【问题标题】:Where are the Android system services started?Android系统服务是从哪里启动的?
【发布时间】:2013-12-01 05:59:17
【问题描述】:

在 Embedded Android 一书中,它说

在 init.rc 中,只有一个动作会导致命令的执行。服务声明仅用于描述服务,它们实际上并不启动任何东西......(第 246 页)。

那么,Android 系统服务(例如 servicemanager、vold)是从哪里启动的?我认为它们是通过以下几行在 init.rc 中启动的。但是按照书上的说法,我错了。

service servicemanager \/system/bin/servicemanager

service vold /system/bin/vold

【问题讨论】:

  • 系统服务是什么意思? linux 服务还是以编程方式访问的 Android 服务?后者由 Zygote 懒洋洋地负责。
  • @Snicolas 当我说系统服务时,我的意思是像 servicemanager、vold、adbd 等在 zygote 中没有启动的原生守护进程
  • 没错,它们必须是由linux系统底层启动的。抱歉,我帮不上忙。

标签: android init platform


【解决方案1】:

我找到了答案。

“服务声明仅用于描述服务,它们实际上并不启动任何东西”的说法是正确的。本机守护进程实际上是在 init.rc 中通过以下几行启动的: (https://android.googlesource.com/platform/system/core/+/master/rootdir/init.rc 中的第 371-372 行)

  • class_start 核心
  • class_start main

属于 core 类和 main 类的所有守护进程分别启动。

【讨论】:

    猜你喜欢
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多