Android 系统构架

Android是基于Linux的一个操作系统,它可以分为五层,下面是它的层次架构图


一、Aplications(应用层)

  应用是用Java语言编写的运行在虚拟机上的程序,应用程序是依赖于应用程序框架的。

二、Application Framework(应用框架层)

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

  Activity Manager(活动管理器):用来管理应用程序生命周期并提供常用的导航退回功能。

  Window Manager(窗口管理器):管理所有的窗口程序。

  Content Providers(内容提供器):它可以让一个应用访问另一个应用的数据,或共享它们自己的数据。  

  View System(视图系统):可以用来构建应用程序,它包括列表、网格、文本框、按钮以及可嵌入的Web浏览器。

  Notification Manager(通知管理器):使得应用可以在状态栏中显示自定义的提示信息。

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

  Resource Manager(资源管理器):提供非代码资源的访问,如本地字符串、图形和布局文件。

  Telephony Manager(通讯管理器):提供了一系列用于访问与手机通讯相关的状态和信息方法。

  Location Manager(位置管理器):获取设备的地理位置(经纬度);当设备进入制定的地理位置,通过通过intent通知。

  XMPP Server:XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。XMPP Server用于实现即时通信

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

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

  Surface Manager:显示管理器,管理访问显示子系统和从多模块应用中无缝整合2D和3D的图形。

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

  SQLite:关系数据库。

  OpenGL ES:3D效果的支持。

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

  Webkit:Web浏览器引擎。

  SGL:2D图形引擎库。

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

  Libc:Bionic系统C库,C语言标准库,系统最底层的的库,C库通过Linux系统来调用。

Android运行库分为两个部分,分别是Dalvik虚拟机和核心库(Corelibraries)

  Core Libraries:核心库主要用于提供基本的Java类库的功能。

  Dalvik VM:在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 Kernel(Linux内核层)

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

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

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

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

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

  USB驱动(USB Driver):一个基于标准Linux USB gadget驱动框架的设备驱动

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

  WiFi驱动:基于IEEE 802.11标准的驱动程序。

  音频驱动(Audio Driver):常用的基于ALSA的高级Linux声音体系驱动。

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

五、Android应用程序框架

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

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

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

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

  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元素在应用程序的布局中使用。



转载至:http://www.cnblogs.com/iceknp/archive/2011/03/29/1998590.html  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值