AudioServer的系统启动流程

Android 音频源码分析——audioserver启动_奋斗的菜鸟ing-CSDN博客_android audioserver 启动

Android系统启动:加载引导程序-》引导程序-》Linux内核启动-》启动init进程-》zygote进程-》SystemServer-》Launcher。

init进程对应main函数

system/core/init/init.cpp

int main(int argc, char** argv) {
	//......
    LoadBootScripts(am, sm);
    //......
}

接着看LoadBootScripts

static void LoadBootScripts(ActionManager& action_manager, ServiceList& service_list) {
    Parser parser = CreateParser(action_manager, service_list);

    std::string bootscript = GetProperty("ro.boot.init_rc", "");
    if (bootscript.empty()) {
        parser.ParseConfig("/init.rc");
        if (!parser.ParseConfig("/system/etc/init")) {
            late_import_paths.emplace_back("/system/etc/init");
        }
        if (!parser.ParseConfig("/product/etc/init")) {
            late_import_paths.emplace_back("/product/etc/init");
        }

        if (!parser.ParseConfig("/odm/etc/init")) {
            late_import_paths.emplace_back("/odm/etc/init");
        }
        if (!parser.ParseConfig("/vendor/etc/init")) {
            late_import_paths.emplace_back("/vendor/etc/init");
        }
    } else {
        parser.ParseConfig(bootscript);
    }
}

LoadBootScrips,会首先加载init.rc文件,然后会加载/system/etc/init/、/product/etc/init/、/odm/etc/init/、/vendor/etc/init目录下的rc文件。而audioserver.rc位于/system/etc/init 目录下

加载init.rc时

2.1.5 init 启动Zygote
讲完了解析Service ,接下来该讲in it 是如何启动Service 的,在这里主要讲解启动Zygote
这个Serv i ce 。在Zygote 的启动脚本中,我们可知Zygote 的classname 为main 。在init.rc
中有如下配置代码:

system/core/rootd ir/init. re
on nonencrypted
    exec_start  update_verifier_nonencrypted
    start netd/ /1
    start zygote
    start zygote_secondary

这里会启动zygote

之后,解析/system/etc/init路径下的rc文件,其中包含audioserver.rc

看一下audioserver.rc文件,init进程中加载audioserver.rc文件,并启动audioserver进程。

frameworks/av/media/audioserver/audioserver.rc

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值