Android平台软件架构设计_第1页
Android平台软件架构设计_第2页
Android平台软件架构设计_第3页
Android平台软件架构设计_第4页
Android平台软件架构设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

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

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

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

4、DM FRAMEWORKAPPLICATIDM FRAMEWORK Ng S S刑EiEi Home CaflteflfCaflteflfl!l! ProviderProvider FaciaMiniver TelrpTelrp- -HonyHony IMwjprIMwjpr R.f f R.f f O4inCO4inC- - Minijfc*Minijfc* La.EaOtfi MimerMimer NoEJfficatJNoEJfficatJQAQA WaiterWaiter L IBRL IBRARIE5ARIE5 AIM DROPO R RUPTIME Surface Manager

5、HeHe- -dtadta FrimcwflirtFrimcwflirtt t SQL i EG Core Ubrarlra WfebKit SGI LINUX KERNELLINUX KERNEL Display Display Dn*crDn*cr Cantri Driwr Fli# HtmoryFli# Htmory DriverDriver Binder IIPCJBinder IIPCJ D nwrD nwr WiFi WiFi 口 DrwriDrwri ?图二 Google Android 软件迭层图? 图片来源:Google 函式库层 接着是绿色的函式库层,此处收纳了诸多偏重于硬

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

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

8、ava语言所写成撰写语法 上约有85 %90 %相似度,事实上更上的两层蓝色层,其组件亦同样以 Android的类Java语言 所写成,只是核心函式库属更例行、常用的共同函式。 要注意的是,Android 运行时间无法直接与红色层沟通联系, 而是凡事都要透过其左侧的绿色函式库 层代劳才行。 publicpublic Zappor Zappor public String tap(String public String tap(String Q. ObjectObject public class &lort lapIwnU public String eppublic class &

9、amp;lort lapIwnU public String ep恪tritri叫 B, ObjectObject。)( . * t ) ) ) public claiB ZapUser (public claiB ZapUser ( public void uso Up (Sapper *) public void uso Up (Sapper *) 3Mpi 3Mpi H H ?图四 Android 实行与Java类似的语法? 图片来源:Google 应用程序框架层、应用层 以蓝色的Android类Java语言撰写成的软件组件即具有移携性,即无论Android的硬件设计如何 改变,蓝色软件

10、局部均不需要修改,即可在不同的硬件上执行。相对的,红色、绿色、黄色层那么具有 硬件相依性,不同的硬件需要 不同的编译、调修,甚至可运用硬件电路方式使此三者加速执行。 虽然蓝色层具硬件平台移携性、硬件中立性,然在 Android平台上仍将蓝色层区分为二,经常使用 且需要统整一致性者,即归属至应用程序框架层,另一那么是应用层,应用层的各应用程序即是应用创 意的发挥场所,各应用程序可有极大的差异,而非追取一致。 另外,应用程序可呼用应用程序框架中的软件组件为其效劳,同时也可呼用 Android运行时间内的 核心函式库为其效劳。 而框架层内,活动管理员(Active Manager )即类似今日 Wi

11、ndows操作系统内的事件管理器,负 责应用程序上的操 作事件(如一个按钮被按、一个手写输入被辨识完成等);窗口管理员( Window Manager )那么负责各应用程序的窗口画面等。 ?图五 Android 的Dex .dex 文件内部结构? 图片来源:Google 进阶探析DVM 了解整体迭层后,重新对整体进行检视,可发现整个 Android平台的重点即在DVM ,因为绿色函 式库中的组件,多已是业界标准如 SSL或约定成俗的标准如 WebKit、SQLite ,而红色核 心也早用于诸多的 Linux嵌入式应用上,蓝色应用层那么由广阔软件商、程序员去发挥,蓝色的框架 及核心函式库那么会持

12、续透过组织程序的制订而增长、强化。 事实上Google是在2005年7月购并Palo Alto的新创公司,取彳D DVM后,才能构筑、提出Android ; Dex File Anatomy HclU WorldHclU World print Inprint In- -1 1 VQid fD(lDt)VQid fD(lDt) String fn)String fn) header stringjds typ_ids proto Jds 归4一 ids methodjds class_dcfs data LQt stLQt st /slort /slort J P P七re=.1re=.1口?

13、一) ColLsotioa.ColLsotioa.IXB() UOM. 04414UOM. 04414 String,4ffot String,4ffot integerinteger,MKXVMLVE DVM的运作方式与JVM相同,DVM的程序语言类似于Java语法,原已有撰写Java程序经验者 可较快适应,不过Java程序写完后,于执行会转译成 Byte Code 的中介码。同样的,Android的 类Java语法也会译成其独有的中介码,此中介与 Java Byte Code 全然不同 除语法相近、译出的中介码截然不同外,Android也不能使用Java的 类别档,而是自己独特的.dex

14、档,所以假设有程序员想直接把以前撰写过的 Java程序,直接重新编译成Android可执行的程序,是 不可能的,依然只能 保有程序的逻辑、算法,然后重新以 Android、DVM作法重新撰写才行。不过 Android仍提供一个名为dx的工具程序,可将Java类别档转译 成.dex槽。 既然DVM与JVM如此相像,除开放性、版权问题外,是否仍以 Java较适宜? 其实不然,DVM作法的执行比Java更快速、更平安,DVM是以缓存器为根底执行,即程序执行时 的相关变量是放在缓存器中,相对的, JVM是堆栈为根底的执行,变量存取需要透过 Push、Pop等 手续,速度不如DVM。 而平安性上,DVM

15、让每个应用程序均以一个行程来执行,如此某一应用程序因撰写不良或外在因素 而当机,那么其当机问题不扩散、殃及 DVM , DVM依然可正常执行其他应用程序。相对的, Java程 序假设发生问题,并导致JVM停摆,那么其他的Java应用程序也将一同停摆。 Dex File Anatomy jcius iljcius il ether data.ether data. xtass filextass file 8 力总随 E 由心日 ottiercataottiercata class fil olher : other tfalaother tfala 与甘广配u u poclpocl heie(

16、ogeneou$ BrUMH PGQIBrUMH PGQI heteTogenacus heteTogenacus CDnsiani CDnsiani OOGI stmg_ifls stmg_ifls Ensmnt ggg Ensmnt ggg VP8_ldS VP8_ldS onsSant poolonsSant pool con slant pciol meihMLfg CO外SfeE pJ0l ?图六 Dex文件与Java类别文件的结构对应? 图片来源:Google 结语 DVM的相关技术特性与应用程序开发者密切相关,然对于想开发支持 Android的硬件芯片商、系统 商而言,那么较在意

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

温馨提示

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

评论

0/150

提交评论