- 7
- 0
- 约9.17千字
- 约 38页
- 2017-06-29 发布于贵州
- 举报
第十二章 JAVA启动流程、调试和程序结构
第 * 页 Android系统移植 第九章 Java启动流程和程序结构 一、java部分的启动流程 二、jni的基本概念 三、jni的实现 四、框架层中使用jni 五、APK中使用jni 9.1 java部分的启动流程 Android系统的本地部分启动完成后,将形成一系列的守护进程,其中的名称为zygote的守护进程将继续完成java部分的初始化,java部分初始化结束后,形成zygote、SystemServer以及若干个java应用的进程,系统进入正常运行阶段。 9.1.1 启动流程概述 Android系统java部分的启动主要涉及以下几个实体:作为zygote运行的本地可执行程序,java框架库中的zygoteInit,java服务库当中的SystemServer和个服务,java服务库对应的JNI本地库libandroid_sercers.so,系统服务器的本地库libandroid_sercers.so。 Java的启动流程可以分成以下的几个步骤。 从本地可执行程序运行名为zygote的守护进程 Zygote运行ZygoteInit(进入java程序) ZygoteInit运行SystemServer(java类),并分裂出一个新的进程, SystemServer首先运行libandroid_sercers.so库当中的初始化(进入本地程序)。 执行libandroid_sercers.so当中的系统初始化。 SystemServer中的java初始化再次被调用(再入java程序)。 建立ServerThread线程。 9.1.1 启动流程概述 ServerThread线程建立各个服务,然后进出入循环 ActivityManagerServer服务在启动结束发送相关消息。 各个java应用程序运行。 启动的过程中,经历了复杂的调用过程,有从本地到java的调用,有java之间的调用,有java调用本地,也有本地之间的调用,最终主要工作,在名称为ServerThread的java线程中完成。 Java启动完成后,android进入正常的运行状态中,此时,与java相关进程主要有以下3个部分。 Zygote:本质是本地守护进程,最终进入循环状态。 System_server:java的第一个守护进程,其中也包括若干个线程,并进入循环。 各个java应用程序:他们并行存在,互相依赖关系。 从liunx系统运行的角度上,SystemServe和各个java应用程序内的进程都是zygote进程的子进程。 9.1.1 启动流程概述 Android java部分的启动流程如图 途中实线部分表示java系统相关的实体,其中有本地的内容也有java的内容,右侧虚线框中的内容分表示运行时的进程情况。 在java的启动过程中,java服务库的重点,它调用了本地的部分初始化,然后建立了java层的各个服务,在系统正常的运行过程中,这些服务是android java系统的公共部分和后台部分。 9.1.2 java系统的守护进程 Zygote是通过init进程读取的init.rc启动的一个守护进程的民称,在init.rc中执行性内容的相关部分如下图所示。 名称Zygote的服务的执行者,实际上是/system/bin/app_process的可执行程序,后面的内容是app_process的执行参数。 app_process的代码路径为frameworks/base/cmds/app_process,生成名称为app_process的可执行程序,会连接libandroid_runtime.so动态库,间接连接Dalvik虚拟机的libdvm.so库调用Dalvik虚拟机。 其中app_mian.cpp文件中的main()函数为可执行程序入口,主要的代码片段如下: 9.1.2 java系统的守护进程 其中的appruntime实际上是运行库androidRuntime的继承者,可以视为一个封装类,app_process执行后,根据传入的参数不同有两条运行路径。 第一个分支:当命令具有—zygote参数的时候,将进程的名称设置为zygote然后调用java内部的类zygoteinit,完成java环境第一步启动。 。 9.1.2 java系统的守护进程 第二个分支,当命令程序没有—zygote参数的时候,将进程的名称设置为第一个参数,然后根据类名启动程序。 App_process可执行程序作为zygote守护进程运行的时候,显然调用的是第一个分支,根据参数的传递情况,其调用的是AppRuntime类的start()函数传入的第一个参数为java的类名 第二个参数为startsystemserver,根据命令行的参数,其数值为true,这个过程是在本地
您可能关注的文档
- 第五单元复习课导学案.doc
- 第五届全国高中数学青年教师观摩与评比活动:《同角三角函数的基本关系》教学设计(云南师大附中王泽娟) 2.doc
- 第五章 三角函数习题.docx
- 第五章 数列 空白.docx
- 第五章 时间数列(2013.2修改 ).ppt
- 第五章反比例函数单元复习.doc
- 第五章圆的复习(圆的基本元素)--上课.ppt
- 第五章数列第一节数列的概念与简单表示法.ppt
- 第五章数列第三节等比数列.ppt
- 第五章数列考点基本功训练.docx
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- 2025统编版小学道德与法治三年级下册教学计划、教学设计附教学反思(附目录).docx
- 2026年廉政答案考试题库(考试直接用).docx VIP
- 虚列费用培训课件.ppt VIP
- Z20名校联盟(浙江省名校新高考研究联盟)2026届高三第二次联考日语含答案.doc VIP
- 煤矿2026年机电工作计划方案.docx VIP
- 企业合规法律服务指引(湖北省律师协会法律顾问专委会).pdf VIP
- Qu系列说明书QU16&QU24(加强版).pdf VIP
- 数学与生活:一元二次方程的起源.pptx VIP
- 事业单位d类综合应用能力必背知识点.pdf VIP
- (课堂用)TheFutureoftheEnglish(课件.ppt VIP
原创力文档

文档评论(0)