Android是什么? Android是一个针对移动设备的程序集, 其中包括一个操作系统, 一个中间件和一些关键性应用. 本文首先概览了Android SDK提供的工具和APIs, 当您在使用Java语言来开发Android平台的应用时您会用到它们.
特性
- 程序程序框架可重用及可复写组件组成
- 针对移动设备优化过的Dalvik虚拟机
- 整合浏览器, 该浏览器基于开源的WebKit引擎开发
- 提供了优化过得图形系统, 该系统由一个自定义的2D图形库; 一个遵循OpenGL ES 1.0标准(硬件加速)的3D图形库组成
- 使用SQLite来实现结构化数据的存储
- 媒体方面对一些通用的audio, video, 和图片格式提供支持(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
- GSM技术(依赖硬件)
- 蓝牙, EDGE, 3G和WiFi(依赖硬件)
- Camera, GPS, 指南针, 和加速计 (依赖硬件)
- 非常丰富的开发环境, 包括一个设备模拟器, 调适工具, 内存和效率调优工具和一个Eclipse的插件
Android的结构 下图展示了Android 操作系统的主要组件结构. 每一部分都在下面的段落有详细介绍
应用程序 Android会附带一些核心的应用程序, 包括一个email客户端, 短信程序, 日历, 地图, 浏览器, 通讯录等等. 所有的应用程序都是由Java语言完成的.
应用程序框架 开发人员可以跟那些核心应用一样, 拥有访问框架APIs的全部权限. 应用的系结构设计简化了各组件之间的重用;任何应用都可以分发自己的组件, 任何应用也可以使用这些分发的组件(应用的使用方法需遵循框架的安全性约束)。这个机制对用户来说同样适用, 他们也可以替换组件.
隐藏在每个应用后面的是一套服务和系统, 其中包括:
- 一套表现丰富,扩展性很强的View, 通过这些View您可以创建包括list, grid, 文本框, 按钮, 甚至一个嵌入浏览器的应用
- Content Providers, 通过它可以在某个应用内访问其他应用的数据(例如通讯录), 或者共享自己的数据
- Resource Manager, 提供对静态资源的访问能力, 例如国际化文本和layout文件
- Notification Manager, 通过该机制, 所有的应用都可以在状态栏显示自己的提醒信息
- Activity Manager, 用于管理应用的生命周期, 并且提供了通用的向后导航功能
库 Android 包含一套C/C++库, 被用于Android 系统中的各种组件中. 这些功能通过Android 应用框架展现给开发人员. 下面列出一些核心库:
- System C library - 实现了BSD-derived 的标准C系统库(libc), 用于嵌入式的基于Linux的设备
- Media Libraries - 基于PacketVideo的 OpenCORE; 该库提供了对许多流行的音频和视频格式的播放回放和录制功能, 同样包括静态图片文件, 包括MPEG4, H.264, MP3, AAC, AMR, JPG, 和 PNG 等
- Surface Manager - 用于管理不同应用对图形显示子系统和2D和3D图形层的访问
- LibWebCore - 一个时尚的web浏览器引擎, 为Android浏览器和内嵌的web view提供实现
- SGL - 隐藏的2D图形引擎
- 3D libraries - 基于OpenGL ES 1.0 APIs实现的库; 该库用于3D图形加速或提供高优化的3D软件光栅器
- FreeType - 位图和向量模式的字体绘制
- SQLite - 一个强大的, 轻量的关系型数据库引擎, 用于所有的应用
Android 运行时 Android包含一组核心库, 提供了Java语言核心库内的大部分功能.
每一个Android应用运行在自己的进程里, 用该应用自己的Dalvik 虚拟机实例. Dalvik 可以让一个设备高效的运行很多个VM. Dalvik 虚拟机执行Dalvik Executable (.dex)格式的文件, 该格式的文件经过优化 占用很小的内存. 该虚拟机是基于存储器的, 运行经过Java语言编译器的类, 这些类通过"dx"工具被转换成.dex格式.
Dalvik 虚拟机依赖Linux kernel 来实现一些潜在功能, 例如线程和底层内存管理.
Linux Kernel Android基于Linux version 2.6内核来提供系统的核心服务, 例如安全机制, 内存管理, 进程管理, 网络堆栈和驱动模块. 该内核还扮演着一个虚拟的中间层, 该层介于硬件和其余的软件堆栈.