android 核心分析之------Android 启动过程详解

android 核心分析之------Android 启动过程详解

ID:42769865

大小:217.00 KB

页数:8页

时间:2019-09-20

android 核心分析之------Android 启动过程详解_第1页
android 核心分析之------Android 启动过程详解_第2页
android 核心分析之------Android 启动过程详解_第3页
android 核心分析之------Android 启动过程详解_第4页
android 核心分析之------Android 启动过程详解_第5页
资源描述:

《android 核心分析之------Android 启动过程详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Android核心分析之------Android启动过程详解Android从Linux系统启动有4个步骤;(1)init进程启动(2)Native服务启动(3)SystemServer,Android服务启动(4)Home启动总体启动框架图如:第一步:initial进程(system/core/init)init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。init始终是第一个进程.I

2、nit.rcInit.marvell.rcInit进程一起来就根据init.rc和init.xxx.rc脚本文件建立了几个基本的服务:servicemanamgerzygote。。。最后Init并不退出,而是担当起propertyservice的功能。1.1脚本文件init@System/Core/InitInit.c:parse_config_file(Init.rc)@parse_config_file(Init.marvel.rc)解析脚本文件:Init.rc和Init.xxxx.rc(硬件平台相关)Init.r

3、c是Android自己规定的初始化脚本(AndroidInitLanguage,System/Core/Init/readme.txt)该脚本包含四个类型的声明:ActionsCommandsServicesOptions.1.2服务启动机制我们来看看Init是这样解析.rc文件开启服务的。(1)打开.rc文件,解析文件内容@system/core/init/init.c将service信息放置到service_list中。@system/core/initparser.c(2)restart_service()@sy

4、stem/core/init/init.cservice_startexecve(…).建立service进程。第二步ZygoteServicemanager和zygote进程就奠定了Android的基础。Zygote这个进程起来才会建立起真正的Android运行空间,初始化建立的Service都是Navtiveservice.在.rc脚本文件中zygote的描述:servicezygote/system/bin/app_process-Xzygote/system/bin--zygote--start-system-

5、server所以Zygote从main(…)@frameworks/base/cmds/app_main.cpp开始。(1)main(…)@frameworks/base/cmds/app_main.cpp建立JavaRuntimeruntime.start("com.android.internal.os.ZygoteInit",startSystemServer);(2)runtime.start@AndroidRuntime.cpp建立虚拟机运行:com.android.internal.os.ZygoteIni

6、t:main函数。(3)main()@com.android.internal.os.ZygoteInit//正真的Zygote。registerZygoteSocket();//登记Listen端口startSystemServer();进入Zygote服务框架。经过这几个步骤,Zygote就建立好了,利用Socket通讯,接收ActivityManangerService的请求,Fork应用程序。第三步SystemServerstartSystemServer@com.android.internal.os.Zyg

7、oteInit在Zygote上fork了一个进程:com.android.server.SystemServer.于是SystemServer@(SystemServer.java)就建立了。Android的所有服务循环框架都是建立SystemServer@(SystemServer.java)上。在SystemServer.java中看不到循环结构,只是可以看到建立了init2的实现函数,建立了一大堆服务,并AddService到serviceManager。main()@com/android/server/Sys

8、temServer{init1();}Init1()是在Native空间实现的(com_andoird_server_systemServer.cpp)。我们一看这个函数就知道了,init1->system_init()@System_init.cpp在system_init()我们看到了循环闭合管理框架。{Call"com/an

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。