什么是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


更多相关文章

  1. 什么是Android——Android平台简介
  2. Android平台开发-Android(安卓)HAL develop-Android(安卓)HAL开
  3. android兼容oppo手机刘海屏解决方案
  4. Android(安卓)智能手机开发概述
  5. Android平台开发-Android(安卓)HAL develop-Android(安卓)HAL开
  6. Android牟利之道广告平台的介绍
  7. 继续折腾Android,TouchPad, Defy
  8. 原生态Android操作介绍之一
  9. Android平台简介

随机推荐

  1. Android学习笔记-Android非布局activity
  2. android multicast 多播(组播)问题
  3. 2.1……Android中的单位简介
  4. Android(安卓)ListView pull up to refre
  5. android studio开发工具升级到3.6.0以后,a
  6. android正则表达式匹配中文正解
  7. Android Gradle 初识
  8. android camera以时间来命名照片文件
  9. Android解决fragment重影问题
  10. Android Json 使用jsonschema2pojo生成.j