android 毕业论文_第1页
android 毕业论文_第2页
android 毕业论文_第3页
android 毕业论文_第4页
android 毕业论文_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

本 科 生毕业论文(设计) 题 目 Google Android 手机嵌入式系统 的研究与开发 学 院 计算机学院 专 业 计算机科学与技术 学生姓名 李 浩 学 号 0643041362 年级 2006 指导教师 周群彪 教务处制表 二一 年 五 月 二十 七 日本科毕业论文 Google Android 手机嵌入式系统的研究与开发 Google Android 手机嵌入式系统的研究及开发 计算机科学与技术 学生 李浩 指导教师 周群彪 摘要 随着手机的普及以及手机应用的深入人心,近几年“智能手机”成为了人们关注的话题。在现今这个智能手机系统群雄纷争的时候, 2008 年 Google 推出了一款名为 Android 的开源智能手机操作系统。 Android 凭借其开放性和良好的人机界面,受到广大手机生产商的重视,随着 3G 时代的到来,Android 有可能会改变现在智能手机市场的格局。 Android 是由 Linux 操作系统、中间件以及核心应用程序组成的专门为移动终端设备开发的层次软件集。在对 Android 学习中,主要做了以下的研究 :首先,Android 系统是一个层次的软件集,所以先从层次方面对 Android 进行系统研究,主要对其运行时环境层以及 Android 应用框架层的研究;其次,通过对 Android 平台上应用的开发,更进一步了解 Android这个系统,在开发中,尤其注重 Android 的 Intent 机制的使用。 主题词 Android; Android 内核层 ; Android 构架 ; Android 应用 ; Android SDK; Android 开发 本科毕业论文 Google Android 手机嵌入式系统的研究与开发 The research and development of Google Android embedded system Computer Science Student: LI HAO Adviser: ZHOU QUN-biao Abstract With the popularity of mobile phones, “smart phone” become the subject of attention. Now days, there are lots of companies who compete in the filed “Smart Phone System”. In 2008, Google released their opening source smart phone operating system which called Android. Because of opening source and its nice UI. More and more mobile phone manufacturers use Android in their phones. With the becoming of 3G,Android may change the field of smart phones. Android compose of Linux kernel, middleware and core applications. To study Android, there something to do: firstly, Android system is a hierarchical set system, so we should study its hiberarchy, especially in Android Runtime layer and Android application framework layer; secondly through Android application development, we can further understand the Android the system, in development, we will use the Android Intent mechanism. Key Words Android; Android Kernel; Android Truss; Android Application; Android SDK;Android Development 本科毕业论文 Google Android 手机嵌入式系统的研究与开发 目录 1 绪论 . 1 1.1 智能手机平台 . 1 1.2 Android 平台介绍 . 2 2 Android 的系统研究 . 4 2.1 Android 构架 . 4 2.1.1 Android 的构架综述 . 4 2.1.2 内核层 . 5 2.1.3 Android Runtime 和函数库层 . 5 2.1.4 Dalvik 虚拟机 . 7 2.1.5 Android 的进程管理机制 . 10 2.1.6 应用程序框架层 . 11 2.1.7 应用程序层 . 11 2.2 Android 的应用 . 12 2.2.1 Android 应用的组成 . 12 2.2.2 Activity . 12 2.2.3 Intent Receiver . 12 2.2.4 Service . 12 2.2.5 Content Provider . 13 2.2.6 AndroidManifest.xml . 13 2.3 Android 文件系统 . 15 2.3.1 系统文件夹分析 . 15 2.3.2 系统构架与系统文件的对应 . 16 3 Android 的开发 . 17 3.1 Android 开发工具 . 17 3.2 Android 开发平台的搭建 . 17 3.3 简单短信功能软件( miniSMS)的开发 . 17 3.3.1 miniSMS 工程建立及分析 . 18 3.3.2 AndroidManifest.xml 设计 . 19 3.3.3 UI 设计 . 20 3.3.4 短信发送功能的实现 . 22 3.3.5 短信息的接收功能 . 24 3.3.6 虚拟机中运行 . 28 总结 . 29 参考文献 . 30 声 明 . 31 致 谢 . 32 附录 . 33 本科毕业论文 Google Android 手机嵌入式系统的研究与开发 1 1 绪论 1.1 智能手机平台 说起手机,没有一个人会感到陌生。近 几 年来一个名词一直影响着 许许多多的手机用户 ,它就 是智能手机。智能手机凭借其强大的功能吸引 住了 许多用户的眼球, 因为有了广大的用户基础,智能手机也风靡一时 。说起智能手机,除了他有一颗强大的CPU 和其他一些较高配置的硬件外,其真正的智能还要归功于其不可缺少的智能操作系统。 当今 ,智能手机所搭载的 智能手机 操作系统平台大致如下: ( 1) Symbian OS。搭载在具有 广泛群众基础的 Nokia 手机上 , 并 以此 占据 了智能手机的 半壁江山 ,其主要的智能平台为 大部分诺基亚手机搭载的的 S60 系列和 索尼爱立信手机搭载的 UIQ 系列 ; ( 2) Windows Mobile。 Microsoft 在桌面系统获得成功之后, 觊觎手机的巨大市场开发的智能手机系统,因其界面和桌面 windows 系统较为接近和其强大的微软后台,成为 国内 市场 占有率 紧跟 Symbian 之后成为国人比较喜欢的 操作系统 ; ( 3) Mac OS X( iPhone OS)。苹果 一直都是个性和时尚的代名词 , 受广大中高层次手机用户的喜欢。 iPhone,以其酷炫的 UI 和独特的操作方式,给传统手机带来一场革命,同时也 给 Symbian 和 Windows Mobile 带来巨大冲击的 ; ( 4) Blackberry。 以商务应用为主,在国外尤其是欧美等地,受到商务人士欢迎的 Black Barry 占据了近一半的无线商务电子邮件业务市场 , 就连美国总统奥巴马也使用该品牌的手机。 但是在国内还是受到一些 基础设施的制约,所以在国内 市场 不是太好 ; ( 5) Palm OS。 专门为 PDA 开发,一度占据了 90%的 PDA 市场的份额,虽然其并不专门针对于手机设计,但是以其优秀性和对移动设备的支持同样使其能够成为一个优秀的手机操作系统 。 ( 6) Linux。 对于 Linux 系统,想必很多人都不会太陌生,桌面系统中 以其开源的特性,赢得了不少用户的喜爱。智能手机平台的 Linux 同样 具有源代码开放、软件授权费用低、应用开发人才资源丰富等优点,便于开发个人和行业应用。 但是 因为其平台上的应用少而不被国人所接受 。 ( 7) Google Android。 自 2007 年推出, 2008 年第一 部 搭载 Android 系统的 G1上市至今不到短短三年时间,他已被许多人接受并且认可及欢迎。 虽然如今的智能手机系统市场仍被 Symbian、 Windows Mobile 的占领,但是 iPhone的革命以后,以及后起之秀 Android 的推出,在将来,智能手机市场将发生翻天覆地的变化。 本科毕业论文 Google Android 手机嵌入式系统的研究与开发 2 1.2 Android 平台介绍 Android 从诞生到现在也不过 3 年的时间,但是也就是在这短短的 3 年内 Android创造了一个迅速被人们知晓并追捧的奇迹。 2007 年 11 月 5 日, Google 与其他 33 家手机制造商 (包含摩托罗拉、宏达电、三星、 LG)、手机晶片供应商、软硬体供应商、电信业者所联合组成的开放手持装置联盟 (Open Handset Alliance),发布了名为Android 的开放手机软硬体平台。 该 联盟的成员宣布日后 都会在 Android 平台上开发他们的 新的业务 。 不久之后的 2008 年 9 月 24 日, T-Mobile 公司 首度公布第一台Android 手机 (G1)的细节,同日 Google 也 放 出了 Android SDK 1.0 rc1。这样 Android进入了人们的视线。 Android 以其特有的开放性优势越来越受到人们和 智能 手机厂商的关注。 对于第三放软件开发商来说, Android 是一个真正意义上的开放性移动设备综合平台, Android 系统是 免费向开发人员提供 的 , 这样就避免了开发中专利 权 的 障碍 。因此,就能够为第三方软件开发商省下大笔资金 。 对于设备制造商来说, Android 是一个免费的平台。 当设备制造商每制造一台手机时, 那些支付给手机系统制造商的费用也省去了,这样也降低了每台手机的生产费用,同时就降低了手机的价格,这样在市场上也提高了竞争力。 对硬体开发厂商来说, Android 也是个开放的平台。 使用 Android 平台的厂商可以更具自己的需求以及能力为 Android 开发具有该厂商特色的功能,但是这样的增加完全不用考虑版权的问题。 同时 Android 平台支持 各种先进的网络 、绘图、 3D 处理能力,可以用来提供更好的使用者体验。 Google Android 系统作为一个完全开源的操作系统,是由操作系统 (Linux)、中间件以及核心应用程序组成的软件栈 (software stack)。通过 android SDK 提供的 API 以及相应的开发工具 , 程序员可以 很方便的 开发 android 平台上的应用程序。其整个系统由应用程序( Application),应用程序框架( Application Framework),应用程序库( Libraries), Android 运行库( Android Runtime), Linux 内核( Linux Kernel)五个部分组成。 Android 操作系统内置了一部分应用程序, 包括电子邮件客户端、 SMS 程序、日历、地图、浏览器、通讯录以及其他的程序, 值得一提的是这些所有的 程序都是用 java 编写的。 因为 应用程序框架使得组件更易于重用 ,所以 开发者的应用程序可以 很容 易的调用 API 函数实现我们想要的功能 。在遵守应用程序框架的安全机制约束的前提下, 开发者开发的 一个应用程序可以使用其他程序所开发的功能 。 虽然 Android 的应用程序是用 Java 语言开发的,但是 Android 给应用程序开发者 提供了一系列的 C/C+ 程序库 , 通过 Android 的一些特殊的设计 , 我们 开发者可以使用这些库 ,这在后面的叙述中将看到。 本科毕业论文 Google Android 手机嵌入式系统的研究与开发 3 现今, Android 操作系统已成为许多手机制造商的宠儿,其中包括 HTC、索尼爱立信、 Samsung、摩托罗拉以及国内的联想、华为、海尔、华禹等。其中值得一提的是摩托罗拉 公司, 就在 2009 年 11 月凭借 其 一款搭载 Android 平台的 Droid 手机,两个月内就突破百万台,击败了苹果的 iPhone 3GS,被时代杂志评选为“年度最佳科技产品”。因此 告别了两年多的低迷态势,走出了泥潭。 本科毕业论文 Google Android 手机嵌入式系统的研究与开发 4 2 Android 的系统研究 2.1 Android 构架 2.1.1 Android 的构架 综述 Android 是一个包括操作系统,中间件以及一些重要应用程序 的专门针对移动设备的层次结构的软件集 1。作为一个层次结构的软件集 , 一定有一个层次的系统构架 ,下图为 Android 的 构架图 : 图 2-1 Android 系统构架 从图 2-1 中明显的可以看出 该系统从下到上 包括 Linux 内核层 、 Libraries 和运行时环境层 、 应用程序框架层 、 应用程序层 四层结构 。在 Android 的最下层的操作系统基于 Linux2.6 内核,往上的中间件包括 Libraries 和运行时环境层和应用程序框架层两个层次,最上层则是应用程序层。 在 Android 构架中, 可以很明显的看到, 底层的 Linux 内核则采用 的是 C 语言,libraries 采用 C 或者 C+,但是 应用程序层、应用程序框架层和 运行时环境 中的Android 核心库采用 Java 语言编写, 也就是说 Android 虽然底层用的是 C 或者 C+但是应用程序的开发则用的是 Java。 Google 采用这样的模式 可能 是因为相对于 C 或者 C+, Java 的开发周期更短 的缘故 ,这样的话就能在短时间内为 Android 提供大量本科毕业论文 Google Android 手机嵌入式系统的研究与开发 5 的应用软件 。 我们知道,作为一个智能手机平台,只有拥有了大量的源源不断的应用程序作为支持, 才能受人们的欢迎,从而才能占领市场。之前 Nokia 的 s60 第三版就是一个很好的例子 ,因此 Nokia S60v3 的系统才被世人所熟知,并且曾经在智能手机行业占有很大 的市场 。 而另一个例子就是 Linux 系统,在所有操作系统中,稳定性和性能上能够和 Linux 抗衡的系统不多吧,但是在智能手机市场上为什么 Linux 却可以说是一败涂地,其原因也和其第三方应用少 是 脱不了关系的。 2.1.2 内核层 Google Android 作为一个开源的操作系统其内核采用了同样开源的被业界认为是 相当 稳定的 Linux 作为其内核,其中 Linux 内核包 括 以下 功能 模块 :安全(Security)、存储器管理 (Memory Management)、 进程 管理 (Process Management)、网络堆栈 (Network Stack)、驱动程序模型 (Driver Model)等,另外也在 给其上层的软件和下层 硬件间建立起一个抽象层 (Abstraction Layer)。 同时 Android 在 Linux 2.6 的内核上进行了一些 增加和删改,使 Linux 更加适应 ARM 平台。 增加了一个基于 ARM 构架的 GoldFish 平台作为虚拟机的虚拟 CPU。 增加了 YAFFS2 FLASH 系统文件,因此增加了对 NANDFLASH 支持。 增加了 Android 相关的驱动。 例如 Android 的 IPC(进程间通信机制) binder,使用这个能使运行的进程为其他 进程提供服务; Android 的日志系统( Logger)和内存控制台( Ram_console);同时 Google 还重写了电源管理( Power) 增加了新的共享方式 Ashmem(匿名共享内存),多个应用程序可以这种方式共享内存获取信息 ,为进程间提供大量共享内存,同时为内核提供回收和管理这个内存的机制。 2.1.3 Android Runtime 和 函数 库层 2.1.3.1 函数 库 Android 包含一些 C/C+库, Android 系统中的 各种 不同组件都能够使用这些库函数。这些库函 数通过 Android 应用程序框架为开发者提供服务。 以下列举了一些库函数 2: 系统 C 库 -一个专门为 Embedded Linux 设备定制的从 BSD( Berkeley Software Distribution 伯克利软件套件 )继承来的标准 C 系统函数库。 媒体库 - 基于 PacketVideo 公司的 OpenCORE 开发设计的 。 该库支持 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 多种常用的音频、视频格式 的 回放和录制,同时支持静态图像文件。 Surface Manager - 对显示子系统的管理,并且为多个应用程序提 供了 2D 和3D 图层的无缝融合 ,提供如同类似 iPhone 的界面管理 功能 。 本科毕业论文 Google Android 手机嵌入式系统的研究与开发 6 LibWebCore - 一个支持 Android 浏览器和一个可嵌入的 web 视图 的最新的 web浏览器引擎 。 3D libraries - 基于 OpenGL ES 1.0 APIs 实现 ;该库可以使用硬件 3D 加速 (如果可用 )或者使用高度优化的 3D 软加速。 SQLite - 一个功能强劲的轻型关系型数据库引擎 , Android 中所有应用程序都可以调用它 。 FreeType -位图 (bitmap)和矢量 (vector)字体显示。 SGL - 底层的 2D 图形引擎 。 2.1.3.2 Android Runtime 前面 说到 Android 采用 Java 作为应用程序的开发语言,但是虽然使用的是 Java语言,但是 Google 却没使用 传统的 Java Runtime 来执行应用程序 而是采用 Android自己特有的 Android Runtime。 从 Android 的 系统 构架图中可以清楚的看到, Android Runtime 由 Android 函数库 ( Android Libraries) 和 Dalvik 虚拟机组成 3。 Android 函数库 中里包含了大部分 Java 程序语言所需要调用的 函数库,如 data structure, network, utilities, file system 等 ,其中很多代码 是 源于 2005 年的Apache Harmony 项目。这样 做 的 话 能够使 Android 的虚拟机的类库 与 Java SE 的类库有非常大的相似性,进而提高了 Java SE 类库的兼容性 , 最大限度的降低了一个程序员从 Java 平台开发到 Andorid 平台开发的难度,这样就 降低了对 Android 开发的准备时间 以及前期培训的费用 ,从而降 低了 Android 应用程序开发的周期 以及开发费用 , 这样的话 短时间内就能让 Google Android 系统能够拥有大量的可执行的应用程序 。 另外,使用 Apache Harmony 类库还能完全摆脱 Sun的束缚而走上完全开源的 Java之路,这样也奉行了 Google 对 Android 完全开源的原则 。 我们知道, 对一个应用程序而言 , 都 采用 一个属于该应用程序的进程作为执行的载体 ,同样,对于 Android 也是,一个应用程序也是有一个属于它的进程。 之前说过Android 采用 Java 作为开发语言,在进程执行时应该会有一个 Java 虚拟机来为进程提供服务。在 Android 构架图中可以看到, 该系统采用的是一个叫做 Dalvik 的虚拟机。 在前面的研究中我们了解到 Dalvik 虚拟机是一个 Java 虚拟机,但是又和 Java虚拟机有所不同。 Dalvik 虚拟机和传统的 Java 虚拟机所不同 之处 的是传统的 Java虚拟机是 一个虚拟机来为不同应用程序提供服务,而 Google 自己开发的 Dalvik 虚拟机则是每一个 Android 应用程序都拥有一个其自身的 Dalvik 虚拟机,换句话说就是专属于每一个应用程序对应着一个 Dalvik虚拟机 而这个 Dalvik虚拟 机 相当于一个执行个体。有关 Dalvik 虚拟机的内容将在下一个部分详细说明。 Android函数库 和 Dalvik虚拟机组成了 Android的运行时环境。 从图中可以看到,Android Runtime 和 Libraries 在同一层,建立在 Linux Kernel 层 之 上,与 Linux Kernel 没有交集 ,而是直接嵌套到 libraries 中。 我们之前说过,我们开发者可以本科毕业论文 Google Android 手机嵌入式系统的研究与开发 7 调用 C 和 C+的一些类库。其实就是 这样 Android Runtime 与 Libraries 在同一层的设计并同时让 Android Runtime 中的 Android Libraries 引用 libraries 中的函数,而通过 Dalvik 虚拟机编译以后再调用这些函数 做到上面所述的功能 。 也就是说其实 Android Libraries 中的函数只是 libraries 中的一些引用, 当一个上层的应用程序调用 Dalvik 虚拟机中的核心库函数时, 调用的其实只是一个函数名,并不是函数的具体实现,然后 Dalvik 虚拟机对该函数进行一些处理以后再通过Dalvik 虚拟机调用 libraries 中的相应函数,使之运行。换句话说就是, Android Libraries 中的只是 一个函数名,而真正代码的实现是 libraries 中的 C 或者 C+代码。这样的好处就在于那些使用 Java 语言很难实现 但是在 C 或者 C+却能很容易 实现 的功能也能通过 Java 很容易等的实现。 2.1.4 Dalvik 虚拟机 Dalvik 虚拟机是 Android Runtime 的一个组成部分,之所以要把他拿出来单独进行研究是因为, Dalvik 虚拟机作为一个 Java 虚拟机,但它和普通的 Java 虚拟机 有着一些不同。 Google 的工程师 结合传统的 Java 虚拟机 ,根据 Android 使用的 平台 一般为移动终端设备这样 一个特点重新设计的 虚拟机,这个虚拟机在 移动终端设备上 运行效率上明显比传统的 Java 虚拟机要高 许多。 Dalvik 虚拟机对内存的高效使用和在低速的 CPU 上表现出的高性能,确实让人们刮目相看。 Android 的上层应用程序虽然是用 Java 开发的,但是 Dalvik 虚拟机却和传统的Java 虚拟机有着很大的区别,两者是不兼容的。 首先 , 众所周知 在 Java 中,所有的程序代码会被编译器编译成字节码( .class)应用程序进程 调用 Runtime 中Android 函数库函数 Android Libraries Android Runtime Dalvik 虚拟机 交给 Dalvik 虚拟机进行处理 Libraries Dalvik 虚拟机调用 Libraries 中相应函数 图 2-2 应用程序调用 Android Libraries 中函数的过程 本科毕业论文 Google Android 手机嵌入式系统的研究与开发 8 文件,然后 再 打包成 JAR 文件, 在执行时 Java 虚拟机 就 从 JAR 文件中提取出相应的字节码文件 来 执行。在 Android 中不再使用 字节码文件而是一种 Android 所 特有的DEX( Dalvik EXecutable) 文件 。 DEX 文件的生成还是 需 要经过生成字节码 文件的 这个过程的。 使用 Java 语言编写好的 Android 程序代码 , 同样是 先 用 Java 编译器 编译成为字节码文件 , 但是在这之后 还需通过 Google 提供的一个 DX 工具将 编译好的 字节码转换成为 DEX 文件,然后 Dalvik 虚拟机通过 DEX 文件获得执行的代码。 Google 弃用字节码文件而采用特有的 DEX 文件格式,这表明在 Android 实际运行中 DEX 文件格式相对于字节码文件格式 应该有一些 独特的优势。 在 Java 中 当一个应用程序定义了多个类后,通过编译则会产生相应数目的 class 字节码文件,在这些字节码文件中则 必然会有 冗余信息, 例如一些相同的类库会 冗余等 。 而 DEX 文件格式则是把这些 class 字节码文件整合到一个 DEX 文件 中,使得字节码中的冗余减少了 ,同时 使整体 文件 的 尺寸也减少了。 这样一来 , 对于同一个应用程序来说 , 相对于 Java的字节码文件 Android 的 DEX 文件格式 在 I/O 操作中所需要的 时间也减少了, 同时也减少了查找类所需要 的时间 。另外 DEX 使用等长的指令, 这样的话能够使得 DEX 文件尽量的 简洁, 从而 提高了解析速度。 通过上面的研究 可以看出 DEX 文件格式是 一种 专为 Dalvik 虚拟机设计的压缩格式, 该格式的高性能很 适合内存和处理器速度有限的平台,从中可以看出 Android 是定位于嵌入式平台的一个操作系统。在这也体现出了Google 给 Android 所定义的发展以及战略方向 ,如今移动平台的网络应用已经成为当前 移动终端设备的发展方向,作为网络搜索的龙头大哥, Android 就是其打入该移动平台网络应用的利器。 Android 应用开发和 Dalvik 虚拟机同样都使用 Java 开发 语言 ,在应用程序开发好以后我们就需要将这个应用发布到 Android 移动终端设备 。 我们把 一个 开发好的 应用 的 Java 代码经过编译以后生成 .class 的字节码文件,通过 Android 的 DX 工具转换成 .DEX 格式的文件,最后使用 Android 的 appt 打包工具把 DEX 文件,源文件以及AndroidManifest.xml 文件组合成一个 APK 应用程序包,然后 就能 发布到 移动终端设备 上了 。在 APK 应用程序程序包发布到 移动终端设备 后,应用程序运行前会对其中的DEX 文件进行优化,优化后的文 件格式称之为 DEY, DEY 文件被保存到缓存区域,虚拟机会 在缓存中 执行这些文件。 其次 ,传统的 Java 虚拟机是采用的是基于栈的设计,而 Dalvik 虚拟机则是基于寄存器设计的。 基于栈设计的虚拟机能够使指令变得简单,不需要考虑程序中的源寄存器和目的寄存器,只需要开辟栈空间而不需要为临时变量再开辟一个存储空间。另外基于栈设计的虚拟机移植性比基于寄存器设计的虚拟机要高很多, 从组成原理和嵌入式操作系统课程中我们知道, 一般 的 32 位 x86 处理器的通用寄存器和 32 位的 ARM 的通用寄存器数目是不同的 。 虚拟机 的设计中 ,为了 执行的效率,有时 会把这些寄存器一一映射本科毕业论文 Google Android 手机嵌入式系统的研究与开发 9 到 物理寄存器上,但是由于平台的不同,导致通用寄存器数量不同造成如果基于寄存器设计的虚拟机很难做到一一映射,执行效率就会大打折扣。而用基于栈的设计的话,就不存在这种问题,就很容易的分配寄存器。另外,基于栈设计的虚拟机采用的是零地址指令, 这样的话指令形式比较紧凑。 虽然基于栈 结构 的虚拟机有上述的一些优点,但是为什么 Google 不采用基于栈的设计而采用基于寄存器结构设计 Dalvik 虚拟机呢。 我个人觉得 这是和 Android 所搭载的平台以及 Google 的战略有关的。首先, Android 所搭载的主要平台为移动终端设备,如今的移动终端设备虽然性能比过去好多了,但是还是无法摆脱 CPU 处理能力低于桌面 PC,存储资源有限的限制,在这样一个平台上使用基于栈的设计,在指令执行时必定会多出一个进栈 ( PUSH) 和出栈 ( POP) 的操作,那一定会影响指令执行的效率,这也是为什么 我们在一些手机平台上运行 Java 程序时感到很慢的原因了 。其次 从 Google 对 Dalvik 虚拟机设计中采用的 16 个通用寄存器中可以看出 Android的发展方向是基于 ARM 的硬件平台,这也和 Google 的战略方向相一致。虽然移植性降低 了,但是使用二地址和三地址的指令,使得代码执行效率大大提高。 另外, Dalvik虚拟机 虽然 没有采用现在 流行 虚拟机技术例如 JIT( just in time,及时编译 )技术,但是 Dalvik 虚拟机仍然是一个具有很高性能的虚拟机 ,在这不得不说一下, Dalvik虚拟机是一个设计相当不错的虚拟机。 从 Dalvik 虚拟机的设计上我们可以看到Google 打算用 Android 系统来冲击手机 移动终端设备 ,想把其提供的服务扩展到移动设备上的战略。 另外, Dalvik 虚拟机的设计方面也有其独特的地方。它就是本着能够并发执行多个虚拟 机的设计思路来编写的。每一个 Dalvik 虚拟机实例对应于一个应用程序,同时这个虚拟机实例还 都是一个进程空间。换句话说就是一个应用对应一个 Dalvik 虚拟机同时对应一个进程 空间 。 不同的应用程序在不同的 Dalvik 虚拟机实例中运行,不同的 Dalvik 虚拟机又对应于不同的进程空间,加之不同的应用程序在 Linux 内核中以不同的 Linux 用户来执行,这样可以最大限度的保证应用程度的独立性和安全性。 但 Dalvik 虚拟机要实现如线程机制,内存的分配和管理等操作的话, 仍 然 需要底层操作系统的支持。另外 Dalvik 虚拟机线程机 制中的一个线程对应于 Linux 中相应的一个线程,这样操作系统中的线程就能最大限度的为 Dalvik 虚拟机服务。 通过这样的一个设计, Android 的安全性大大提高了。 说到 Dalvik 虚拟机,那就应该说说虚拟机中的一个特殊 的虚拟机 进程 Zygote,之前说过 一个 Dalvik虚拟机 对应一个进程空间 。 Zygote进程的功能有点类似于 Linux中的 1 号进程, 在 Linux 当系统启动时即产生 1 号进程,而其他的进程都由 1 号进程创建。在 Dalvik 虚拟机中 Zygote 进程 fork 出所有的 虚拟机 进程,每当系统提出执行一个 Android 应用时, 需要一个 Dalvik 虚拟机是, Zygote 就会 fork 出一个子进程来执行该应用。 使用它 可以加快系统的执行,因为 Zygote 进程在系统启动时就产本科毕业论文 Google Android 手机嵌入式系统的研究与开发 10 生, 已经 完成 了虚拟机的初始化,预置类库的加载和初始化等等操作。当我们要执行一个应用而建立一个虚拟机时 ,只需让 Zygote 进程自身复制,这样就可以 减少虚拟机初始化等操作的时间。另外 ,对于一些只读库所有虚拟机实例都和 Zygote 进程共享一块内存区,这样大大减少了对内存的开销。 2.1.5 Android 的进程 管理 机制 Android 虽然是基于 Linux, 但是它却采用了一种有别于 Linux 的一种管理机制。Linux 在一个进程活动停止后就立刻结束该进程, 而 Android 在一个进程活动停止后不会立刻结束该进程, 并使该进程常驻内存中。 直到系统资源不够 需要更多内存 或者当某个结束进程的事件发生时才将该进程结束。 在 Android 中进程被分成了前台进程( foreground)、可见进程( visible)、次要服务( secondary server)、后台进程( hidden)、内容供应节点( content provider)、空进程( empty)六种。 前台进程是指 一些系统进程和当前屏幕上正在显示的进程。比如说你打开Google 地图查找路线,此时 Google 地图就是一个前台进程。 可见进程则是那些虽然不在前台,但是用户依然可见的进程,如输入法,时钟等,这些进程 虽然 不 是 在前台运行 的,但是其存在和我们的使用却是密切相关的,如果关闭了这些应用程序将给我们的使用带来非常大的不便 次要服务是一些与系统功能息息相关的服务,如Google 企业套件等 。 后台进程, 可以这么说后台进程就是一个前台进程被另一个前台进程替换后,进程没有结束,但是已经不再是前台进程的一个状态。在实际应用中就是 当一个前台进程运行时按 HOME 键后的进程状态 内容供应节点是没有程序实体,而是仅仅提供内容给别的程序使用的比如说日历节点空进程是没有任何东西在运行的进程,在一个程序退出 后 会有一个没有任何数据和代码在运行但是 依然驻留在进程空间中 的进程 , 该进程 仅仅 是作为一个能够提高该程序下次 启动速度和记录程序历史记录的进程。 Android 在调度以上几种 进程 时使用了一 个 系统 值作为系统对进程的一个评估,当 要结束 一个进程 时 该值的数值 越大 的进程被系统选中并结束的概率越大 。一般的,前台进程的值为 0,这表明前台进程不可能被系统选中并 结束。 当进程进入后台以后,系统将会分配一个更高的值给该进程。 相对于 Linux 的最近最早未使用的调度策略 ,Android 在其基础上提供了 一套独特 的进程管理模块,他能让程序员使用脚本来对内存管理进行定制。比如当 内存小于某个值时可以结束 这个系统值 大于另外一个值的进程,还可以当内存小某个值时结束上面六类进程中的一类(但顺序必须是空进程,内容供应节点,后台进程,次要服务,可见进程,最后才是前台进程)。根据这种特性 该系统 值 至少由 两部分组成,一个是基值, 另一个 根据 LRU(最近最久未使用)调度算法产生的一个值。对于以上说 的六种进程应该分别有一系统给其赋予的值,其大小本科毕业论文 Google Android 手机嵌入式系统的研究与开发 11 顺序应该是空进程大于内容供应节点大于后台进程大于次要服务大于可见进程大于前台进程,而这个系统赋予的值则是基值。这样就能保证一些这六种进程总是当一种进程被结束完了以后另外一种进程才会被结束,同时只需要根据 这个系统 值就能轻易做到对内存管理的定制。 2.1.6 应用程序框架层 在 Android 系统构架图中可以看到,应用程序框架层是处于 Android Runtime 和库函数层于应用程序层之间,之前的叙述中知道,该层使用开发语言的是 Java 语言。应用程序框架是能够让开发 者完全访问核心应用程序所使用的 API( Application Programming Interface,应用程序编程接口),该框架能够让组件软件重用的工做简单化。同时该框架中的任何一个功能模块都是等价的,任何一个应用程序都可以发布其功能模块,该功能模块可以替代当前的任意一个功能模块,但前提是必须遵循框架的安全限制 4 ,另外,其他的任意应用程序能够使用这个发布的功能模块。 这样的设计就使 Android 的构件重用率提高了。 在每一个应用程序背后,应用程序框架为其提供了一系列的服务。这些服务包括:一个丰富并 且可扩展的视图,通过这个视图我们可以 使用它提供的 一些包括按钮、文本框、列表、网格 等 甚至可嵌入的 web 浏览器的应用程序 来构造我们的应用程序 。内容提供器( content providers),有了内容提供器,一个应用程序可以共享它自己的数据或者访问另外一个应用程序中 共享 的数据 。资源管理器( resource manager),使用资源管理器,我们在应用程序中能够访问到一些如图形、布局文件等一些非代码资源。通知管理器( notification manager),给程序员提供了一个可以在程序状态栏中显示自定义提 示信息的管理器。活动管理器( activity manager),提供常用导航功能用来管理应用程序生命周期的服务。 通过这些应用程序框架层提供的服务程序员能够方便的开发一个界面优秀功能强大易于共享的的应用程序。 2.1.7 应用程序层 回到 Android 系统构架图中,应用程序层包括了 如 名片管理、 Google maps、浏览器等 本地应用程序( native apps), 如 QQ、 MSN、 QuickOffice 等 第三方应用程序( third part apps),以及 developer apps。 同样,该层的应用程序 也都使用 Java语言进行开发的。 本科毕业论文 Google Andr

温馨提示

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

评论

0/150

提交评论