什么是Android系统?
Android 是由操作系统(linux)、中间件以及核心应用程序组成的软件栈(software stack)。通过 android SDK 提供的 API 以及相应的开发工具, 程序员可以用java 语言开发android平台上的应用程序。
特点
- 应用程序框架(Application framework) enabling reuse and replacement of components
- Dalvik 虚拟机(Dalvik virtual machine) 针对移动设备进行了相关优化的寄存器型的 java 虚拟机
- 内置浏览器(Integrated browser) 基于开源的 WebKit 引擎
- 优化的绘图指令(Optimized graphics) 包括了 2D 及 3D绘图接口,其中 3D 绘图接口是基于OpenGL ES 1.0 的定制版本。 (可通过硬件加速)
- SQLite 轻型数据库
- 多媒体支持(Media support) 支持常见的视频、音频及图片格式(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
- 支持GSM制式( GSM Telephony ) (需要手机硬件支持)
- 支持蓝牙、EDGE、3G以及WIFI(Bluetooth, EDGE, 3G, and WiFi )(需硬件支持)
- 支持摄像头、GPS、compass、acceleratrometer(Camera, GPS, compass, and accelerometer )(需硬件支持)
- 丰富的开发工具 包括一个手机模拟器、调试工具、内存及运行性能分析工具以及一个用于 Eclipse IDE(java的编辑器) 的插件
Android 的结构
下图是android操作系统的结构图,我们会在后面详细地讨论每一个部分。
应用程序(Applications)
Android操作系统内置了一部分应用程序, 包括电子邮件客户端、SMS程序、日历、地图、浏览器、通讯录以及其他的程序,所有的这些程序都是用java编写的。
应用程序框架(Application Framework)
开发者开发的应用程序可以像核心应用程序那样调用框架的API。应用程序框架使得组件更易于重用。在遵守应用程序框架的安全机制约束的前提下,一个应用程序可以使用其他程序所开发的功能。 同时,框架允许用户替换掉任意的组件。
Underlying all applications is a set of services and systems, including:
- Views 可以被用来构建一个应用程序,包括列表(lists),表格(grids),文本框(text boxes) ,按钮(buttons)甚至是一个浏览器(embeddable web browser)
- 应用程序可以通过Content Providers 获取其他程序的数据,例如通讯录;也可以对外提供自己的数据。
- 应用程序可以通过Resource Manager访问本地化字符串、图形以及布局文件。
- Notification Manager 允许所有的应用程序在状态栏上显示自定义的信息。
- Activity Manager 管理着所有应用程序的生命周期。
应用程序库(Libraries)
Android 提供了一系列的 C/C++ 程序库。通过应用程序框架,开发者可以使用这些库。下表列出了主要的应用程序库:
- System C library - 基于 BSD 的标准C系统库(standard C system library (libc)), 已针对运行在嵌入式linux系统下的设备做了优化。
- Media Libraries - 基于 PacketVideo's OpenCORE; 该库支持回放以及录制常见的视频、音频格式以及图片格式,这些格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG
- Surface Manager - 用于管理图形显示系统,能够将来自不同程序的2D、3D图层整合到一起。
- LibWebCore - 网页浏览器引擎。Android 浏览器以及可嵌入的浏览器视图(embeddable web view)均使用该引擎。
- SGL - 2D 图形显示引擎。
- 3D libraries - 基于OpenGL ES 1.0 的3D显示引擎; 可使用硬件加速。
- FreeType - 用于位图及矢量字体渲染。
- SQLite - 一个强大的、轻型的数据库系统。
Android运行库(Android Runtime)
每一个Android 应用程序都有自己的进程,每个进程都对应着一个Dalvik虚拟机进程。当一个Android系统中运行着多个 Dalvik 虚拟机时,我们不用担心其效率问题,Dalvik已对此作了相应的优化。Dalvik 虚拟机是基于寄存器的,所以速度要快一些,其可执行文件格式是(.dex) 格式。通过"dx"工具可以将java可执行程序转换成dex格式。Dalvik虚拟机通过linux内核来管理线程以及底层的内存操作。
Linux 内核(Linux Kernel)
Android 的Linux 内核版本为2.6。通过linux内核,android实现了以下的系统功能,例如系统安全、内存管理,进程管理,网络栈 以及驱动模型,同时,linux内核还扮演着软件栈与硬件之间的抽象层的角色。