什么是Android?
Android是一个移动设备的软件框架。它包括一个操作系统,中间件和一些关键应用。该Android SDK的早期预览提供了一些使用JAVA语言开发Android平台应用所必须的工具和API。
特征
- 应用框架 用于开发可重用可替代的组件
- Dalvik 虚拟机 为移动设备作了优化
- 集成的浏览器 基于开源的WebKit引擎
- 优化的图形 强大的自定义二维图形库;基于OpenGL ES 1.0标准的3D图形功能(使用硬件加速)
- SQLite 提供结构化的数据存贮
- 提供媒体功能 支持各种通用的音视频和静态图像格式(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
- GSM 技术 (依赖硬件)
- 蓝牙, EDGE, 3G, and WiFi (依赖硬件)
- Camera, GPS, compass, and accelerometer (依赖硬件)
- 强大的开发环境 包括一个设备模拟器,调试工具,内存和性能检测,以及Eclipse IDE的开发插件
Android 架构
下图展示了Android操作系统的大部分组件。它们的具体描述见后。
应用程序
Android的配置将会搭载它的核心应用,包括email客户端,SMS程序,日历,地图,浏览器,contacts以及其它一些应用。所有的应用都是用java语言编写的。
应用程序框架
开发人员具有和核心应用相同的框架API访问权限。应用程序的构建模式被设计成简单的可重用的组件。所有应用能够分享他的能力,所有应用都是如此(这是被框架强迫的安全约束)。这样允许用户在相同的机器上替换组件。
一套用于支撑应用的服务和系统,包括:
- 一套强大和可扩展的视图,用于构建应用,包括列表,网格,文本框,按钮,甚至内嵌的Web浏览器。
- 内容提供 用于应用间的数据提供和数据共享
- 一个资源管理器, 提供非代码的资源支持,包括本地字符串,图像文件,和布局文件
- 一个Notification管理器 用于应用程序在状态栏显示告警信息
- 一个Activity管理器用于管理应用的生命周期,以及提供通用的导航辅助
如果想要更详细的资料或者尝试一个应用,请看《编写一个Android应用》章节。
库
Android 包含一整套C/C++ 库,用于构建Android系统的大量不同的组件。这些能力通过Android应用程序框架暴露给开发人员。部分核心库如下:
- 系统C库 - 一个由BSD发起的标准C库实现,专门为基于Linux的嵌入式设备作了调整
- 媒体库 - 基于 PacketVideo's OpenCORE;该库支持回放和录制大量流行的音视频格式和静态图片,包括 MPEG4, H.264, MP3, AAC, AMR, JPG, 和PNG
- Surface管理 - 用于管理显示子系统和无缝合成不同应用的2D和3D图形层
- LibWebCore - 先进的web浏览器引擎。被用来构建Android浏览器和内嵌的web视图
- SGL - 底层的2D图形引擎
- 3D库 - 一套OpenGL ES 1.0 APIs的实现;该库使用硬件加速(当硬件可用时)或者高度优化的3D软件光栅
- FreeType - 用于点阵和矢量字体渲染
- SQLite - 能够被所有应用使用的强大的轻量级的关系数据库引擎
Android运行时
Android包含了一整套核心库。它为java语言提供了很多有用的功能。
所有的Android应用都运行在它自己的进程里,该进程是一个Dalvik虚拟机的实例。Dalvik被设计成能在一台设备上高效的运行多个虚拟机实例。 Dalvik虚拟机的可执行文件被封装成Dalvik可执行格式(.dex)。这是被优化过的最小内存依赖的格式。java编译器(dx工具)将注册了的和运行时用到的类编译成.dex格式。
Dalvik虚拟机依赖于底层linux内核提供的功能,如线程机制,和内存管理机制。
Linux内核
Android 依赖Linux版本2.6提供的核心系统服务,如安全,内存管理,进程管理,网络堆栈,和驱动模型。该内核另一个作用是提供一个屏蔽层用于屏蔽硬件和上层软件。