http://blog.csdn.net/yangwen123/article/details/8023654

一般开机过程大致可以分为三个大阶段:

1. OS级别,由bootloader载入Linux kernel后,kernel开始初始化, 并载入built-in的驱动程序。Kernel完成开机后,载入init process,切换至user-space后,结束kernel 的循序过程(sequence),进入排程模式(process scheduling)。

2. Android-level,由init process 开始,读取init.rc,Native服务启动,并启动重要的外部程序,例如:servicemanager、Zygote以及System Server。

3. Zygote-Mode,Zygote启动完System Server后,进入Zygote Mode,在Socket 等候命令。随后,使用者将看到一个桌面环境(Home Screen)。桌面环境由一个名为Launcher的应用程序负责提供。

注:Zygote主要负责启动System server和执行android程序(APK)。成功启动System server后会使用socket方式监听(monitorandroid apps/prcesses)

查看init.rc文件显示,系统首先启动servicemanager,然后启动zygote:

[plain] view plaincopy
  1. service ueventd /sbin/ueventd
  2. class core
  3. critical
  4. service console /system/bin/sh
  5. class core
  6. console
  7. disabled
  8. user shell
  9. group log
  10. service adbd /sbin/adbd
  11. class core
  12. disabled
  13. service servicemanager /system/bin/servicemanager
  14. class core
  15. user system
  16. group system
  17. critical
  18. onrestart restart zygote
  19. onrestart restart media
  20. onrestart restart surfaceflinger
  21. onrestart restart drm
  22. service vold /system/bin/vold
  23. class core
  24. socket vold stream 0660 root mount
  25. ioprio be 2
  26. service netd /system/bin/netd
  27. class main
  28. socket netd stream 0660 root system
  29. socket dnsproxyd stream 0660 root inet
  30. socket mdns stream 0660 root system
  31. service debuggerd /system/bin/debuggerd
  32. class main
  33. service surfaceflinger /system/bin/surfaceflinger
  34. class main
  35. user system
  36. group graphics
  37. onrestart restart zygote
  38. service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
  39. class main
  40. socket zygote stream 660 root system
  41. onrestart write /sys/android_power/request_state wake
  42. onrestart write /sys/power/state on
  43. onrestart restart media
  44. onrestart restart netd
  45. service drm /system/bin/drmserver
  46. class main
  47. user drm
  48. group drm system inet drmrpc sdcard_r
  49. service media /system/bin/mediaserver
  50. class main
  51. user media
  52. group audio camera inet net_bt net_bt_admin net_bw_acct drmrpc system
  53. ioprio rt 4
  54. service bootanim /system/bin/bootanimation
  55. class main
  56. user graphics
  57. group graphics
  58. disabled
  59. oneshot
  60. service dbus /system/bin/dbus-daemon --system --nofork
  61. class main
  62. socket dbus stream 660 bluetooth bluetooth
  63. user bluetooth
  64. group bluetooth net_bt_admin
  65. service bluetoothd /system/bin/bluetoothd -n
  66. class main
  67. socket bluetooth stream 660 bluetooth bluetooth
  68. socket dbus_bluetooth stream 660 bluetooth bluetooth
  69. # init.rc does not yet support applying capabilities, so run as root and
  70. # let bluetoothd drop uid to bluetooth with the right linux capabilities
  71. group bluetooth net_bt_admin misc
  72. disabled
  73. service installd /system/bin/installd
  74. class main
  75. socket installd stream 600 system system
  76. service flash_recovery /system/etc/install-recovery.sh
  77. class main
  78. oneshot
  79. service racoon /system/bin/racoon
  80. class main
  81. socket racoon stream 600 system system
  82. # IKE uses UDP port 500. Racoon will setuid to vpn after binding the port.
  83. group vpn net_admin inet
  84. disabled
  85. oneshot
  86. service mtpd /system/bin/mtpd
  87. class main
  88. socket mtpd stream 600 system system
  89. user vpn
  90. group vpn net_admin inet net_raw
  91. disabled
  92. oneshot
  93. service keystore /system/bin/keystore /data/misc/keystore
  94. class main
  95. user keystore
  96. group keystore drmrpc
  97. socket keystore stream 666
  98. service dumpstate /system/bin/dumpstate -s
  99. class main
  100. socket dumpstate stream 0660 shell log
  101. disabled
  102. oneshot
  103. service sshd /system/bin/start-ssh
  104. class main
  105. disabled
  106. service mdnsd /system/bin/mdnsd
  107. class main
  108. user mdnsr
  109. group inet net_raw
  110. socket mdnsd stream 0660 mdnsr inet
  111. disabled
  112. oneshot
  113. service vtserver /system/bin/vtserver
  114. user root
  115. disabled
  116. oneshot

Android 启动过程介绍相关推荐

  1. Android KK(4.4) 以太网和DHCP启动过程介绍

    Android KK(4.4) 以太网和DHCP启动过程介绍 1. ethernet启动流程 2. DHCP启动过程 2.1 JNI层接口 2.2 DHCP客户端(libnetutils) 2.3 D ...

  2. Android启动过程深入解析【转】

    转自:http://www.open-open.com/lib/view/open1403250347934.html 当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么 ...

  3. Android启动过程深入解析

    当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样的? 什么是Linux内核? 桌面系统linux内核与Android系统linux内核有什么区别? 什么是引导装载程序 ...

  4. Android 启动过程简析(一)之 init 进程

    问题 在进入到 Android 启动过程之前先让我们思考以下几个问题 Android 系统的启动过程是怎样的? init .zygote 进程是什么?在系统启动的过程中各自发挥了什么作用? AMS.P ...

  5. 【Android 启动过程】Activity 启动源码分析 ( ActivityThread 流程分析 二 )

    文章目录 前言 一.ActivityManagerService.attachApplicationLocked 二.ActivityStackSupervisor.attachApplication ...

  6. 【Android 启动过程】Activity 启动源码分析 ( ActivityThread -> Activity、主线程阶段 二 )

    文章目录 前言 一.ActivityThread 类 handleLaunchActivity -> performLaunchActivity 方法 二.Instrumentation.new ...

  7. 【Android 启动过程】Activity 启动源码分析 ( ActivityThread -> Activity、主线程阶段 一 )

    文章目录 前言 一.ClientTransactionHandler.scheduleTransaction 二.ActivityThread.H 处理 EXECUTE_TRANSACTION 消息 ...

  8. 【Android 启动过程】Activity 启动源码分析 ( AMS -> ActivityThread、AMS 线程阶段 二 )

    文章目录 前言 一.热启动与冷启动选择 二.AMS 进程中执行的相关操作 三.通过 Binder 机制转到 ActivityThread 中执行的操作 总结 前言 上一篇博客 [Android 启动过 ...

  9. Android启动过程以及各个镜像的关系

    Android启动过程 Android在启动的时候,会由UBOOT传入一个init参数,这个init参数指定了开机的时候第一个运行的程序,默认就是init程序,这个程序在ramdisk.img中.可以 ...

  10. symfony入门学习资料之十六:Symfony框架启动过程介绍

    symfony入门学习资料之十六:Symfony框架启动过程介绍 Symfony框架的核心本质是把Request转换成Response的一个过程.从入口文件(web_dev.php)的源码可以看个大概 ...

最新文章

  1. struts2中用户登陆验证的常用方法
  2. formdata传递参数_前端利用formData格式进行数据上传,前端formData 传值 和 json传值的区别?...
  3. 【LeetCode】617. 合并二叉树
  4. 浅谈Java中的==和equals
  5. mysql DDL数据定义语言
  6. 推荐系统相关算法(2):k-nearest neighbor
  7. Codeforces Round #614 (Div. 2) D. Aroma‘s Search 暴力 + 思维
  8. 编写自动调试器以在测试执行期间捕获异常
  9. Wait waitpid
  10. 3d打印 开源_公开地图以实现可持续性,在农场进行3D打印以及更多开源新闻
  11. 从激活windows10家庭中文版到企业版再到开启Hyper-V
  12. [转]2020年4月github上最热门项目-java
  13. 机器视觉:SLAM技术详解
  14. Kaldi AMI数据集脚本学习5---AMI mono phone文件 40.mdl分析
  15. 【转】使用 Element-UI 的 Loading 组件-以服务的方式调用
  16. t分布 u分布 卡方分布_t分布, 卡方x分布,F分布
  17. 10、持续集成流水线实践:流水线建设从Jenkins部署开始
  18. vant中的swipe
  19. 详解Flutter中各种Binding
  20. 子网掩码是什么?子网掩码及其CIDR斜杠表示法

热门文章

  1. Autorun病毒kocmbcd.exe分析
  2. 团队管理之领导力阅读感悟
  3. VMware Ubuntu18.10与Win10共享文件夹
  4. 腾讯云轻量应用服务器如何开通使用主机安全?
  5. 英语发音之音标4---长元音法()
  6. linux忘记git库密码,忘记gitlab的root密码
  7. PAT 1037 在霍沃茨找零钱
  8. css实现超过两行用...表示
  9. css3 标点符号在首位,CSS 让标点符号不出现在行首
  10. ICQ官方中文版 v10.0.12161.0