4 Android详解
1.诞生
Android是基于Linux内核的软件平台和操作系统,早期由Google开发,后由开放手机联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。另外,为了推广此技术,Google和其他几十个手机公司建立了开放手机联盟。
2.成长
说到Android的成长,就不得不说说“开放手机联盟”。它是由34家业内顶级企业联合建立的,也将大大降低新型手机设备的研发成本,完全整合的“全移动功能性产品”成为“开放手机联盟”的最终目标。其中的企业包括:
•摩托罗拉(美国最大的手机制造商);
•韩国三星电子(仅次于诺基亚的全球第二大手机制造商);
•中国移动(全球最大的移动运营商,截至2011年5月底超过5亿用户);
•英特尔(Intel);
•Nvidia(图形处理器公司)。
仔细地查看34家企业名称,你会发现它们几乎涵盖了手机硬件、软件、销售、网络运营商等整条产业链。所以说,Android的高速发展离不开开放手机联盟的扶持。
3.技术介绍
1)Android特性
•应用程序框架——支持组件的重用与替换;
•Dalvik虚拟机——专门为移动设备进行优化;
•内部集成浏览器——该浏览器基于开源的WebKit引擎;
•优化的图形库——包括2D和3D图形库,3D图形库基于OpenGL ES 1.0(硬件加速可选);
•SQLite——用做结构化的数据存储;
•多媒体支持——包括常见的音频、视频和静态影像文件格式(如MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF);
•GSM电话(依赖于硬件);
•蓝牙(Bluetooth),EDGE,3G和WiFi(依赖于硬件);
•照相机,GPS,指南针和加速度计(依赖于硬件);
•丰富的开发环境——包括设备模拟器、调试工具、内存及性能分析图表和Eclipse集成开发环境插件。
2)应用程序
Android会同一个核心应用程序包一起发布,该应用程序包包括E-mail客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。所有的应用程序都是用Java编写的。
3)Android应用程序框架
开发者完全可以访问核心应用程序所使用的API框架。该应用程序架构用来简化组件软件的重用;任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。应用程序重用机制使得组件可以被用户替换。
以下所有的应用程序都由一系列的服务和系统组成,包括:
•一个可扩展的视图(View)可以用来建立应用程序,包括列表(List)、网格(Grid),文本框(Text boxe)、按钮(Button),甚至包括一个可嵌入的Web浏览器。
•内容管理器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。
•一个资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串、图形、和分层文件(Layout file)。
•一个通知管理器(Notification Manager)使得应用程序可以在状态栏中显示客户通知信息。
•一个活动类管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。
4)Android程序库
Android包括一个被Android系统中各种不同组件所使用的C/C++ 库集。该库通过Android应用程序框架为开发者提供服务。以下是一些主要的核心库:
•系统C库——一个从BSD继承来的标准C系统函数库(Libc),专门为基于Embedded Linux的设备定制;
•媒体库——基于PacketVideo OpenCORE;该库支持录放,并且可以录制许多流行的音频视频格式,还有静态影像文件,格式包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG;
•Surface Manager——管理显示子系统,并且为多个应用程序提供2D和3D图层的无缝融合;
•LibWebCore——一个最新的Web浏览器引擎,用来支持Android浏览器和一个可嵌入的Web视图;
•SGL——一个内置的2D图形引擎;
•3D libraries——基于OpenGL ES 1.0 APIs实现,该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速;
•FreeType——位图(Bit Map)和向量(Vector)字体显示;
•SQLite——一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
5)Android运行库
Android包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik是针对同时高效地运行多个VMs而设计的。Dalvik虚拟机执行后缀为.dex的Dalvik可执行文件,该格式文件针对最小内存的使用进行了优化。该虚拟机是基于寄存器的,所有的类都经由Java汇编器编译,然后通过SDK中的dx工具转化成后缀为.dex格式由虚拟机执行。
Dalvik虚拟机依赖于Linux的一些功能,例如线程机制和底层内存管理机制。
6)Linux内核
Android的核心系统服务依赖于Linux 2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也同时作为硬件和软件堆栈之间的硬件抽象层。