Android 系统综述.docx
- 文档编号:4451532
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:17
- 大小:479.56KB
Android 系统综述.docx
《Android 系统综述.docx》由会员分享,可在线阅读,更多相关《Android 系统综述.docx(17页珍藏版)》请在冰豆网上搜索。
Android系统综述
Android系统综述
目录
目录2
1.Android的发展状况3
1.1Android项目的起源与发展3
1.2Android系统的产品化3
1.3Android与其它手机操作系统的竞争现状4
1.3.1Android与其它基于Linux的智能机系统4
1.3.2Android与其它智能机系统4
2.Android的架构5
2.1Android系统的功能特性5
2.2Android的架构6
2.2.1应用程序6
2.2.2应用程序框架6
2.2.3库6
2.2.4Android运行时(AndroidRuntime)7
2.2.5Linux内核7
2.3Dalvik虚拟机8
2.4架构与许可证之间的关系8
3.Android上的应用程序9
3.1Android应用程序特点9
3.2Android的应用程序开发现状10
3.2.1AndroidMarket与iPhoneAppStore10
3.2.2Android上的应用程序开发概要12
4.Android在中国的现状14
4.1Android系统在中国的市场推广14
4.2国内Android开发者的现状15
1.Android的发展状况
1.1Android项目的起源与发展
Android项目起源于Google的一次收购。
2005年8月,Google发起了一次并不起眼的收购,一家名为Android的,成立才22个月的公司被Google收入囊中,公司中的员工也大多进入了Google工作,进入Google之后,AndyRubin带领开发人员开发出了基于Linux内核的Android系统。
2007年11月5日,Google宣布与其它33家手机制造商(包含摩托罗拉、宏达电、三星、LG)、手机芯片供货商、软硬件供货商、电信运营商联合组成开放手机联盟(OpenHandsetAlliance),发布了Android开放手机软硬件平台。
参与开放手机联盟的这些厂商,都会基于Android平台,来开发新的手机业务。
Android向手机厂商和手机运营商提供一个开放的平台,供它们开发创新性的应用软件。
Android系统保持着相当高的升级频率,显示了相当的活跃性。
到目前为止,已经推出了十余个升级版本,其中重要的版本升级有以下几个:
Android1.0,它发布于2008年9月23日,世界上第一款Android智能机HTCG1就是采用的这一版本的系统(可以通过刷ROM升级到某些后续版本)。
Android1.5(代号Cupcake),发布于2009年4月30日,它基于Linux2.6.27内核。
Android1.6(代号Donut),发布于2009年9月15日,它与1.5使用了同样的Linux内核,对上层的应用进行了一些升级,这是目前使用最广泛的Android系统。
Android2.0(代号Eclair),发布于2009年10月26日,它基于Linux2.6.29,在这一个版本中,首次引入了多点触控的特性。
Android2.1,发布于2010年1月5日,这是目前最新的Android版本,功能更为强大,目前只有GoogleNexusOne,摩托罗拉Milestone等极少数最新配置的手机才采用该系统。
Android系统各个版本的命名规律很有特色,全都是甜点的名字,并按首字母C,D,E,F的顺序排列。
下一个Android的版本将会被命名为Froyo(冻酸奶,基于LinuxKernel2.6.32)。
Froyo之后的版本的Android将会命名为Gingerbread(姜饼,基于LinuxKernel2.6.33/34)。
1.2Android系统的产品化
由于Android系统在设计之初就为可移植性作了充分的考虑,因此,采用Android系统的各种设备正越来越多地涌现。
在手机市场上,三星、HTC、摩托罗拉、LG等厂商均是Android的支持者。
Android系统定位于硬件配置较高的智能机,智能机市场的不断扩大正好给了Android在手机上更大的发展空间。
根据Gartner的调查报告,2009年智能手机销量达到12亿1100万部,同比增长了23.8%,在这样的大背景下,Andriod系统智能机也大举抢占市场,占有率由2008年的0.5%猛增到2009年的3.9%,可谓欣欣向荣。
2008年9月,T-mobile发布了首款Android系统手机HTCDreamG1。
这款手机具备多种特性,包括对3G网络的支持、电容屏全触摸操作、侧滑全键盘便捷输入方式、紧密的网络应用、无缝捆绑Google服务以及强大的的可扩展性等。
随后,HTC又推出了G2,G3等系列机型。
而Google也于2010年1月5日推出了首款自有机型NexusOne,强悍的配置令人侧目,被人视为Google对苹果的iPhone发出了直接挑战。
一度陷入困境的摩托罗拉也一口气连续推出多款Android机型,其中Droid销量非常惊人,前74天销量就达到了105万部,甚至超过了iPhone。
GoogleCEO施密特今年2月表示,采用Android系统的手机每日的出货量已经达到6万台。
除了手机,在最近兴起的上网本和电子书阅读器上,以及传统的多媒体播放器中也出现了Android的身影。
国内的oppo公司推出了基于Android系统的电子书阅读器"Enjoy",华为则推出了基于Android的平板电脑,著名的Mp4播放器厂商法国爱可视也基于Android开发了数款Mp4。
在各种平台上,Android都展现了其强大的生命力。
1.3Android与其它手机操作系统的竞争现状
1.3.1Android与其它基于Linux的智能机系统
由于Linux的开放性,在Android之前,就已经有许多组织推出了基于Linux的智能手机系统。
其中最著名的当数Maemo和LiMo.
Maemo是一个基于DebianLinux的系统,它由诺基亚开发,用以弥补日渐衰微的Symbian系统。
目前它所获得的支持还较少,仅仅有诺基亚推出了N900等少数几款终端。
20010年2月,诺基亚宣布将Maemo和英特尔的Moblin计划结合,推出MeeGo,其前景如何,还有待观察。
LiMo是由LiMo基金会推出的一个手机平台,LiMo基金会同是由摩托罗拉、NEC、沃达丰等制造商和运营商于2007年联合组建的,发展前景也被人看好。
不过LiMo平台没有像Android一样的AppMarket,其应用软件数量较Android要少。
1.3.2Android与其它智能机系统
Android的开放性对于原先都是闭源的商业操作系统来说是巨大的挑战。
在Android推出之前,智能手机系统最主要由Symbian,RIM,iPhoneOS,WindowsMobile这四家把持,这四家均是封闭的。
2010年2月,Symbian宣布将逐步开放源代码,预计在一季度末将整个Symbian平台全部开放,这与Android在2009年的迅猛发展不无关系。
根据Gartner的统计数据,在2009年,Android的市场占有率狂增7倍。
下图就是Gartner对各个系统市场占有率的统计结果。
2.Android的架构
2.1Android系统的功能特性
在硬件的支持下,Android系统拥有以下功能特性:
1.有一套应用程序框架,支持各个组件的利用和替换。
2.基于Dalvik虚拟机,专为移动设备上的Java运行作优化。
3.内置基于Webkit引擎的浏览器。
4.拥有优化的图形处理机制,包括可自定义的2D图形库和3D图形库,并且可选开启硬件加速。
5.可用SQLite存储结构化数据。
6.支持常见的音频、视频以及图片格式(如MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF)。
7.支持GSM协议。
8.支持蓝牙、EDGE、3G以及WIFI
9.支持摄像头、GPS、电子罗盘以及加速度感应。
10.拥有完善的开发环境,包括模拟器、调试工具、性能分析工具以及Eclipse插件。
2.2Android的架构
下图是Android官方给出的架构图,从图中我们可以看到,Android系统可分为五个部分,下文中将详细介绍各个部分:
2.2.1应用程序
Android系统内置一套核心应用程序,如联系薄、电话程序、短消息程序、日历、地图等。
这些应用都是用Java语言开发的,此外,开发人员还可以使用Android的SDK开发各种各样的应用程序运行在这一层上。
2.2.2应用程序框架
Android的这一套应用程序框架主要优点就是增强了复用性。
在程序框架安全机制的约束下,开发人员可以发布自己的组件,也可以使用其它应用程序中的组件。
例如假设我们开发的一个音乐播放器中有一个播放列表的组件,那么在另外一个视频播放器中,就可以直接调用这一个播放列表组件。
这一特性在随后的应用开发一章中我们还将详细介绍。
应用程序都运行于应用程序框架之上,一般情况下,应用程序会用到以下Android自带的组件:
1.View组件。
Android中的View组件种类繁多而且可扩展性强,类似于HTML中的各种标签,可以提供各种视图元素,如列表、输入框、按钮、内嵌的浏览器等。
2.ContentProvider。
通过ContentProvider,应用程序可以把自己的数据共享给别的应用程序,也可以使用其它程序共享出来的数据。
3.ResourceManager。
通过它,应用程序就能访问各种资源,如图片、布局文件、字符串资源等。
4.NotificationManager。
它负责向为应用程序向发户发出通知。
通知的方式有许多种,如在窗口中的状态栏显示、振动手机、发出响铃等。
5.ActivityManager。
它管理应用程序的生命周期,处理程序的启动、退出、运行等状态。
2.2.3库
Android包含一套C/C++库,可以为Android程序提供各种功能。
这些功能通过Android应用程序框架暴露给上层的开发人员。
常用的核心的库有下面这一些:
1.SystemClibrary-这是一个专门为嵌入式的基于Linux的设备优化过的标准C库。
2.MediaLibraries-Android内的多媒体库基于OpenCORE;支持多种流行的音频和视频格式和静态图形文件格式(包括MPEG4,H.264,MP3,AAC,AMR,JPG,andPNG)的播放和录制。
3.LibWebCore-这是一个流行的浏览器引擎,Android的浏览器和嵌入到应用程序中的WebView都是由它驱动的。
4.SGL-底层的2D图形引擎
5.3Dlibraries-它基于OpenGLES1.0API实现;如果硬件支持的话,它可以使用硬件3D加速,即使没有硬件支持,它也可以使用内置的、高度优化的3D软件加速。
6.FreeType-这是一个使用十分广泛的开源位图和矢量字体渲染库。
7.SQLite-SQLite是一个使用越来越广泛的轻量级开源数据库引擎,在嵌入式设备上运用十分广泛。
Android程序可以使用SQLite来存储结构化的数据。
2.2.4Android运行时(AndroidRuntime)
Android的运行时实际上包括核心类库和Dalvik虚拟机两部分。
核心类库包括了最基本的类库,如datastructure,network,Utilities,Filesystem等的,很多实现代码都是来自ApacheHarmony项目,主要目的是保证虚拟机的类库能够和JavaSE的类库最大可能的兼容,从而降低应用开发者从JavaSE阵营转移到Android开发阵营的难度,增加其可用性。
Dalvik虚拟机主要是完成对象生命周期的管理,堆栈的管理,线程管理,安全和异常的管理,以及垃圾回收等等重要功能。
在Android中,每一个应用程序的进程都会运行在一个独立的Dalvik虚拟机中。
Dalvik是Android系统的一个关键部件,开发人员为其作了大量有针对性的优化工作,从而保障了Android系统的运行效率。
鉴于Dalvik虚拟机的重要性,下文我们还将详细介绍Dalvik。
2.2.5Linux内核
Android的许多核心系统服务都建立在Linux之上,例如内存管理、进程调度、网络协议栈、安全管理以及驱动程序(如WiFi设备驱动、闪存驱动、键盘驱动、摄像头驱动等)。
Dalvik虚拟机就直接依赖下层的Linux内核来实现线程管理、低级内存管理这些功能。
同时Linux内核还负责把下层的硬件抽象出来,形成一个硬件抽象层,为上层的软件提供了一套与硬件无关的接口。
也正是因为这样,Android才得以充分利用Linux的易移植性实现了它跨平台的目标。
但是同时GNULinux里的许多功能Android都没有支持,包括Cairo,X11,Alsa,FFmpeg,GTK,Pango,Glibc等都移除掉了。
而且Android还以bionic取代Glibc,以Skia替换了Cairo,FFmpeg也被换成了opencore。
2.3Dalvik虚拟机
Dalvik是Android系统的一个关键组件,对它的深入了解有助于我们理解Android开发者构思整个系统的思路。
Dalvik是由DanBornstein为Google开发的,这个名字也是他的祖先曾经居住过的一个村庄的名字。
作为Android系统中的Java虚拟机,Dalvik很好地解决了版权问题和性能问题。
众所周知,Java是Sun公司(现已被Oracle收购)推出的产业产品,并未开放源代码。
Google为了打造一个开放的Android,决定自行开发Java虚拟机,绕过Sun的J2ME平台,于是才有了Dalvik。
Dalvik相比于普通的Java虚拟机作了许多的优化工作。
它采用了基于寄存器的架构,经过优化后,可以在限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行。
独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。
根据Google的测算,64M的RAM已经能够令系统正常运转了。
其中24M被用于底层系统的初始化和启动,另外20M被用于高层启动高层服务。
当然,随着系统服务的增多和应用功能的扩展,其所消耗的内存也势必越来越大。
归纳起来,Dalvik虚拟机有如下几个主要特征:
1.一个应用中会定义很多类,编译完成后即会有很多相应的CLASS文件,CLASS文件间会有不少冗余的信息;而DEX文件格式会把所有的CLASS文件内容整合到一个文件中。
这样,除了减少整体的文件尺寸,I/O操作,也提高了类的查找速度。
2.增加了新的操作码的支持
3.文件结构尽量简洁,使用等长的指令,借以提高解析速度
4.尽量扩大只读结构的大小,借以提高跨进程的数据共享。
Dalvik虚拟机上运行的不是普通的CLASS文件,而是特有的dex文件。
在Android的SDK中有一个叫做dx的工具可以用来把Java的.class文件转换成.dex格式。
一般来说,同样的class文件转换成的dex文件比它转换成的jar文件要小不少。
2.4架构与许可证之间的关系
Google在设计Android时,就在版权问题上煞费苦心。
Android的架构也与其许可策略有着莫大的关系。
Linux内核的许可是GPLV2,Android基于Linux内核构建,但开放手机联盟却为它选择了Apache许可第二版(ASLV2)来发布。
不过,它对于运行在Android之上的应用程序的许可则没有任何限制,第三方应用程序开发者可以选择任何版权许可。
这种在不同层次上选取不同许可协议的做法,对于Android的推广有重要的作用。
众所周知,GPLV2协议是典型的“Copyleft"协议,自由软件运动的精神领袖RichardStallman把它设计成具有传染性,不但使用该协议的软件自身要公开源代码,对它的所有修改和衍生代码也都必须公开而且必须以相似的许可证发布。
而ASL则不同,它虽然也是一种使用广泛,并且得到了OSI认可的开源许可,但它却并不限制商业性的开发和垄断式的发布。
对于许多厂商来说,这一点是至关重要的。
许多软件厂商更愿意采用ASL,BSD这类不设限的开源许可,因为在这样的许可下,他们既可以充分利用开源代码,又可以选择不公开自己所作的修改。
所以ASL协议促进了软件厂商对开源软件的使用,因为这可以让厂商获利。
在开源软件的基础上吸引尽可能多的厂商的参与,也很可能正是Android以ASL协议发布的原因。
但是,Android的这种许可方式也招致了许多批评的声音。
2010年2月3日,Linux内核开发者GregKroah-Hartman将Android的驱动程序从Linux内核代码库中删除,这就意味着,Linux内核小组不认可Android对Linux内核的贡献。
这其中的原因就是Android出于授权许可考虑而精心设计的架构。
本来Linux的驱动程序是位于内核空间的,但是这样的话厂商为自己的硬件开发的驱动程序就得依照GPL协议公开源码,而显然厂商是不愿意因此而泄露出硬件细节的。
因此Android开发人员特意对Linux内核作了修改,将原本应该位于Linux内核空间的驱动程序部分上移到了用户空间。
然后再将Linux内核之上的部分以ASL许可发布,这样厂商就可以选择不公开其源码了,Android也从而争取到了大量厂商的支持。
可是这样做带来的恶果就是Android的开发人员的成果无法为主线上的Linux内核所用,厂商为Android开发的驱动也根本无法用于其它的Linux内核,Android只从Linux社区获取,却未能提供回报。
这就招致了开源社区的不满,并迫使Linux小组决定将Android从内核源码主线上删除。
3.Android上的应用程序
3.1Android应用程序特点
Android系统是一个强大的智能机系统,与之相适应的硬件也一般具备相对较高的性能。
总结起来,Android系统上的应用程序具有以下一些特点:
1.功能强大。
Android平台的设备一般都具备较强的运算能力、存储空间、网络功能以及各种各样的传感器。
以第一款Android手机HTCG1为例,它拥有电容触摸屏、加速度传感器、磁场感应器、GPS等功能。
并且对GSM、GPRS、WCDMA、EDGE、HSDPA这些网络提供支持,而且还拥有WIFI功能,这些硬件和网络上的支持让Android的应用程序有了极大的发挥空间,也激发出了开发人员的创新热情,因此也涌现出了各种极富创意的应用软件。
如利用磁场感应来定位方向、检测附近的金属,又如Google官方推出的语音识别和搜索,还有利用GPS功能结合GoogleMap实现的许多基于位置的服务。
2.可复用性强。
Android的应用程序由许多Activity组成,不同的Activity在程序中实现不同的功能模块。
而最令人赞叹的就是,得益于Android的良好设计,不同应用程序之间的Activity可以实现共享(可以通过安全选项进行配置)。
这就实现了良好的复用性,例如假设我们要编写一个内嵌web页面的应用,我们根本不需要自己编写浏览器的组件,而是可以直接调用系统中自带的浏览器组件,非常方便地实现这一功能。
3.开放程度高。
“开放”是Android的设计宗旨之一,因此不同于iPhoneOS等封闭的商业操作系统,在Android系统中,第三方的开发人员编写的程序与系统自带的应用程序几乎是平等的。
开发人员可以自己编写程序替代系统中原有的程序,甚至连拨号、短信、主屏幕这样的核心功能都可以由第三方开发人员的程序替代。
3.2Android的应用程序开发现状
3.2.1AndroidMarket与iPhoneAppStore
iPhoneAppStore是苹果公司为iPhone,iThouch等平台推出的应用软件商店,它极大地促进了开发者的热情,成为了竞争者纷纷模仿的对象。
Google也于2008年8月28日推出了AndroidMarket,效仿AppStore,并且也取得了不俗的成绩。
相比于AppStore,AndroidMarket更为自由开放,在AppStore上传的软件,需要经过长可达数周的审核,并且可能由于各种原因审核不通过。
例如某些非常优秀的软件就因为与iPhone自带的功能相重合而无法通过审核。
在AndroidMarket则不一样,开发人员只要注册认证之后就可以自由上传软件,不需要等待审核。
而且Google向来擅长数据分析,它为开发人员提交的应用提供了非常详尽的统计,帮助开发人员研究用户需求。
但是目前AndroidMarket跟AppStore之间还有相当大的差距,苹果的AppStore只用了一个月的时间,销量就达到了3000万美元,至2010年1月份,AppStore应用的下载次数已经突破30亿次。
从下表中,我们可以看到AppStore的发展速度。
AppStore的迅猛发展给不少个人开发者带来了巨大的财富,也让EA这些传统游戏厂商发现了新的商机。
日期
应用程序数目
累计下载
2008年7月11日
500
0
2008年7月14日
800
10,000,000
2008年9月9日
3,000
100,000,000
2008年10月22日
7,500
200,000,000
2008年12月5日
10,000
300,000,000
2009年1月16日
15,000
500,000,000
2009年3月17日
25,000
800,000,000
2009年4月23日
35,000
1,000,000,000
2009年6月8日
50,000
1,000,000,000+
2009年7月11日
55,000
1,000,000,000+
2009年7月14日
65,000
1,500,000,000
2009年9月9日
75,000
1,800,000,000
2009年9月29日
85,000
2,000,000,000+
2009年11月4日
100,000
2,000,000,000+
2010年1月5日
100,000+
3,000,000,000+
2010年1月27日
140,000+
3,000,000,000+
相比之下,AndroidMarket的发展速度就明显要慢一些了。
到目前为止,Android上的应用数量总计大约为3万个,远少于AppStore上的10多万个。
归结起来,有以下原因:
1.用户群的不同。
苹果公司的用户群一直相对高端,并且对苹果产品的文化非常认同,消费能力也较强。
因此给开发者带来了大量的收入,刺激了开发人员的热情。
而相比之下,AndroidMarket中的应用则以免费应用为主,免费应用的比例高达57%,位居所有手机应用商店之首。
在AppStore中,这一比例只有25%,远远低于AndroidMarket,很显然,大量的免费应用是不利于开发人员的。
2.支付手段不便。
AndroidMarket起初甚至根本不向收费软件开放,后来逐渐在世界各地支持收费软件的付款了,但是却必须使用GoogleCheckOut支
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 系统综述 系统 综述