分类: 嵌入式
2011-05-27 21:22:45
Android和iOS都是用户喜欢的操作系统,Android 是用于移动设备的软件堆栈,包括操作系统、中间件和关键应用程序。Android SDK 提供了必需的工具和 API,用于开始开发在 Android 驱动的设备上运行的应用程序。 Android一词的本义指“”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 2.4 Gingerbread和Android 3.0 Honeycomb。 Android是基于内核的,是公司在2007年11月5日公布的手机操作系统。 早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续进行对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用则由各公司自行开发,部分程序以Java编写。 2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在市场急速扩张。采用Android系统主要厂商包括美国摩托罗拉,SE等,另外还有中国大陆厂商如:华为、中兴、联想等。 Android以Linux为核心的Android行动平台,使用作为编程语言,使到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个Activity类别(class)负责建立视窗(window),一个活动中的Activity就是在foreground(前景)模式,背景执行的程序叫做Service。两者之间透过由ServiceConnection和AIDL连结,达到複数程序同时执行的效果。如果执行中的Activity全部画面被其他Activity取代时,该Activity便被停止(stopped),甚至被系统清除(kill)。 View等同于J2ME的Displayable,程式人员可以透过View类别与“XML layout”档将UI放置在视窗上,Android 1.5的版本可以利用View打造出所谓的Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,的Android Hero手机即含有大量的widget。至于ViewGroup是各种layout的基础抽象类别(abstract class),ViewGroup之内还可以有ViewGroup。View的构造函数不需要再Activity中调用,但是Displayable的是必须的,在Activity中,要通过findViewById()来从XML中取得View,Android的View类的显示很大程度上是从XML中读取的。View与事件(event)息息相关,两者之间透过Listener结合在一起,每一个View都可以注册一个event listener,例如:当View要处理使用者触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。 中介软件 作业系统与应用程式的沟通桥樑,并用分为两层:层(Library)和(Virtual Machine)。 是Android改良libc的版本。Android同时包含了,所谓的Webkit就是Apple Safari浏览器背后的引擎。Surface flinger是就2D或3D的内容显示到萤幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。 Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。 Android使用skia为核心图形引擎,搭配OpenGL/ES。skia与Linux Cairo功能相当,但相较于Linux Cairo, skia功能还只是阳春型的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,目前Skia也是Google Chrome的图形引擎。 Android的多媒体资料库采用资料库系统。资料库又分为共用资料库及私用资料库。使用者可透过ContentResolver类别(Column)取得共用资料库。 Android的中间层多以Java实作,并且采用特殊的(Dalvik Virtual Machine)。Dalvik虚拟机器是一种“暂存器型态”(Register Based)的Java虚拟机器,变数皆存放于中,虚拟机器的指令相对减少。 Dalvik虚拟机器可以有多个实例(instance),每个Android应用程式都用一个自属的Dalvik虚拟机器来执行,让系统在执行程式时可达到最佳化。Dalvik虚拟机器并非执行Java字节码(Bytecode),而是执行一种称为.dex格式的档案。 硬体抽像层 (Hardware Abstraction Layer) Android的HAL(硬体抽像层)是能以封闭源码形式提供硬体驱动模组。HAL的目的是为了把Android framework与Linux kernel隔开,让Android不至过度依赖Linux kernel,以达成kernel independent的概念,也让Android framework的开发能在不考量驱动程式实作的前提下进行发展。 HAL stub是一种代理人(proxy)的概念,stub是以*.so档的形式存在。Stub向HAL“提供”操作函数(operations),并由Android runtime向HAL取得stub的operations,再callback这些操作函数。HAL里包含了许多的stub(代理人)。Runtime只要说明“类型”,即module ID,就可以取得操作函数。 程式语言 Android是执行于之上,但并不是。因为在一般GNU/Linux裏支持的功能,Android大都没有支援,包括、、、、、及等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android为了达到商业应用,必须移除被授权证所约束的部份,例如Android将驱动程式移到userspace,使得Linux driver与Linux kernel彻底分开。bionic/libc/kernel/ 并非标準的kernel header files。Android的kernel header是利用工具由Linux kernel header所产生的,这样做是为了保留常数、资料结构与巨集。 目前Android的Linux kernel控制包括安全(Security),(Memory Managemeat),(Process Management),(Network Stack),(Driver Model)等。下载Android源码之前,先要安装其构建工具来初始化源码。Repo是Android用来辅助工作的一个工具。 近日,采用系统的 、平板电脑产品呈现井喷的现象。最新数据显示,以苹果iOS(iPhone、iPad采用的系统)、Android为代表的智能终端,在市场上占有率达九成以上。五一前夕,国内某大型连锁3C卖场巨头甚至传出全面停售非智能手机的消息,这意味着继冲击波后,一场“智能”革命正铺天盖地而来。 各家谷歌智能终端生产、研发的大本营深圳,Android平台人才的稀缺性问题日益凸显,一些培训机构的学员起薪更高达5000元以上,如今Android已成了IT业界的“高薪”领域。不过,有业内人士指出,推出培训项目需要大量 的技术储备,对培训机构是一项严峻考验,对人才来说,进入Android领域也并非那么容易。 机构推培训门槛高 尽管Android人才需求强盛,不过,目前华为、中兴等大型企业招聘Android人才,往往都是采用自己培养模式,而少有培训机构涉足。而一些缺乏培养能力的中小型Android开发商、终端方案公司则经常一将难求,人才争夺异常激烈。据了解,目前一名最普通的工程师,薪水以 每年10%-15%的速度增长,被猎头挖角跳槽薪水翻番的更不在少数。 但是,让人不能理解的是,既然供求关系如此紧张,为何IT培训行业对Android培训这块肥肉却无动于衷?南都记者通过多方了解发现,事实上,Android培训基本上是被融入到传统的IT培 训课程中,许多机构都把Android当成了主要课程的延续学习部分,而且这部分的培训时间一般不长,8-16个学时,属于简单的介绍课程。 “Android的推出,对界来说太突然了,大家都没有时间准备。”最早推出Android培训的IT培训学校校长指出,Android诞生不过3年左右,与传统IT培训“网络”、“”等内容相比,可以说是全新的。 同时,Android平台的技术含量较高,企业人才培养周期比较长,现在不少开发企业的经验人才储备几乎为零,而对培训机构来说,师资更是一个很大的挑战。有业内人士透露,可以充当讲师的优秀Android工程师,在开发企业月薪高达2万元以上,远高于深圳普通培训机构讲师的水平,“缺乏人才的培训机 构,又如何培养人才呢”? Android专家认为:“除了人才,还有两个原因,一是技术储备,二是课程体系开发。”据介绍,就是从Linux的嵌入式系统发展而来的,前端实现则依靠Java,而传统的培训机构在两者上一般都是“井水不犯河水”。再次,建立一套完善的课 程体系也是巨大的工程,而Android推出才3年,培训机构还没足够时间去研发课程,“所以大家都不敢轻易涉足Android”。
南山一家Android开发企业负责人汪俊表示:“是一个复合型的平台,对人才的要求很高,既要懂Linux内核又要懂Java前台。而且Android融入大量非常新颖的开发理念,对传统人才的知识结构更新是一种挑战。” 某IT培训机构负责人坦言,对学员来说,掌握Android技术必须要精通与C语言,此后才能继续学习Android应用开发。但是 Linux部分,对于高校毕业生来说,都不一定掌握得牢固。而Linux基础扎实的毕业生,他们本身就可以找一份理想的工作,因此Android培训的吸引力有限。 据了解,目前培养一名合格的Android才人,即使在大学计算机本科学历的基础上培养,时间也要长达6个月之久。冯云川表示:“现在高校IT教育最大的问题是与新技术脱节,而培训机构所做的应该是把脱节的部分连接起来。” 事实上,要掌握Android技术,除了,还要有C语言以及Java,这意味着学员要精通3门语言,培训难度以及强度显然非常大。冯云川透露: “尽管我们课程是同时针对大学毕业生与零基础学员,但是后者在真正进入Android培训时,我们都需要为他们提供免费的预科课程,学习、巩固 Linux等知识。” 但反过来看,汪俊表示:“Android对搞技术的人来说是一种很好的磨练。掌握Android意味着掌握了系统、应用开发等技能,就业面会比传统更广。”同时,他透露,普通程序员在深圳,平均薪酬水平大概在3000多元,Android 程序员起薪在5000元左右,就业单位集中在手机厂家、方案商、应用开发企业等,“尽管这类企业规模不大,但是盈利情况十分理性”。 有业内人士估算,按现在深圳涉及Android系统的企业数量、发展速度,仅每年人才缺口可能就高达2万人以上。“现在不仅手机、平板电脑企业有大量人才 缺口,而且康佳、创维、T C L等彩电企业也在开发基于Android系统的智能电视,Android已成为3C数码电子产品的大潮流,所以该领域 人才的前景应该很乐观。” 技术为王“UI”人才是方向 Android人才需要具备哪些素质?汪俊指出,除了刚才提到的几个方面外,不管进入手机、平板电脑,还是其他智能消费电子的领域,都需要大量相应行业知识,因为每个行业都有特定的技术标准、技术协议。 过去,在IT行业普遍认为,“会技术懂管理”的人才最吃香,因为行业中,缺乏的不是“代码员”,而是直接带领“代码员”们完成任务的管理者,比如项目小组长、项目经理等,尽管级别不高,但他们薪酬往往是基层的数倍。不过,冯云川认为,Android开发企业都是刚起步,不像传统IT企业,一个团队的人数 就成百上千计,需要大量管理人才。所以现阶段,Android人才的技术过硬才是最重要的。 另外,Android专家指出,对Android人才来说,创意与技术具有同等地位。“其实开发一款或游戏,技术上并不困难,但是要开发一款受欢 迎应用,却要创意。”比如大热门游戏《植物大战僵尸》、《愤怒的小鸟》等,都是创意的体现。同时,汪俊认为,懂得美工、UI(界面设计)也是必须的,因为Android带来的不仅是技术革命,还有用户体验上的大幅提高,而用户体验离不开一个精美界面、合理UI设计。 来自于IASN·爱朔科技 | ||