Android平台软件架构设计_第1页
Android平台软件架构设计_第2页
Android平台软件架构设计_第3页
Android平台软件架构设计_第4页
Android平台软件架构设计_第5页
免费预览已结束,剩余4页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Android平台软件架构设计谷歌(Google)的Android是针对便携设备所提出的软件平台(Platform),更具体说是一个软件迭层(SoftwareStack),若软硬件商均支持与遵循此平台规范,则可以达到软硬件高度分离、分立的理想,即软件商所开发的应用程序可以在各种支持Android的硬件上执行,达到与爪哇(Java)程序语言相同的原初理想:程序撰写一次后,可以在各种硬件上执行,达到最精省的程序心力开发,同时让程序的潜在执行机会达最大化。虽然Java已相当适合,然却有开放性及版权顾虑,因此Google才决议推行Android。Android的目标应用Android虽以便携设备为其推

2、行目标,然本质上也适用于小型固接装置,如数字相框(DPF)、视讯机顶盒(STB)等,不过实务上仍以便携设备为主,特别以智能型手机为主,可携式媒体播放器(PMP)、个人导航器(PND)、个人数字助理(PDA)则次之。值得注意的是,由于2008年小笔电(Netbook)风潮兴起,因此Netbook也成为高度瞩目的潜在应用。anoAoiD图一GoogleAndroid的标志(吉祥物?)为一个机器人图片来源:Google迭层最底层:Linux核心了解Android的目标应用,即进入迭层架构的正题,整个Android平台区分成4层、5个区块,并用不同的颜色进行标示。首先说明红色的最底层:Linux核心,

3、此包含一套用于用便携设备的嵌入式Linux外,其余均为硬件装置的驱动程序,如音频驱动程序、Wi-Fi无线通信驱动程序等,另也有较核心的行程间通讯(IPC)驱动程序、电源管理驱动程序。整个Linux核心都以红色标示,表示Linux核心的各软件组件,均是以C语言撰写成,整个红色层均是由芯片业者,或便携设备的系统硬件开发商所负责,即音频芯片商在销售音频芯片时,也当附上Android的音讯驱动程序,而如宏达电子(HTC)之类的便携设备开发商,也必须针对特有的硬件功能,而自行开发驱动程序。HomeARPLICATiaNSBrewerAPPLICATIDMFRAMEWORKCaflteflfl!Provi

4、derNgS刑EiFaciaMiniverTelrp-HonyIMwjprR.ffO4inC-Minijfc*L«a.EaOtfiMim£erNoEJfficatJQAWaiterLIBRARIE5AimdropoRuptimeSurfaceManagerHe-dtaSQLiegCoreUbrarlraSGIDisplayDn*crWfebKitLINUXKERNELCantriDriwrFli#HtmoryDriverBinderIIPCJDnwrWiFi口Drwri图二GoogleAndroid软件迭层图图片来源:Google函式库层接着是绿色的函式库层,此处收纳了诸多

5、偏重于硬件的基础软件函式,如网络传输安全性的SSL加解密、FreeType字型、SQLite数据库、WebKit网页排版引擎等,这些绿色软件组件是以C或C+语言撰写成,并依循libc标准开发、放置。至此有个疑问:红色的Linux核心层,可依据不同的硬件架构与配置而进行修改、扩充,而绿色的函式库层能否如此呢?对此答案是肯定的,然扩充与修改也必须合乎libc标准。此外,一旦对原有函式库进行修改或扩充,则平台的移携性(Portability)将降低,此必须事先了解。图三第一个支援GoogleAndroid平台的手机:宏达电子的G1»图片来源:英文维基百科作者MichaelOrylAndro

6、id运行时间层与函式库属同层的为Android运行时间,然却用不同的黄、蓝色标示,黄色为Dalvik虚拟机(简称DVM),对应至Java架构则与JavaVirtualMachine(简称JVM)角色相同,用来执行中介程序代码(ManagedCode)。DVM与操作系统有相依性,换不同的操作系统必须再行调修,才能达到优化表现。不过,DVM的诸多特性都需要倚赖Linux才能发挥(如多行程执行),因此DVM多只能在不同的Linux上执行,而不易在其他类型的操作系统上使用,此点与Java不同。在黄色区块内另有一个蓝色的核心函式库,该函式库是以Android的类Java语言所写成(撰写语法上约有85%9

7、0%相似度),事实上更上的两层蓝色层,其组件亦同样以Android的类Java语言所写成,只是核心函式库属更例行、常用的共同函式。要注意的是,Android运行时间无法直接与红色层沟通联系,而是凡事都要透过其左侧的绿色函式库层代劳才行。publicZapporpublicStringtap(Stringq.Objectpublicclass&lortlapIwnUpublicStringep恪tri叫b,Object。)(.*t)publicclaiBZapUser(publicvoidusoUp(Sapper*)3MpiH图四Android实行与Java类似的语法图片来源:Googl

8、e应用程序框架层、应用层以蓝色的Android类Java语言撰写成的软件组件即具有移携性,即无论Android的硬件设计如何改变,蓝色软件部分均不需要修改,即可在不同的硬件上执行。相对的,红色、绿色、黄色层则具有硬件相依性,不同的硬件需要不同的编译、调修,甚至可运用硬件电路方式使此三者加速执行。虽然蓝色层具硬件平台移携性、硬件中立性,然在Android平台上仍将蓝色层区分为二,经常使用且需要统整一致性者,即归属至应用程序框架层,另一则是应用层,应用层的各应用程序即是应用创意的发挥场所,各应用程序可有极大的差异,而非追取一致。另外,应用程序可呼用应用程序框架中的软件组件为其服务,同时也可呼用An

9、droid运行时间内的核心函式库为其服务。而框架层内,活动管理员(ActiveManager)即类似今日Windows操作系统内的事件管理器,负责应用程序上的操作事件(如一个按钮被按、一个手写输入被辨识完成等);窗口管理员(WindowManager)则负责各应用程序的窗口画面等。DexFileAnatomy"HclUWorld"printIn-1/slortJVQidfD(lDt)Stringfn)P七re=.10一)ColLsotioa.Ixb()headerstringjdstyp_idsprotoJds归4一idsmethodjdsclass_dcfsdataLQt

10、stUOM.04414String,4ff«otinteger,mkxvmlve图五Android的Dex(.dex)文件内部结构图片来源:Google进阶探析DVM了解整体迭层后,重新对整体进行检视,可发现整个Android平台的重点即在DVM,因为绿色函式库中的组件,多已是业界标准(如SSL)或约定成俗的标准(如WebKit、SQLite),而红色核心也早用于诸多的Linux嵌入式应用上,蓝色应用层则由广大软件商、程序员去发挥,蓝色的框架及核心函式库则会持续透过组织程序的制订而增长、强化。事实上Google是在2005年7月购并PaloAlto的新创公司,取彳DDVM后,才能构筑

11、、提出Android;DVM的运作方式与JVM相同,DVM的程序语言类似于Java语法,原已有撰写Java程序经验者可较快适应,不过Java程序写完后,于执行会转译成ByteCode的中介码。同样的,Android的类Java语法也会译成其独有的中介码,此中介与JavaByteCode全然不同除语法相近、译出的中介码截然不同外,Android也不能使用Java的类别档,而是自己独特的.dex档,所以若有程序员想直接把以前撰写过的Java程序,直接重新编译成Android可执行的程序,是不可能的,依然只能保有程序的逻辑、算法,然后重新以Android、DVM作法重新撰写才行。不过Android仍

12、提供一个名为dx的工具程序,可将Java类别档转译成.dex槽。既然DVM与JVM如此相像,除开放性、版权问题外,是否仍以Java较合适?其实不然,DVM作法的执行比Java更快速、更安全,DVM是以缓存器为基础执行,即程序执行时的相关变量是放在缓存器中,相对的,JVM是堆栈为基础的执行,变量存取需要透过Push、Pop等手续,速度不如DVM。而安全性上,DVM让每个应用程序均以一个行程来执行,如此某一应用程序因撰写不良或外在因素而当机,则其当机问题不扩散、殃及DVM,DVM依然可正常执行其他应用程序。相对的,Java程序若发生问题,并导致JVM停摆,则其他的Java应用程序也将一同停摆。De

13、xFileAnatomyjcius'il«etherdata.xtassfile8力&场E由廿日ottiercataclassfil«olherd-a:aothertfala与甘广配u£poclheie(ogeneou$BrUMHPGQIheteTogenacusCDnsianioogistmg_iflsEnsmntgggVP8_ldSonsSantpoolconslantpciolmeihMLfgCO外SfeEpJ0l图六Dex文件与Java类别文件的结构对应图片来源:Google结语DVM的相关技术特性与应用程序开发者密切相关,然对于想开发支持

14、Android的硬件芯片商、系统商而言,则较在意红色、绿色区块。红色、绿色区块除了可运用硬件电路获取加速(以硬件加速执行,通常也意味着能比纯软件方式执行精省功耗)外,另一关注重点是能否换用不同的处理器架构。对此其实具技术难度,Android目前是以ARMv5指令集架构的处理器(或称执行单元、核心)为最低要求,虽然Android未硬性规定不可改用其他指令集架构的处理器,例如可用更前期的ARMv4指令集架构处理器,或可用于x86、MIPS等不同于ARM架构的处理器。此外,红、绿层是以C/C+语言写成,重新编译(Recompile)后即可在另一种架构的处理器上执行。然重点在于:重新编译只担保另一处理器能功效无误地执行原程序,但却不易做到效能优化,使程序流畅执行。这也是今日许多技术狂热者,虽将Android重新编译成可在EeePC(x86架构)执行、可在我本墨客(OpenMoko)手机(ARMv4)执行,但此作为仅能视为特技表演,难以普及,原因即在于效能优化不足,程序无法流畅执行、反应。至此可以得出一些建议,一是不要天真认为Android

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论