从零开始学Android之通过启动过程分析Android Framework

2015-12-23 17:13:58 688浏览

       Android源码数量极其庞大,以Android 2.2为例,除去Linux代码,代码数量大于4GB。若想理解和掌握这么庞大的Android系统,需要耗费大量的时间,付出极大的努力。并且,到现在为止,也没有相关资料对Android Frame作系统完整的讲解说明。

       那么,分析Android Framework用什么方法好呢?回答这一问题之前,先回想一下我们是如何分析他人编写的程序代码的。在分析程序代码时,我们通常从程序的入口main()函数开始,一点点地理清程序流,把握程序的运行过程。同样,在Android开发者分析结构庞大的Android Framework时,也要从Android平台启动过程着手。Android启动过程包含从Linux内核加载到Home应用程序启动的整个过程,依次分析这一过程,有利于我们系统地理解Android Framework运行的原理。

       从零开始学Android之通过启动过程分析Android Framework:

       一、Linux内核

       Android是基于Linux内核的系统平台。启动时,首先通过bootloader(系统加载器),加载Linux内核。在Linux加载启动时,与普通的Linux启动过程相同,先初始化内核,然后调用init进程。

       二、mlt

       Android init进程对各种设备进行初始化,运行Android Framework所需用的各种Daemon、Context Manager、Media Server、Zygote等。以下是init进程执行的Daemon进程。

       1、USB Daemon(usbd):管理USB连接。

       2、Android Debug Bridge Daemon(adbd):Android Debug Bridge连接管理。

       3、Debugger Daemon(debuggerd):启动Debugger系统。

       4、Radio Interface Layer Daemon(rild):管理无线通信连接。

       三、Context Manager

       Context Manager是一个管理Android系统服务的重要进程。系统服务是组成Android Framework的重要组件,提供从相机、音频、视频处理到各种应用程序制作所需要的重要的API。Context Manager提供运行于Android内的各种系统服务信息。应用程序或Framework内部模块在调用系统服务时,需要先向服务管理器申请,而后通过Binder IPC(Interprocesscommunication)调用系统服务。在系统启动时,Android所有系统服务都要把各自的handle信息注册到Context Manager,此时,Binder IPC用来进行进程问的通信。

       四、Media Server

       Media Server用于运行基于C/C++的本地系统服务,如Audio Flinger(负责音频输出)、Camera等。

       五、Zygote

       Zygote进程用于缩短Android应用栩芋加载的时间,每当执行Java应用程序时,Zygote就会派生出‘个子进程来执行应用程序,该子进程就是用来执行Java应用程序的虚拟机。

       六、System Server

       System Server是Android系统的‘个核心进程,它是由Zygote进程创建的,在Android启动过程中位于Zygote之后。在System Server中可以看到它建立的Android中的大部分服务,如Activity Manager Service(管理应用程序的生命周期)、Location Manager Service(提供终端的地理位置信息)等。

       以上就是对Android启动过程以及Framework初始化的简单介绍。当然这仅仅是Android启动过程的一部分,当所有Java系统服务加载完毕后,Activity Manager Service会运行HOME应用,启动过程继续进行。如果读者感兴趣,请参照扣丁学堂Android在线课程讲述的源码进行分析。

查看更多关于“Android资讯”的相关文章>>

标签:

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号