1.1 Android简介
Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动开发软件。
1.1.1 Android起源
Android本是一家公司的名称,这家公司的创始人名叫Andy Rubin。Andy Rubin创立了两个手机操作系统公司:Danger和Android。Danger以5亿美元卖给微软,成为了今天的Kin,Android以4千万美元卖给Google。Android作为Google企业战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。全球为数众多的移动电话用户正在使用各种基于Android的电话。谷歌的目标是让移动通信不依赖于设备甚至平台。出于这个目的,Android将被补充,而不会替代谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品。
Android手机就是使用Android操作系统或OMS操作系统的手机,2008年9月22日,美国运营商T-Mobile在纽约正式发布第一款Android手机——T-Mobile G1,如图1-1所示。该款手机为台湾宏达电代工制造,是世界上第一部使用Android操作系统的手机,支持WCDMA/HSPA网络,理论下载速率7.2Mbps,并支持Wi-Fi。2009年9月初,摩托罗拉坐镇主场在旧金山举办的Giga OM 2009大会上携手T-Mobile正式发布了旗下首款搭载Android操作系统的智能手机——MOTO CLIQ(见图1-2),使其在沉寂许久后的首次爆发吸引了全球无数用户的目光。如果说T-Mobile G1的出世开辟了Android领域先河的话,那么摩托罗拉CLIQ的发布则更多地被视为昔日手机霸主的强势回归!2009 年10 月28 日摩托罗拉和网络运营商Verizon共同宣布了首款采用Android 2.0的手机Droid。2010年1月索尼爱立信首款Android机型X10上市。2010年1月7日,Google在其美国总部正式向外界发布了旗下首款合作品牌手机Nexus One(HTC G5),并同时开始对外发售。2010年7月9日,美国NDP集团调查显示,Android系统已占据了美国移动系统市场28%的份额。我们相信未来将有越来越多的Android手机握在消费者的手中。
图1-1 第一款Google手机T-Mobile G1
图1-2 MOTO CLIQ
1.1.2 Android的优点
目前市场上的手机操作系统除了Android,还有Symbian、iPhone等,与这些手机系统相比,Android具有如下的优点:
第一,真正开放性。Android是一个真正意义上的开放性移动开发平台,它同时包含底层操作系统以及上层的用户界面和应用程序——移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。Google与OHA合作开发Android,目的就是通过与运营商、设备厂商、开发商等结成深层次的合作伙伴关系,来建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统,这样应用程序之间的通用性和互联性将在最大程度上得到保持。另一方面,Android平台的开放性还体现在不同的厂商可以根据自己的需求对平台进行定制和扩展,以及使用这个平台无须任何授权许可费用等。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开放性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的收益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。
第二,应用程序相互平等。所有的Android应用程序之间是完全平等的,所有的应用程序都运行在一个核心引擎上面,这个核心引擎就是一个虚拟机,它提供了一系列用于应用程序和硬件资源间通信的API。抛开这个核心引擎,Android所有其他的东西,包括系统的核心应用和第三方应用都是完全平等的。
第三,应用程序之间沟通无界限。在Android平台下开发应用程序,能方便实现应用程序之间的数据共享,只需要经过简单的声明或操作,应用程序即可访问或调用其他应用程序的功能,或者将自己的部分数据和功能提供给其他应用程序使用。
第四,快速方便的应用程序开发。Android平台为开发人员提供了大量的实用库和工具,开发人员可以快速创建自己的应用程序。如今叱咤互联网的Google已经走过10年,从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。
1.1.3 Android的系统架构
Android是基于Linux内核的软件平台和操作系统,采用了软件堆层(Software Stack,又名软件叠层)的架构,主要分为四部分,如图1-3所示。第一层以Linux内核工作为基础,由C语言开发,只提供由操作系统内核管理的底层基本功能;第二层为中间件层,包括函数库Library和虚拟机Virtual Machine,由C++开发;第三层为应用程序框架层,提供了Android平台基本的管理功能和组件重用机制;第四层为应用程序层,提供了一系列核心应用程序,包括通话程序、短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分。
图1-3 Android体系结构图
Linux Kernel Android基于Linux 2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。
Android Runtime Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序都是Dalvik虚拟机中的实例,运行在它们自己的进程中。Dalvik虚拟机设计成一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行的文件格式是.dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx是一套工具,可以将Java .class转换成 .dex格式的工具。一个dex文件通常会有多个.class。由于dex有时必须进行最佳化,会使文件大小增加1~4倍,以ODEX结尾。Dalvik虚拟机依赖于Linux内核提供基本功能,如线程和底层内存管理。
Libraries Android包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(Application Framework)暴露给开发者。下面列出一些核心库:
系统C库——标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备。
媒体库——基于PacketVideo的OpenCore。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG。
界面管理——管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层。
LibWebCore——新式的Web浏览器引擎,驱动Android浏览器和内嵌的Web视图。
SGL——基本的2D图形引擎。
3D库——基于OpenGL ES 1.0 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅。
FreeType ——位图和矢量字体渲染。
SQLite ——所有应用程序都可以使用的强大而轻量级的关系数据库引擎。
Application Framework通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等。开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布它的功能且任何其他应用程序都可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。所有的应用程序其实是一组服务和系统,包括:
视图(View)——丰富的、可扩展的视图集合,可用于构建一个应用程序。包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器。
内容提供者(Content Providers)——使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据。
资源管理器(Resource Manager)——提供访问非代码资源,如本地化字符串、图形和布局文件。
通知管理器(Notification Manager)——使所有的应用程序能够在状态栏显示自定义警告。
活动管理器(Activity Manager)——管理应用程序生命周期,提供通用的导航回退功能。
Applications Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。
在本节中,我们简单介绍了Android的起源、Android的优点和Android的体系架构。从技术层面来讲,Android最震撼人心之处在于其开放性和服务免费。Android是对第三方软件完全开放的平台,开发者在为其开发程序时拥有更大的自由度,突破了iPhone等只能添加为数不多的固定软件的束缚。而且与Windows Mobile、Symbian等厂商不同,Android操作系统可以免费使用。