什么是Android?

Android是一个移动设备软件包,包括操作系统,中间件和关键应用。要开始应用Java编程语言在Android的平台上开发,看看之前Android SDK提供的工具和API。

特点

  • Application framework(应用框架) 能重复使用和可替换的组件
  • Dalvik virtual machine(Dalvik虚拟机) 为移动设备做了优化
  • Integrated browser(集成浏览器) 基于开放源代码的WebKit引擎
  • Optimized graphics(图形优化) 基于一个定制的2D图形库; OpenGL ES 1.0规格的3D图形显示(硬件加速可选)
  • SQLite(轻量SQL) 用于结构化数据存储
  • Media support(多媒体支持) 支持最常用的音频,视频和静态图像格式(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) 
  • GSM Telephony (GSM通话)(依赖于硬件支持)
  • Bluetooth, EDGE, 3G, and WiFi (蓝牙,EDGE,3G和WiFi)(依赖于硬件支持)
  • Camera, GPS, compass, and accelerometer (摄像头,全球定位,指南针,加速度)(依赖于硬件支持)
  • Rich development environment(丰富的开发环境) 包括设备模拟器,调试工具,内存和性能模拟,并有基于Eclipse插件的集成开发环境

Android架构

下面的图表显示Android操作系统的主要组成部分。更详细的说明请见下面的每一节。






应用

Android将包含一套核心应用,其中包括一个电子邮件客户端,短信程序,日历,地图,浏览器,联系人,和其他。所有应用的均用Java编程语言书写。

应用框架

开发者有充分机会获得和核心应用相同的API架构。重用组件以简化应用体系结构设计,任何应用都可发布任何其他应用可能的用到的功能,然后利用这些功能(须在框架强制的安全方面的限制内进行) 。这种机制允许由用户进行组件间的替换。

全部基础应用构成了一套服务和系统,其中包括:

  • 丰富和可扩展的一套可视化对象,可用来构建应用程序,包括列表,表格,文本框,按钮,甚至是一个可嵌入的网页浏览器
  • 可通过访问其他应用程序来获取所需要的资料(如通过协议)或分享自己的的数据
  • 一个资源管理器,以获取非代码资源,如内部字符串,图形和布局文件
  • 一个消息管理器,可以让所有的应用程序在状态栏中显示报警信息
  • 一个运行程序管理器,负责管理应用的生命周期,并提供一个通用的回归栈导航器


Android平台内含Android系统所使用的一套完整的C/C++库的各个部分。通过Android应用框架将这些功能提供给开发人员。一些核心库的列表如下:

  • 系统C函数库System C library - 由BSD衍生出的标准C系统库(libc ) ,特别适合嵌入式Linux设备
  • 多媒体库Media Libraries - 基于便携视频的开放核心:这个库支持很多流行的音频和视频格式的回放和录制以及静态图片文件,包括MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG格式
  • 外观管理器 - 管理多种应用程序通过显示子系统和无缝生成显示的二维和三维图形
  • 网络核心库LibWebCore - 一个时尚的网络浏览器引擎,由Android浏览器和一个可嵌入的Web浏览器构成
  • SGL - 后台的2D图形引擎
  • 3D图形库 - 一个基于OpenGL ES 1.0 API的实现;可实现硬件3D加速(当可用) ,或包括由高度优化的软件生成的三维图形
  • 自由字体 - 位图和矢量字体渲染
  • SQLite - 为所有应用提供的一个强大的轻量级关系数据库


Android运行时环境

Android平台包括一套包含了大部分功能的核心库,一套以Java语言编写的核心库。

每个Android的应用运行在具有自身实例的Dalvik虚拟机进程中。Dalvik这样做是为通过同时运行多个进程来成倍增加虚拟机的效率。该Dalvik执行文件是理想的最小内存占用Dalvik可执行(.dex)格式。虚拟机是基于寄存器的,通过一个包含"dx"工具的Java语言编译器由class格式编译为.dex格式。

该Dalvik虚拟机依赖于如多线程和低级别的内存管理的Linux内核基本功能。



Linux内核

Android依赖Linux 2.6版系统核心服务,如安全,内存管理,进程管理,网络堆栈和驱动模型。这个内核还作为硬件和其余的软件应用之间的一个抽象层。