当前位置:   article > 正文

AudioServer的系统启动流程_start audioserver

start audioserver

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

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

init进程对应main函数

system/core/init/init.cpp

  1. int main(int argc, char** argv) {
  2. //......
  3. LoadBootScripts(am, sm);
  4. //......
  5. }

接着看LoadBootScripts

  1. static void LoadBootScripts(ActionManager& action_manager, ServiceList& service_list) {
  2. Parser parser = CreateParser(action_manager, service_list);
  3. std::string bootscript = GetProperty("ro.boot.init_rc", "");
  4. if (bootscript.empty()) {
  5. parser.ParseConfig("/init.rc");
  6. if (!parser.ParseConfig("/system/etc/init")) {
  7. late_import_paths.emplace_back("/system/etc/init");
  8. }
  9. if (!parser.ParseConfig("/product/etc/init")) {
  10. late_import_paths.emplace_back("/product/etc/init");
  11. }
  12. if (!parser.ParseConfig("/odm/etc/init")) {
  13. late_import_paths.emplace_back("/odm/etc/init");
  14. }
  15. if (!parser.ParseConfig("/vendor/etc/init")) {
  16. late_import_paths.emplace_back("/vendor/etc/init");
  17. }
  18. } else {
  19. parser.ParseConfig(bootscript);
  20. }
  21. }

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
中有如下配置代码:

  1. system/core/rootd ir/init. re
  2. on nonencrypted
  3. exec_start update_verifier_nonencrypted
  4. start netd/ /1
  5. start zygote
  6. start zygote_secondary

这里会启动zygote

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

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

frameworks/av/media/audioserver/audioserver.rc

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号