Android系统架构

 

一,Application(应用层)

应用是用Java语言编写的运行在虚拟机上的程序

 

二,Application Framework(应用框架层)

这一层是编写Google发布的核心应用时所使用的API框架,开发人员可以使用这些框架来开发自己的应用

View System: 可以用来构建应用程序,它包括列表、网格、文本框、按钮已经可以嵌入的Web浏览器

Content Provider:它可以让一个应用访问另一个应用的数据,或者共享他们自己的数据

Resource Manager:提供非代码资源的访问,如本地字符串,图形和布局文件

Notification Manager: 应用程序可以在状态栏中显示自定义的提示信息

Activity Manager:用来管理应用程序生命周期病提供常用的导航退回功能

Windows Manager:管理所有的窗口程序

Package Manager:Android系统内的程序管理

 

三,Libraries,Android Runtime(系统运行库层)

当使用Android应用层框架时,Android系统会通过一些C/C++库来支持我们使用的各个组件,使其能更好地为我们服务

Binoic系统C库:C语言标准库,C库通过Linux系统来调用

多媒体库(MediaFramework):Android系统多媒体库,基于PackerVideo OpenCORE,该库支持多种常见的格式的音频、视频的回放和录制,以及图片,比如MPEG4,MP3,AAC,AMR,JPG,PNG等

SGL:2D图形引擎库

SSL:位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持

OpenGL ES 1.0: 3D效果的支持

SQLite:关系数据库

Webkit:Web浏览器引擎

FreeType:位图(bitmap)及矢量(vector)

在Android操作系统中,每个Java程序都运行在Dalvik虚拟机上,起只能执行.dex的可执行文件,当Java程序通过编译后,最后还需要通过SDK中的dx工具转为.dex格式才能在虚拟机上执行。

Java虚拟机运行的事Java字节码,而Dalvik虚拟机运行的则是其专有的文件格式dex(Dalvik Exceutable)的文件

Dalvik虚拟机有如下几个主要特征:

1,专有的dex文件格式

2,dex的优化,dex文件的结构是紧凑的

3,基于寄存器

4,一个应用,一个虚拟机实例,一个进程。每一个Android应用度运行在一个Dalvik虚拟机实例中,每一个虚拟机实例都是一个独立的进程空间

 

四、Linux Kerner(Linux内核层)

显示驱动(Display Driver):基于linux的帧缓冲(Frame Buffer)驱动

键盘驱动(KeyBoard Driver): 作为输入设备的键盘驱动

Flash内存驱动(Flash Memory Driver):基于MTD的Flash驱动程序

照相机驱动(Camera Driver):常用的基于Linux的V412(Video for Linux)的驱动

音频驱动(Audio Driver):常用的机遇ALSA的高级Linux声音体系驱动

蓝牙驱动(Bluetooth Driver):基于IEEE 802.15.1标准的无线传输技术

WI-FI驱动:基于IEEE 802.11标准的驱动程序

Binder IPC驱动:Android的一个特殊的驱动程序,具有单独的设备节点,提供进程间通信功能

Power Management(电源管理):比如电池电量等

 

五,Android应用程序框架

  android.app:提供高层的程序模型和基本的运行环境。

  android.content:包含对各种设备上的数据进行访问和发布。

  android.database:通过内容提供者浏览和操作数据库。

  android.graphics:底层的图形库,包含画布i、颜色过滤、点、矩形,可以将它们直接绘制到屏幕上。

  android.location:定位和相关服务的类。

  android.media:提供一些类管理多种音频、视频的媒体接口。

  android.net:提供帮助网络访问的类,超过通常的java.net.*接口。

  android.os:提供了系统服务、消息传输和IPC机制。

  android.opengl:提供OpenGL的工具。

  android.provider:提供访问Android内容提供者的类。

  android.telephony:提供与拨打电话相关的API交互。

  android.view:提供基础的用户界面接口框架。

  android.util:涉及工具性的方法,例如时间日期的操作。

  android.webkit:默认浏览器操作接口。

  android.widget:包含各种UI元素在应用程序的布局中使用。

posted @ 2015-04-29 16:39  活出敢型  阅读(255)  评论(0编辑  收藏  举报