android系统架构详解

来源:互联网 发布:sql insert into 编辑:程序博客网 时间:2024/06/05 06:40

先放上一张android系统架构图:


从上图中可以看出,Android系统架构为四层结构,从上层到下层分别是:应用程序层、应用程序框架层、系统运行库层以及Linux内核层,分别介绍如下:

1应用程序层

Android平台的应用层上包括各类与用户直接交互的应用程序,或由java语言编写的运行于后台的服务程序。例如,智能手机上实现的常见基本功能 程序,诸如SMS短信,电话拨号,图片浏览器,日历,游戏,地图,web浏览器等程序,以及开发人员开发的其他应用程序。


2应用程序框架层

应用程序框架层是我们从事Android开发的基础,很多核心应用程序也是通过这一层来实现其核心功能的,该层简化了组件的重用,开发人员可以直接使用其提供的组件来进行快速的应用程序开发,也可以通过继承而实现个性化的拓展。具体模块如下:

aActivity Manager(活动管理器)管理各个应用程序生命周期以及通常的导航回退功能

bWindow Manager(窗口管理器)管理所有的窗口程序

cContent Provider(内容提供器)使得不同应用程序之间存取或者分享数据

dView System(视图系统)构建应用程序的基本组件

eNotificationManager(通告管理器)使得应用程序可以在状态栏中显示自定义的提示信息

f)Package Manager(包管理器)Android系统内的程序管理

gTelephonyManager(电话管理器)管理所有的移动设备功能

hResource Manager(资源管理器)提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件等

i)LocationManager(位置管理器)提供位置服务

j)XMPP Service(XMPP服务)提供GoogleTalk服务


3系统运行库层

系统运行库层是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带,为Android系统中的各个组件提供服务。系统运行库层由系统类库和Android运行时构成。具体如下:

a系统库

主要分为如下几个:

Surface Manager:执行多个应用程序时候,负责管理显示与存取操作间的互动,另外也负责2D绘图与3D绘图进行显示合成。

Media Framework:多媒体库,基于PacketVideo OpenCore;支持多种常用的音频、视频格式录制和回放,编码格式包括MPEG4、MP3、H.264、AAC、ARM。

SQLite:小型的关系型数据库引

OpenGL|ES:根据OpenGLES 1.0API标准实现的3D绘图函数库

FreeType:提供点阵字与向量字的描绘与显示

WebKit:一套网页浏览器的软件引擎

SGL:底层的2D图形渲染引擎

SSL:在Andorid上通信过程中实现握手

Libc:从BSD继承来的标准C系统函数库,专门为基于embedded linux的设备定制

b)Android运行时

Android应用程序时采用Java语言编写,程序在Android运行时中执行,其运行时分为核心库和Dalvik虚拟机两部分。如下:

核心库:核心库提供了Java语言API中的大多数功能,同时也包含了Android的一些核心API,如android.os、android.net、android.media等等。

Dalvik虚拟机:Android程序不同于J2me程序,每个Android应用程序都有一个专有的进程,并且不是多个程序运行在一个虚拟机中,而是每个Android程序都有一个Dalivik虚拟机的实例,并在该实例中执行。Dalvik虚拟机是一种基于寄存器的Java虚拟机,而不是传统的基于栈的虚拟机,并进行了内存资源使用的优化 以及支持多个虚拟机的特点。需要注意的是,不同于J2me,Android程序在虚拟机中执行的并非编译后的字节码,而是通过转换工具dx将Java字节码转成dex格 式的中间码。(安卓在4.4中发布了ART运行时)


4)Linux内核层

Android以Linux操作系统内核为基础,借助Linux内核服务实现硬件设备驱动,进程和内存管理,网络协议栈,电源管理,无线通信等核心功能。Android4.0版本之前基于Linux2.6系列内核,4.0及之后的版本使用更新的Linux3.X内核,并且两个开源项目开始有了互通。Linux3.3内核中正式包括一些Android代码,可以直接引导进入Android。Linux3.4将会增添电源管理等更多功能,以增加与Android的硬件兼容性,使Android在更多设备上得到支持。

Android内核 对Linux内核进行了增强,增加了一些面向移动计算的特有功能。例如,低内存管理器LMK(Low Memory Keller),匿名共享内存(Ashmem),以及轻量级的进程间通信Binder机制等。这些内核的增强使Android在继承Linux内核安全机制的同时,进一步提升了内存管理,进程间通信等方面的安全性。如下是Android内核的主要驱动模块:

Power Management:针对嵌入式设备的,基于标准Linux电源管理系统的,轻量级的电源管理驱动

Low Memory Keller:可以根据需要杀死进程来释放需要的内存。扩展了Linux的OOM机制,形成独特的LMK机制

Ashmem:为进程之间提供共享内存资源,同时为内核提供回收和管理内存的机制

Android Logger:一个轻量级的日志设备

Anroid Alarm:提供了一个定时器用于把设备从睡眠状态唤醒

Android  PMEM:DSP及其他设备只能工作在连续的物理内存上,PMEM用于向用户空间提供 连续的物理内存区域映射

Android Timed device:可以执行对设备的定时控制功能 

Yaffs2文件系统:Android采用大容量的NAND闪存作为存储设备,使用Yaffs2作为文件系统管理大容量MTD NAND Flash;Yaffs2占用内存小,垃圾回收简洁迅速。

Android Paranoid网络 :对Linux内核的网络代码进行了改动,增加了网络认证机制。可在IPV4,IPV6和蓝牙中设置,由ANDROID_PARANOID_NETWORK宏来启用此特性。


0 0