1.2 Android简介

Google公司的Android平台就像Google其他产品一样出人意料,在正式推出之前已经传得沸沸扬扬,可当Android轰轰烈烈推出的时候,原来并非手机产品,而是手机操作系统。下面我们就带领大家揭开Android的神秘面纱。

1.2.1 Andriod的历史

虽然出现时间不长,但作为移动信息设备的操作系统中的重量级一员,Android开发平台正吸引越来越多的追随者投入她的怀抱,其中包括开发者、设备生产商、软件开发商等。

通过Android发展历程中的大事记,我们可以看到Android迅猛发展的势头。

2007年11月5日,Google公司宣布组建一个全球性的开放手机联盟。这一联盟将会支持Google发布的手机操作系统或者应用软件,共同开发名为Android的开放源代码的移动系统。开放手机联盟包括手机制造商、手机芯片厂商和移动运营商等。创建时,联盟成员数量已经达到了34家。

2008年9月22日,美国运营商T-Mobile在纽约正式发布第一款Google手机——T-Mobile G1。该款手机为中国台湾宏达电代工制造,是世界上第一部使用Android操作系统的手机,支持WCDMA/HSPA网络,理论下载速率7.2Mbps,并支持Wi-Fi。

2009年1月1日,Google的Android应用程序市场(App Market)将在2009年初开始出售Android付费应用程序。

2009年12月9日,宏达电将逐渐放弃Windows Mobile系统,继而转向Android系统。

2009年12月23日,据知情人士透露,Google将于2010年1月1日在中国大陆推出中文版Android Market。国内已经有开发者推出针对国内用户的Android Market。易联致远CEO靳岩介绍称,其公司已经推出名为eoeMarket的专门针对国内用户的第三方Android Market。

2009年11月25日,AdMob的调查显示,在美国,10月份使用苹果iPhone操作系统所浏览的智能手机广告量占美国市场的55%;排第二位的是Android系统,占20%。至于全球市场,10月份通过iPhone系统浏览的广告量,以市场占有率50%居冠;其次是Symbian操作系统,占25%;接着是Android系统,占11%,居于第三位。作为一个智能手机平台的新成员来说,Android系统的受欢迎程度正在快步上升。

2010年1月6日,Google正式发布首款自有品牌手机Nexus One,该机采用Android 2.1操作系统,裸机的定价为529美元(约合人民币3600元)。

2010年2月24日,全球瞩目的世界移动大会(Mobile World Congress 2010)如期而至,华为公司在此次大会上展出了5款Android终端,并创造性地把Android平台运用到家庭互联网终端上,首次发布了其SmaKit S7 Tablet。

2010年3月3日,运营商AT&T宣布本月即将推出首款Android手机,但默认搜索引擎却不是Google,而是雅虎。

2010年3月3日,网络分析公司Quantcast最新报告显示,今年2月份,Google Android和RIM移动互联网流量份额增长,而苹果iPhone份额则下滑。报告指出,Android份额在过去一年中几乎翻番,RIM份额增长7.5%,iPhone份额同期下滑10.2%。但iPhone仍是移动互联网流量份额的遥遥领先者,2月份份额近64%;其次是Android,份额约15%;RIM份额约9%。

将上面的Android发展大事记串联起来,就会明显感受到Android的咄咄逼人和当仁不让的气势。Android的市场占有率正飞速攀升,其带来的周边利益也越来越被从事相关产品开发的业界人士所关注和重视。

1.2.2 Andriod的未来

Android作为一个出现不久的移动信息设备开发平台,因为具有一些巨大的先天优势,所以发展前景良好。Android的优势主要体现在:

1.系统的开放性和免费性

Android最震撼人心之处在于Android手机系统的开放性和服务免费。Android是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有更大的自由度,突破了iPhone等只能添加为数不多的固定软件的枷锁,同时与Windows Mobile、Symbian等操作系统不同,Android操作系统免费向开发人员提供,这一点对开发者、厂商来说是最大的诱惑。

2.移动互联网的发展

Android采用WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目等,比iPhone等具有更强的搜索功能,界面更强大,可以说是一种融入全部Web应用的互联网络平台。这正顺应了移动互联网这个大潮流,也必将有助于Android的推广及应用。

3.相关厂商的大力支持

Android项目目前正在从手机运营商、手机制造厂商、开发者和消费者那里获得大力支持。Google移动平台主管鲁宾表示,与软件开发合作伙伴的密切接触正在进行中。从组建开放手机联盟开始,Google一直在向服务提供商、芯片厂商和手机销售商提供Android平台的技术支持。

但是Android也不是一个完美的系统,它同样面临着许多挑战:

1.技术的进一步完善

目前,Android系统在技术上仍有许多需要完善的地方,例如:不支持桌面同步功能,还有自身系统的一些bug。这些都是Android需要去继续完善的地方。

2.开放手机联盟模式的挑战

Android由开放手机联盟开发、维护、完善,还有未来的创新。很多人会担心,最终的结局是否会像当年的Linux和Windows操作系统之争那样?这种开发式联盟的模式,对Android未来的发展、定位是否存在阻碍作用?这些未知的隐忧,也会影响到一些开发者的信心。

3.其他技术的竞争

提到移动信息设备,特别是智能手机,永远都要注意Windows Mobile,因为它的背后是微软公司,微软拥有PC操作系统市场最大、最牢不可破的占有率。而智能手机与PC互相连动,实现无缝对接,这都是智能手机的一个发展趋势。在这方面,Android就显得稍逊一筹。此外,即使在智能手机自身的操作系统上,苹果公司的iPhone目前也占有绝对的霸主地位,还有Nokia公司的Symbian以及RIM的Blackberry都会与Android展开激烈的竞争。

1.2.3 Andriod平台的技术架构

Android平台采用了软件堆层(Software Stack),又名软件叠层的架构,主要分为四部分:底层以Linux核心为基础,并包含各种驱动,只提供基本功能。中间层包括程序库(Libraries)和Android运行时环境。再往上一层是Android提供的应用程序框架。最上层是各种应用软件,包括通话程序、短信程序等,这些应用软件由开发人员自行开发。

Android平台的架构如图1-5所示。

图1-5 Android平台的架构

1.应用程序(Applications)

Android会附带一系列核心应用程序包,这些应用程序包包括E-mail客户端、SMS短信程序、日历、地图、浏览器、联系人管理程序等。Android中所有的应用程序都是使用Java语言编写的。

2.应用程序框架(Application Framework)

开发者也可以访问Android应用程序框架中的API。该应用程序架构简化了组件的重用,任何一个应用程序都可以发布它的功能块,并且任何其他的应用程序都可以使用这些发布的功能块(应该遵循框架的安全性限制)。同样,该应用程序的重用机制也使用户可以方便地替换程序组件。

隐藏在每个应用程序后面的是Android提供的一系列的服务和管理器,其中包括:

● 丰富而又可扩展的视图(Views):包括列表(Lists)、网格(Grids)、文本框(Text Boxes)、按钮(Buttons),甚至包括可嵌入的Web浏览器,这些视图可以用来构建应用程序。

● 内容提供器(Content Providers):使得应用程序可以访问另一个应用程序的数据(例如,联系人数据库),或者可以共享它们自己的数据。

● 资源管理器(Resource Manager):提供非代码资源的访问,例如本地字符串、图形和布局文件(Layout Files)等。

● 通知管理器(Notification Manager):使得应用程序可以在状态栏中显示自定义的提示信息。

● 活动管理器(Activity Manager):用来管理应用程序生命周期,并且提供常用的导航回退功能。

3.程序库(Libraries)

Android平台包含一些C/C++库,Android系统中的组件可以使用这些库。它们通过Android应用程序框架为开发者提供服务。这些程序库主要包括:

● 系统C库:一个从BSD继承的标准C系统函数库,它是专门为基于嵌入式Linux设备定制的。

● 媒体库:基于PacketVideo的OpenCORE,该库支持多种常用的音频、视频格式文件的回放和录制,同时支持静态图像文件,编码格式包括MPEG4、H.264、MP3、AAC、AMR、JPG和PNG等。

● Surface Manager:管理显示子系统,并且为多个应用程序提供2D和3D图层的无缝融合。

● LibWebCore:一个最新的Web浏览器引擎,支持Android浏览器和一个可嵌入的Web视图。

● SGL:底层的2D图形引擎。

● 3D库:基于OpenGL ES 1.0 API实现,该库可以使用3D硬件加速或者使用高度优化的3D软加速。

● FreeType:用于位图和矢量字体显示。

● SQLite库:一个对于所有应用程序可用的、功能强劲的轻型关系型数据库引擎。

4.Android运行时环境

Android运行时环境由一个核心库和Dalvik虚拟机组成。核心库提供Java编程语言核心库的大多数功能。每一个Android应用程序都在自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。它依赖于Linux内核的一些功能,例如线程机制和底层内存管理机制等。Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对小内存的使用进行了优化,同时虚拟机是基于寄存器的,所有的类由Java编译器编译,然后通过SDK中的“dx”工具转化成.dex格式,最后由虚拟机执行。

5.inux内核

Android核心系统服务依赖于Linux 2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型等。Linux内核也同时作为硬件和软件栈之间的抽象层。