Android 启动流程
博客分类:
Android资讯
AndroidJavaITeye脚本Socket
SystemServer的启动
frameworks/base/services//android/server/: run()
(),
最终会调用到frameworks/base/packages/SettingsProvider//android/providers/settings/下
的各个content providers的onCreate()函数,初始化数据库内容。。。
android 启动流程
other ref:ktu/archive/2010/07/02/
Android从Linux系统启动有4个步骤;
(1) init进程启动
(2) Native服务启动
(3) System Server,Android服务启动
(4) Home启动
总体启动框架图如:
android 启动流程
第一步:initial进程(system\core\init)
init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。init始终是第一个进程.
android 启动流程
:
* servicemanamger
* zygote
。。。
最后Init并不退出,而是担当起property service的功能。
******@System/Core/Init
: parse_config_file()
***@parse_config_file()
解析脚本文件:(硬件平台相关)
(Android Init Language, System/Core/Init/)
该脚本包含四个类型的声明:
* Actions
* Commands
* Services
* Options.
服务启动机制
。
(1),解析文件内容@ system\core\init\
将service信息放置到service_list中。@ system\core\init
(2)restart_service()@ system\core\init\
service_start
execve(…).建立service进程。
第二步 Zygote
Servicemanager和zygote进程就奠定了Android的基础。Zygote这个进程起来才会建立起真正的Android运行空间,初始化建立的Service都是Navtive :
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
所以Zygote从main(…)***@frameworks\base\cmds\app_process\。
(1) main(…)***@frameworks\base\cmds\app_process\
* 建立Java Runtime
* ("", startSystemServer);
(2) runtime.******@frameworks/base/core/jni/
* 建立虚拟机:startVM(...)
* .:main函数。
(3)main()***@//正真的Zygote。
* registerZygoteSocket();//登记Listen端口
Android 启动流程 来自淘豆网m.daumloan.com转载请标明出处.