什么是Android?
Android是一个移动设备的软件套件,它包括一个操作系统、中间件和关键应用。Android SDK提供必需的工具和API,并基于java语言开发。
特征
- 应用程序框架 组件的重用和自定义
- Dalvik虚拟机 为移动设备优化
- 一体化浏览器 基于开源的webkit内核
- 图形优化 提供一个定制的2D图形库,3D图形基于OpenGL(硬件加速可选)
- SQLite 结构化数据存储
- 多媒体支持 对通用的音频、视频、图像提供支持
- GSM技术 (依赖于硬件)
- 蓝牙,EDGE网络,3G和WiFi (依赖于硬件)
- 摄像头、GPS、方向和速度传感器 (依赖于硬件)
Android结构示意图
自带应用程序
Android包含一套核心应用程序,如email客户端、SMS程序、日历、地图、浏览器、通讯录以及其它。所有程序都是用java语言编写。
应用程序框架
在Android平台上,开发者可创建华丽而创新的应用。可发挥出硬件能力,利用地理位置信息、后台服务、警告和程序栏通知,以及更多。
开发者与核心应用程序对API享用同样权限。应用程序结构被设计成简化组件重用,应用程序可以开放其功能供其他程序调用(在框架的安全限制内),此机制也允许用户自定义组件。
下列服务和系统享有高优先级:
- 一系列视图(Views),包括列表、网格、文字框、按钮、甚至是可嵌入的浏览器。
- 内容提供器(Content Providers),让程序可以连接其他程序或者共享数据。
- 资源管理器(Resource Manager),提供对非代码的资源的连接,比如局域字符串、图像和布局文件。
- 通知管理器(Notification Manager),使程序可以展现自定义通知。
- 活动管理器(Activity Manager),管理程序生命周期并提供通用导航返回栈。
更多细节参见Notepad Tutorial。
类库
Android包括一系列C/C++库,这些库被用于很多Android系统组件,它们也能够通过框架被程序调用。
- 系统C语言库 由BSD衍生的标准C语言系统库,为基于Linux的设备所调整。
- 多媒体库 基于PacketVideo的OpenCORE框架。支持回放、录制等多媒体功能。
- 外观管理器(Surface Manager) 管理访问显示子系统和从多模块应用中无缝整合2D和3D的图形
- LibWebCore 现代浏览器引擎 为浏览器和嵌入式视图提供支持
- SGL 高优先级的2D图形引擎
- 3D类库 OpenGL ES API的一个衍生,支持硬件加速和软件优化加速
- FreeType 位图和矢量字体渲染
- SQLite 一个轻量的关系型数据库
Android运行时
Android包括Java的一个精简的核心类库,可实现java的多数功能。
每个Android应用程序都有独自的进程和虚拟机,设备可以同时运行多个Dalvik虚拟机,Dalvik虚拟机执行后缀为.dex的文件,这种文件为最小内存占用而优化,此虚拟机是基于寄存器的,运行被dx工具编译为.dex文件的类。
Dalvik依赖于Linux核心,以确保一些高优先级的功能,如线程处理和低级别内存管理。
Linux核心
Android依赖于Linux版本2.6,以提供核心系统服务,如安全、内存管理、进程管理、网络栈和驱动模型。此核心也在硬件和其他程序之间提供一个抽象层。