Andriod是一种为移动设备设计的软件堆栈(software stack,可以理解为软件集或软件包),它包括了一个操作系统、中间层和一些关键应用程序。Android SDK提供了在Android平台上使用Java编程语言进行应用程序开发所必要的工具和API。
特性
- 具有允许重用和替换组件的应用程序框架
- 使用为移动设备而优化的Dalvik虚拟机
- 基于开源的Webkit引擎的整合浏览器
- 采用由自定义2D图形库驱动的经过优化的图形系统和基于OpenGL ES 1.0标准的3D图形系统(可支持硬件加速)
- 支持适于结构化数据存储的SQLite
- 媒体支持常见音频、视频、静止图片格式(如MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF)
- 支持GSM手机通信(视硬件而定)
- 支持蓝牙、EDGE、3G和WIFI(视硬件而定)
- 支持摄像头、GPS、指南针和加速度计(视硬件而定)
- 有包括模拟器、Debug工具、内存及性能分析工具、Eclipse插件在内的完备开发环境
Android结构
下面的图表展示了Andriod操作系统的主要组成部分。每一部分将在接下来被详细描述。
应用程序
Android将会包含包括电子邮件客户端、短信程序、日历、地图、浏览器、通讯录等一系列的核心程序。所有程序都是由Java编程语言写成。
应用程序框架
通过提供一个开放的开发平台,Andriod使得开发者能够开发出内容充实而有创新性的应用。开发者可以自由地使用设备硬件、获取地理位置信息、运行后台服务、设置闹钟、向状态栏添加提醒等。
开发者对核心应用所使用的API框架有着完全的访问权限。应用程序结构被设计成易于重用组件。任何应用程序都可以发布其功能并且任何其他的应用程序就可以使用它们(但是需要遵守框架的安全限制)。通过相同的机制,组件也可以被用户替换。
处于所有的应用程序之下的是一组服务和系统,它们包括:
- 能被用来生成包括列表、网格、文本框、按钮甚至内嵌浏览器的各种应用程序的一组丰富而有扩展性的视图(View)。
- 允许应用程序读取其他程序(如通讯录等)的数据并共享自身数据的内容提供器(Content Providers)。
- 允许读取非代码资源(如本地字符串、图形和布局文件等)的资源管理器(Resource Manager)。
- 允许应用程序在状态栏显示自定义提醒的通知管理器(Notification Manager)。
- 管理应用程序生命周期并提供常用的导航归栈(backstack)功能的活动管理器(Activity Manager)。
更过详细信息请参阅记事本程序指导
库
Andriod包括了一系列被各种Android系统组件使用的C/C++库。开发者可以通过Android应用程序框架来使用这些库。下面列出了其中一些核心库:
- 系统C库 标准C系统库(libc)的一个BSD衍生库,为嵌入式Linux设备做了调整
- 媒体库 基于PacketVideo的OpenCORE,支持播放和录制包括MPEG4、H.264、MP3、AAC、AMR、JPG和PNG在内的许多流行的音频视频格式和静止图像文件
- 表层管理器(Surface Manager) 管理对显示子系统的读取并能从多种应用程序间无缝构建2D和3D图层
- 库Web核心(LibWebCore) 同时驱动Android浏览器和嵌入式web视图的一种现代web浏览器引擎
- SGL 底层2D图形引擎
- 3D库 基于OpenGL ES 1.0 API的一个3D库,可以使用硬件3D加速器(如果可用)或者经过高度优化的内建3D软件转化器
- FreeType 位图及矢量字体支持
- SQLite 可供所有程序使用的一个强大而轻量的关系型数据库引擎
Android运行
Android提供了一系列的核心库,能够提供大多数Java编程语言中可用的功能。
每一个Android程序都有其Dalvik虚拟机实例并运行于它自身的进程。Dalvik被设计为使一个设备可以高效地运行多个程序。Dalvik虚拟机以一种为小内存设备而优化过的Dalvik可执行格式(.dex)来执行文件。该虚拟机基于寄存器,可以运行由Java编程语言编译器编译的经虚拟机内置的dx工具转换为.dex格式的类。
Dalvik虚拟机依靠Linux内核来执行诸如线程和低级内存管理等底层功能。
Linux内核
Android的核心系统服务依赖于Linux 2.6,例如安全性、内存管理、进程管理、网络栈和驱动模型。该内核还作为硬件和其余软件栈之间的一个抽象层。
本页部分内容根据Android Open Source Project创作并共享的内容修改,并在知识共享 署名2.5许可协议中所述条款的限制下使用。