什么是Android?html
Android是一个移动设备的软件包,它包括操做系统,中间件和主要的应用软件。Android SDK 为开始使用Java编程语言在Android平台上开发应用程序提供了必要的工具和APIs。android
特色web
· 应用程序框架,使组件能够重用和更换数据库
· 为移动设备优化的Dalvik虚拟机编程
· 基于开源的WebKit引擎的集成浏览器浏览器
· 优化的图形由一个自定义的2D图形库提供;基于OpenGL ES 1.0规范(硬件加速可选)的3D图形安全
· SQLite提供结构化数据存储网络
· 媒体支持常见的音频,视频和静态图像格式(MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF)架构
· GSM电话(依赖于硬件)app
· 蓝牙,EDGE,3G和WiFi(依赖于硬件)
· 摄像头,GPS,指南针,和加速度计(依赖于硬件)
· 丰富的开发环境包括设备模拟器,调试工具,内存和性能分析工具,和Eclipse IDE的插件
下图显示了Android操做系统的主要组成部分。每一个部分在下面都有详细描述。
Android提供了一些主要的应用软件,包括电子邮件客户端,SMS程序,日历,地图,浏览器,联系人,和其余。全部这些应用程序都是使用Java编程语言编写的。
经过提供一个开放的开发平台,开发人员可使用Android构建极为丰富和创新的应用。开发者能够自由的使用设备的硬件,访问位置信息,运行后台服务,设置闹钟,状态栏添加通知,等不少,不少。
核心应用使用的框架APIs,开发者一样能够访问所有这些框架APIs。应用程序体系结构被设计为能够简化组件的重用,任何应用均可以公布它的功能,同时任何其余应用程序可使用这些功能(必须符合框架实施的安全约束)。这样的机制容许用户替换组件。
全部应用程序的基础是一套服务和系统,包括:
· 可用来构建一个应用程序的丰富且可扩展的视图集(View),包括列表,网格,文本框,按钮,甚至一个可嵌入的web浏览器
· 内容提供商(Content Providers),使应用程序可以访问来自其余应用程序(如通信录)的数据,或者共享本身的数据
· 一个资源管理器(Resource Manager),提供对非代码的资源的访问,例如本地化的字符串,图形,和布局文件
· 一个通知管理 (Notification Manager
)
,使全部的应用程序能够在状态栏上显示自定义的提醒
· 活动管理(Activity Manager),管理应用程序的生命周期,并提供一个共同的导航堆栈
有关详细信息和应用程序的演练,请参见“记事本“教程 。
Android包含了一套Android系统各个组件使用的C / C + +库。这些功能经过Android应用框架暴露给开发者。下面列出了一些核心库:
· 系统C库(System C library) -一个标准C系统库(libc)的BSD的实现,为嵌入式的基于Linux设备作了调整。
· 媒体库 -基于PacketVideo的OpenCORE;库支持许多流行的音频和视频格式的播放和录音,以及静态图像文件,包括MPEG4,H.264,支持MP3,AAC,AMR,JPG,PNG
· 表面管理器(Surface Manager) -管理多个应用程序的访问显示子系统和无缝复合材料的二维和三维图形层。
· LibWebCore -一个现代的Web浏览器的引擎,它提供了Android浏览器和一个可嵌入的web视图
· SGL -底层的2D图形引擎
· 3D库 -基于OpenGL ES 1.0 API的实现;库可使用不管是硬件3D加速(若是可用)或所包含的,高度优化的3D软件光栅
· FreeType -位图和矢量字体渲染
· SQLite的 –为全部应用程序提供的一个强大的和轻量级的关系数据库引擎
Android包含一个核心库集合,这个核心库集合提供了大部分Java编程语言核心库可用的功能。
每个Android应用程序运行在它本身的进程中,与本身的Dalvik虚拟机实例中。Dalvik被设计为可使设备有效地运行多个虚拟机。Dalvik虚拟机执行Dalvik可执行格式(.DEX)的文件,这种格式是为小内存优化过的。VM是基于寄存器的,并运行由Java语言的编译器编译,并使用内置的“dx”工具转化成.dex格式的类。
Dalvik虚拟机的基础功能依赖于Linux内核,例如线程和低水平内存管理。
Android 的核心系统服务例如安全性,内存管理,进程管理,网络协议栈,和驱动模型依赖于 Linux version 2.6 。 内核也做为硬件和软件堆栈的其他部分之间的一个抽象。