什么是Android
——Android平台简介
Keyword: Google Android,Linux内核,开源,应用领域,开放手机联盟(Open Handset Alliance)
在网上看到有“Android平台”和“Android框架”的概念,首先要清楚的是:“Android框架”只是“平台”的一部分而已。
Android早期由Andy Rubin(Android之父)创办,Google于2005年收购了成立公22个月的Android公司,开始了短信、手机检索、定位等业务,进入了 基于Linux平台的开发。Google公司在2007年11月5日正式公布了这个平台,之后由开放手机联盟(Open Handset Alliance)开发。Open Handset Alliance组织由一群共同致力于构建更好的移动电话的公司组成。这个组织由Google领导,包括移动运营商、手持设备制造商、零部件制造商、软件 解决方案和平台提供商以及市场营销公司。
Android平台的更新速度很快,第一个版本是Android 1.5 Cupcake(蛋糕杯)接下来是Android 1.6 Donut(甜甜圈)、Android 2.0/2.0.1/2.1 Eclair (法式奶油夹心松饼)、Android 2.2/2.2.1 Froyo(冻酸奶)、Android 2.3 Gingerbread (姜饼人)、Android 3.0 Honeycomb(蜂巢)。3.0是为平板电脑优化的版本。还有流传的Android 2.4 Ice Cream Sandwich(冰激凌三明治)和Android ?? Jelly Bean(胶质软糖) 。可以发现一个有趣的事情,就是每个发布代号都是一个甜品名称,并且是从字母C开始顺序向后排。
从Android的发展看来,它已经不再局限于移动应用领域了,还可以关注一下Google TV (运行Android系统的电视机=,=),试想一下还有可能出现安装有Android的汽车、微波炉、电冰箱......
来看看到底什么是Android吧,它是一个平台、是一个操作系统、使用Linux内核、包含一套开发框架、各种运行库(Media、SQLite、 OpenGL ES等)、Dalvik虚拟机,提供了Android SDK,包含丰富的(还算丰富=,=)工具集(有调试器、库、手机仿真器、文档、示例代码和教程),还有Android Development Tools(ADT),是基于Eclipse的开发辅助插件
下图显示了Android操作系统的架构。
从上图中可以清楚的看出:
- 最上层是面向用户的Application(应用程序),包括电话程序、联系人程序、浏览器、地图、Email等。
- 下面是Application Framework,为开发人员提供访问核心组件所使用的API,包含了丰富的View组件、Content Providers(内容提供器)用来访问另一个应用程序的数据(如联系人),或者共享它们自己的数据、Resource Manager(资源管理器)提供对资源的访问(如本地字符串,图形,布局文件等)、Notification Manager(通知管理器)、Activity Manager(活动管理器)等等。
- 第三层是系统运行库,包含程序库和Android运行库。
一、程序库中包含了一些C/C++库,通过应用框架为开发者提供服务,如:Libc(从BSD继承来的标准C系统函数库)、媒体库、SGL(2D图形引 擎)、3D libraries(基于OpenGL ES 1.0 APIs实现,可以使用硬件或软件3D加速)、SQLite(数据库引擎)等等。
二、Android运行库包括一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个Android应用程序都在自己的进程中运行,都拥 有一个独立的Dalvik虚拟机实例。Dalivk被设计成一个设备可以同时高效地运行多个虚拟系统。Dalivk虚拟机执行.dex文件(Dalvik 的可执行文件),该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有类都经由Java编译器编译,然后通过SDK中的dx工具转化 成.dex格式,由虚拟机执行。Dalivik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。
- 接下来一层是Hardware Abstract Layer(硬件抽象层),你在早期的架构图中看不到这一层。2008年,Patrick Brady就提出了Android HAL架构,它是为了把Linux kernel与上层框架完全隔开,让Android不至于过度依赖Linux kernel,可以让Android Framework的开发能在不考虑驱动程序的前提下进行。HAL仍以*.so形式存在,Stub向HAL“提供”操作函数,Runtime则是向HAL 取得特定模块的操作(operations)。2010年2月3日,Linux内核的开发者,将Android的驱动程序从Linux内核Staging tree(状态树)上去除,从此,Android与Linux核心开发就分开了。
- 最下面一层是Linux核心,Android的核心系统依赖于Linux内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Android的 Linux kernel也不是GNU/Linux。Android将驱动程序移到userspace,使得Linux driver与Linux kernel分开。
Android平台五大优势特色
这些找工作的时候可能会被问到吧=,=
一、开放性
在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。
开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,随大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。
二、挣脱运营商的束缚
在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从iPhone上市, 用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的 笑谈。
三、丰富的硬件选择
这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特 色,却不会影响到数据同步、甚至软件的兼容。好比你从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到 iPhone上使用、联系人等资料更是可以方便地转移。
四、不受任何限制的开发商
Android平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏如可控制正是留给Android难题之一。
五、无缝结合的Google应用
如今叱诧互联网的Google已经走过10年度历史。从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。
以上是总结的一些关于Android平台的简介,以后对于Android的学习,会从Android Application Fremawork开始,逐步的深入底层。
经常在网上看到或听到一些关于Android好坏的评论,由其是关于Android手机方面的,因为还有个Iphone嘛,本人并不想偏向哪边,以目前来 说,苹果的系统是很棒,我甚至在用苹果的PC。至于“Android就是手机的未来”这种说法也思考过,也许Android不会成为手机操作系统的未来, 但希望开源与分享的精神最终能为未来的生活增添色彩。
参考资料:
http://www.ibm.com/developerworks/cn/opensource/theme/android/
http://www.top-e.org/jiaoshi/html/?250.html
http://zh.wikipedia.org/wiki/Android
http://baike.baidu.com/view/1241829.htm
http://www.gsmcdma.com/a/ruanjiankaifa/xitongjiagou/2010/0515/19.html