我们知道,Android 中的系统服务分为两类,分别是 Java 层和 Native 层的 System Services。Java 层服务通常在 SystemServer.java 中启动,比如前面的 AudioService 就是这种情况。而 Native 层服务则通常是各服务方按照自己的特定部署来决定何时启动、如何启动。
一、audioserver初始化
1、进程启动
audioserver 进程是通过 init 进程fork出来 audioserver 进程。
源码位置:/frameworks/av/media/audioserver/audioserver.rc
service audioserver /system/bin/audioserver
class core
user audioserver
# media gid needed for /dev/fm (radio) and for /data/misc/media (tee)
group audio camera drmrpc media mediadrm net_bt net_bt_admin net_bw_acct wakelock
capabilities BLOCK_SUSPEND
ioprio rt 4
task_profiles ProcessCapacityHigh HighPerformance
onrestart restart vendor.audio-hal
onrestart restart vendor.audio-hal-4-0-msd
# Keep the original service names for backward compatibility
onrestart restart vendor.audio-hal-2-0
onrestart restart audio-hal-2-0
on property:vts.n