(转)Android系统架构----&----Android初始化流程

Android 系统架构 分为五层

1,应用程序层

如桌面 home,E-mail客户端,SMS/MMS短消息,日历,地图,浏览器,联系人程序等···

当然还包括我们自己用写的程序,,,或是使用java中的JNI技术配合android-NDK开发的应用程序

2,应用程序框架层

为开发人员提供了可以完全访问核心应用程序所使用的API框架。。。

Activity Manager                                  管理应用程序生命周期,,比如启动程序时需要的资源和退出程序时要释放资源。。。

Window Mangaer                                管理所有开启的窗口程序。。。

Notification Mangaer                            使应用程序可以在状态栏中显示我们要向用户发送的提示信息

Resource Manager                               让我们的应用程序能够访问各种应用程序。。。。

Content Providers                                使我们的应用程序的数据能够被其他应用程序的所访问,,,如联系人中的数据

Telephony Manager                             电话拨打和接听

Location Manager                                管理地图服务

Blutooth Service                                   蓝牙服务的相关功能

WIFI Service                                        WIFI服务

USB Service                                        USB服务

Sensor Service                                    手机传感器相关的服务

3,Android中包含的一些C/C++库(程序库)

他们通过应用程序框架为我们提供服务,其中包含有:

Surface Manager                                 对显示系统进行管理,为多个应用程序提供了2D和3D的无缝融合。。

Media Framework                               支持多种格式的音频和视频的回放和录制,同时支持静态图像文件。编码包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG

SQLite                                                对所有应用程序提供的轻量级的关系型数据库。。。

OpenGL ES                                        支持OpenGL ES1.X和OpenGL ES 2.0  ,使用硬件3D加速或者使用高度优化的3D软加速

SGL                                                    skia  底层2D图形引擎

FreeType                                           位图  bitmap  和 矢量  vector 字体显示

Webkit                                               功能完善的web浏览器引擎 支持可嵌入的web 试图

SSL                                                    加密套接字协议层,安全通信相关技术

Libc                                                   google自己开发的Bionic Libc ,,从BSD继承了标准的C系统函数库,,专门为基于嵌入式Linux设备定制的

4,android runtime 库

又分为核心库和 dalvik虚拟机,,核心库提供了java语言的大多数功能,主要通过JNI的方式向应用程序框架层提供底层的接口。。。

接下来就是dalvik虚拟机。。。

5,linux kernel层 (软件层和硬件层之间的一个抽象层)

android 是 依赖于linux 2.6 版内核提供的系统服务,,,如安全,内存管理,进程管理,网络栈,驱动模块。。

android 并对他们进行了增强,,,主要有:

内存分配于共享  

低内存管理器       low memory killer

kernel 调试           kernel debugger

android中的IPC机制     binder

电源管理              power management

时钟                     alarm

Android的初始化流程

android 启动时会首先

1,启动linux系统,,然后加载,,linux kernel 并启动初始化进程,,,

2,启动USB  守护进程(daemon)  管理USB,,,

      启动 adb  守护进程  来管理adb连接,

       启动debug  守护进程  来管理调试请求,,

         启动无线接口  守护进程  管理无线通信。。。

3. 同时还会启动  zygote 进程:初始化一个dalvik虚拟机实例,,,装载socket请求所需的类和监听器。。。创建虚拟机实例来管理应用程序进程

4,接着需要初始化runtime进程:进而初始化服务管理。注册服务管理器,以它作为默认 binder 服务的Context管理器

5,runtime进程初始化后,将会发送一个请求到 zygote ,,开始启动系统服务,,将会建立一个单独的虚拟机来运行系统服务。。

      紧接系统服务会启动原生系统服务,主要包括surface flinger  和 audio flinger,,这些服务会注册到服务管理器,,service manager  来作为 IPC 服务的目标。。

6,android 会启动其他的管理服务,,如package manager,,activity manager.....等都会被注册到服务管理器中。。。

7,最后,系统加载完所有的服务之后会处于等待状态,,等待应用程序运行,,,然而每个应用程序都将启动一个单独的进程,也就是会有一个单独的dalvik 虚拟机实例。。

然后,,各进程进行交互就会用到  IPC 机制了。。

posted on 2012-07-19 16:50  未完待续  阅读(339)  评论(0编辑  收藏  举报

导航