什么是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),管理程序生命周期并提供通用导航返回栈。
类库
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,以提供核心系统服务,如安全、内存管理、进程管理、网络栈和驱动模型。此核心也在硬件和其他程序之间提供一个抽象层。