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
    评论
Audioserver是一个系统进程,它在系统启动后开始执行。它主要负责启动两个子线程,作为Audio的服务端。这两个子线程分别是AudioFlinger和AudioPolicyService。其中,AudioFlinger是一个重要的组件,它负责处理音频的播放、录制和混音等功能。而AudioPolicyService则负责管理音频策略,例如音频路由和音量控制等。\[1\]在系统启动的过程中,Audioserver的执行涉及到多个步骤,其中包括调用AudioFlinger和AudioPolicyService的相关函数。例如,在第一步中,Audioserver会调用AudioFlinger的函数来创建音频路径。而在第四步中,Audioserver会调用Audio HAL来创建音频补丁。\[2\]\[3\]总的来说,Audioserver是Android系统中负责处理音频相关功能的重要组件。 #### 引用[.reference_title] - *1* [Android Audio开发——audioserver初始化(四)](https://blog.csdn.net/c19344881x/article/details/130621774)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【Android Audio】audioserver与audio hal hidl通信](https://blog.csdn.net/u013120422/article/details/108388584)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值