安卓是什么?
安卓是一款手机设备上的软件栈,它包括了底层的操作系统,中间件和一些关键的应用程序。Android SDK(Soft Development Kit)安卓的软件开发工具包提供了一些工具和必要的API使得可以使用java程序语言开始在安卓平台上开发应用程序。
特性:
.Applicationframework应用框架:可重用或替换的组件集合。
.Dalvik virtual machine Dalvik虚拟机:在移动设备上已被优化的虚拟机。
.Integratedbrowser 集成浏览器:基于开源的webKit引擎。
.Optimizedgraphics 优化过的图形处理:采用自定义的2D图形库;基于OpenGL ES 1.0的3D图形库 (硬件加速可选)
.SQLite 支持结构化数据存储
.Mediasupport 媒体支持:支持常见的音频,视频,静止的图像格式 (MPEG4, H.264, MP3, AAC, AMR,JPG, PNG, GIF)
.GSMTelephony (依赖于硬件)
.Bluetooth,EDGE, 3G, and WiFi (依赖于硬件)
.Camera,GPS, compass, and accelerometer 照相机,全球定位系统,指南针和加速器(依赖于硬件)
.Richdevelopment environment 丰富的开发环境:包括设备模拟器,调试工具,内存和性能分析工具, 还有Eclipse IDE的插件。
Android的架构
下图显示了安卓系统的主要组成部分。每个部分在底下会有详细的描述。
应用程序部分
安卓系统集成了很多的核心程序,包括了电子邮件客户端,SMS程序,日历,地图,浏览器,联系人和其他。所有的这些应用程序都是用java语言写的。
应用程序框架
通过提供一个开放的开发平台,安卓提供给开发者能创建丰富而创新的应用程序的能力。开发者可以自由的利用硬件设备的优势来做许多事,诸如访问位置信息,运行后台服务,设置警报,添加通知到状态栏等,并且还有很多,很多可作的事情。
开发者可以完全的访问这些核心应用程序所使用的框架API。应用程序框架的设计就是旨在为了简化组件的重用。任何应用程序都可以公布它的功能并且其他的程序可以使用这些公布的功能(在框架的安全约束机制的范围内)。这种机制允许组件被使用者替换。
在应用程序下层的是一系列的服务和系统,包括:
.一系列丰富可扩展的可视化控件可以被使用来构建应用程序,包括list,grids,boxes,buttons,甚至是一个可以嵌入到应用程序中的浏览器。
.Content Providers可以让应用程序访问从其他应用程序(如联系人)来的数据,或者共享它们自己的数据。
.一个Resource Manager,提供访问不用代码编写的资源如本地字符串,图片和一些layout布局文件。
.一个Notification Manager,能够让应用程序在状态栏上显示给用户看的通知。
.一个Activity Manager,它负责管理应用程序的生命周期,并提供一个公共的导航回栈(什么是导航回栈?我不理解,估计翻译也不正确)。
如果想了解更多的详细信息并且想有更多应用程序方面的学习,请看 Notepad Tutorial.
库
安卓包括一系列被安卓系统的各个组件(组成部分)所使用的用C或C++所写的库。这些功能通过安卓应用程序框架暴露给开发者。一些核心库列在下面:
.SystemC library 一个属于标准C系统库的BSD派生的实现,为嵌入式基于linux的设备而调整的。
.MediaLibraries 基于PacketVideo的OpenCORE库;它支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4,H.264,MP3,AAC,AMR,JPG,和PNG。
.SurfaceManager可以控制显示子系统和多个应用软件间2D与3D图层之间完美的联合。
.LibWebCore一个很酷的web浏览器引擎,掌控着安卓的浏览器和可嵌入的web视图。
.SGL一个基本的二维图形引擎。
.3DLibraries 一个基于OpenGL ES1.0 APIs的实现。这个库也使用硬件3D加速(如果可以使用)或所包含的,高度已被优化过的3D软件光栅。
.FreeType 位图和矢量字体渲染
.SQLite一个可以被应用程序使用的强大又轻量的关系型数据库引擎。
安卓运行时
安卓提供一系列的核心库,它们提供了在java语言的核心库中可以使用的许多功能。
每一个安卓应用程序都运行在它自己的进程,和属于自己的Dalvik虚拟机实例中。Dalvik被设计使得设备可以更加有效的运行多个虚拟机。Dalvik虚拟机执行的是Dalvik可执行文件(.dex)。它被优化过,所占用的内存更小,虚拟机是基于寄存器的,运行.dex文件,这是由被java编译器编译过的class文件再根据dx工具转化成的文件。
Dalvik虚拟机依赖于linux内核(提供了基本的功能,如线程和低水平的内存管理。)
Linux 内核
安卓依赖于linux2.6版的核心系统服务如安全性,内存管理,进程管理,网络协议栈,和驱动模型。内核也作为一个抽象层在硬件和软件堆栈层之间。