Android 是移动设备上的软件堆,它包含了操作系统,中间件和核心应用。Android SDK提供了用Java在Android平台上开发应用的必要工具和API。
特性
· Application framework(应用框架) 允许重用和更换部件
· Dalvik virtual machine(Dalvik虚拟机) 移动设备的优化
· Integrated browser(集成浏览器) 基于开源的WebKit引擎
· Optimized graphics(图像优化) 使用自定义二维图形库; 基于OpenGL ES 1.0规范的3D图像(可选硬件加速)
· SQLite(轻量级的数据库) 存储结构化的数据
· Media support(媒体支持) 支持常见的音频,视频和图片格式 (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
· GSM Telephony (硬件相关)
· Bluetooth, EDGE, 3G, and WiFi (硬件相关)
· Camera, GPS, compass, and accelerometer (硬件相关)
· Rich development environment(丰富的开发环境) 包括一个模拟器,调试工具集,内存和性能分析,和一个Eclipse插件
下面这幅图展示了Android操作系统的主要组成部分。 下面有对每个组件的详细介绍。
Android 自带了一些核心应用程序,包括email客户端。短信程序, calendar, maps, browser, contacts, and others. 所有的应用程序都由Java语言编写。
通过提供一个开放的开发平台,Android使得开发者可以创建极为丰富和创新的应用。开发者可以自由的利用设备硬件,获取位置信息,运行后台服务,设置警报,添加通知到状态栏,等等。
开发者可以尽情使用核心应用中所使用的框架API。应用框架被设计来简化组件的重用;任何应用程序都可以发布其功能,其他应用程序可以使用这些功能(受框架安全机制的限制的)。同样的机制允许组件可以被用户替换。所有的应用其实就是一组服务和系统,包括:
· 可以用来创建一个应用的一组丰富的可扩展的 Views , 包括 lists, grids, text boxes, buttons, 和可嵌入的 web browser
· 使应用可以从其他应用(如联系人)获取数据或本应用自己间共享数据的Content Providers
· Resource Manager,提供对非编码资源的的访问,比如本地化的字符串,图像和布局文件
· Notification Manager 使所有应用在状态栏显示警报
· Activity Manager 管理应用的生命周期,提供导航返回堆栈
需要更多的细节和一个演练应用程序,可以参见 Notepad Tutorial。
Android 包含一组可以被Android系统各个组件使用的C/C++ 函数库。这些功能通过Android应用框架展示在开发者面前。列出如下一些核心类库:
· System C library – 针对移动设备优化了的C函数库
· Media Libraries – 基于 PacketVideo's OpenCORE;支持重放和录音的多种流行音频视频格式和静态图像文件,包括MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG
· Surface Manager 在同时执行多个应用程序时,负责管理显示与存取操作间的互动,另外也负责将2D绘图与3D绘图进行显示合成。
· LibWebCore – 一套网页浏览器的引擎,可供Android内建的网页浏览器和嵌入式的web view使用
· SGL - 2D 图像引擎
· 3D libraries – 基于OpenGL ES 1.0 API的实现;该函数库可以使用硬件加速(如果可用),也可以使用高度优化的3D光栅扫描软件加速
· FreeType – 提供点阵字、向量字的描绘显示
· SQLite – 一套轻量级的数据库引擎,可供其他应用程序调用
Android包含了一组Java中提供大部分功能的核心函数库。
每个Android应用程序运行在自己的进程中,由应用程序自有的Dalvik虚拟机来执行。Dalvik允许设备有效的同时运行多个虚拟机。The Dalvik虚拟机执行的是经过内存优化的Dalvik Executable (.dex) 格式文件。Dalvik虚拟机是基于寄存器的,执行的是经过内置”dx”工具转换为.dex格式的Java类。
Dalvik 虚拟机依赖于Linux内核基本功能如线程和底层的内存管理。
Android 核心系统服务采用了 Linux 2.6 版的内核,如安全、内存管理、进程管理、网络堆栈和驱动模型。Linux内核还扮演着硬件与其他软件堆栈间的抽象层的角色。