完整版智能手机开发你论文毕业设计论文.docx
- 文档编号:24116072
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:21
- 大小:77.95KB
完整版智能手机开发你论文毕业设计论文.docx
《完整版智能手机开发你论文毕业设计论文.docx》由会员分享,可在线阅读,更多相关《完整版智能手机开发你论文毕业设计论文.docx(21页珍藏版)》请在冰豆网上搜索。
完整版智能手机开发你论文毕业设计论文
优秀论文审核通过
未经允许切勿外传
1绪论
1.1智能手机平台
智能手机具有独立的操作系统,像个人电脑一样支持用户自行安装软件、游戏等第三方服务商提供的程序,并通过此类程序不断对手机的功能进行扩充,同时可通过移动通讯网络来实现无线网络接入。
目前,全球多数手机厂商都有智能手机产品,而芬兰诺基亚、美国苹果、加拿大RIM(黑莓)、美国摩托罗拉、中国台湾宏达(
Symbian(中文名:
塞班)是一个实时性、多任务的纯32位操作系统,具有功耗低、内存占用少等特点,非常适合手机等移动设备使用,经过不断完善,但是虽然在智能型手机市场取得了无比的成功,并长期居于首位,SymbianS60、Symbian3,UIQ等(尤其是S60)系统近两年亦遭遇到显著的发展瓶颈。
最近12个月欧洲手机公司诺基亚(Nokia)在智能手机市场市占率的滑落是不争的事实。
需要注意的是,并不是所有的Symbian系统都是智能系统,比如S40系统,就不属于智能手机系统。
1.1.2Android
Android(中文名:
安卓)是基于Linux平台开源手机操作系统名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
目前在市场上可谓如日中天,越来越受到玩家的青睐,倍受摩托罗拉推崇。
在Android发展的过程中,摩托罗拉付出的是核心代码,Google付出的是公关和品牌效应,当然还有它的googleapp,但是Google掌握了AndroidMarket以及通过androidgoogleapps获得的大量用户。
1.1.3OS(Tapas)
点心操作系统(TapasOS)是一款基于Android操作平台、针对中国用户使用习惯打造的互联网智能手机操作系统,在底层技术架构优化的基础上,为用户提供流畅的操作体验;同时根据本土化需求,提供贴心的功能设计及丰富的移动互联网应用。
点心操作系统由北京风灵创景科技有限公司开发。
该公司是李开复博士旗下的创新工场投资孵化的第一家公司。
此外,点心还推出“均衡云计算”理念,整合网络环境、终端设备等负责状况,智能分配手机端及云端计算量、管理流量分配,为用户提供安全贴心的云计算服务。
1.1.4WindowsMobile
作为软件巨头微软的掌上版本操作系统,在与桌面PC和Office办公的兼容性方面具有先天的优势,而且WM具有强大的多媒体性能,办公娱乐两不误,让他成为最有潜力的操作系统之一。
以商务用机为主,目前市场已显出颓势,最新版本为WindowsPhone7,几乎对旧有的WM系统全盘推翻再造,其应用机型已逐渐上市,不过价格不菲。
1.1.5iOS
ios是(又称MACOS)由苹果公司为iPhone开发的操作系统,它主要是给iPhone、iPodtouch以及iPad使用。
最新版本为iOS4.3.2,该系统的UI设计及人机操作前所未有的优秀,软件极其丰富。
苹果完美的工业设计配以iOS系统的优秀操作感受,就靠仅有的几款机型,已经赢得可观的市场份额。
1.1.6MeeGo
MeeGo是诺基亚和英特尔宣布推出一个免费手机操作系统,中文昵称米狗,该操作系统可在智能手机、笔记本电脑和电视等多种电子设备上运行,并有助于这些设备实现无缝集成。
这种基于Linux的平台被称为MeeGo,融合了诺基亚的Maemo和英特尔的Moblin平台。
1.1.7WebOS
WebOS(又称Palmos)以其独特的外形,另类的系统吸引了无数人的眼球,但是一个问题,就是目前没有任何正规途径,还有应用软件的问题,配套太少。
WebOS系统目前仍有很多的计算机编程爱好者,在努力的专研。
目前也Palm公司被惠普收购。
希望其在主流系统云集的将来,不被陨殁!
1.1.8BlackBerryOS
BlackBerryOS是RIM公司独立开发出的与黑莓手机配套的系统,目前在全世界都颇受欢迎,在此系统基础上,黑莓的手机更是独树一帜的在智能手机市场拼搏,目前也已在中国形成了大笔粉丝。
望其开发的愈来愈好,道路愈走愈宽!
1.1.9三星Bada
bada是韩国三星公司自行开发的智能手机平台,支持丰富功能和用户体验的软件应用,于2009年11月10日发布。
bada在韩语里是“海洋”的意思。
bada的设计目标是开创人人能用智能手机的时代。
它的特点是配置灵活、用户交互性好、面向服务,非常重视SNS集成和地理位置服务应用。
bada系统由操作系统核心层、设备层、服务层和框架层组成。
支持设备应用、服务应用和Web与Flash应用。
1.2Android平台介绍
Android从诞生到现在也不过3年的时间,但是也就是在这短短的3年内Android创造了一个迅速被人们知晓并追捧的奇迹。
2007年11月5日,Google与其他33家手机制造商(包含摩托罗拉、宏达电、三星、LG)、手机晶片供应商、软硬体供应商、电信业者所联合组成的开放手持装置联盟(OpenHandsetAlliance),发布了名为Android的开放手机软硬体平台。
该联盟的成员宣布日后都会在Android平台上开发他们的新的业务。
不久之后的2008年9月24日,T-Mobile公司首度公布第一台Android手机(G1)的细节,同日Google也放出了AndroidSDK1.0rc1。
这样Android进入了人们的视线。
Android以其特有的开放性优势越来越受到人们和智能手机厂商的关注。
对于第三放软件开发商来说,Android是一个真正意义上的开放性移动设备综合平台,Android系统是免费向开发人员提供的,这样就避免了开发中专利权的障碍。
因此,就能够为第三方软件开发商省下大笔资金。
对于设备制造商来说,Android是一个免费的平台。
当设备制造商每制造一台手机时,那些支付给手机系统制造商的费用也省去了,这样也降低了每台手机的生产费用,同时就降低了手机的价格,这样在市场上也提高了竞争力。
对硬体开发厂商来说,Android也是个开放的平台。
使用Android平台的厂商可以更具自己的需求以及能力为Android开发具有该厂商特色的功能,但是这样的增加完全不用考虑版权的问题。
同时Android平台支持各种先进的网络、绘图、3D处理能力,可以用来提供更好的使用者体验。
GoogleAndroid系统作为一个完全开源的操作系统,是由操作系统(Linux)、中间件以及核心应用程序组成的软件栈(softwarestack)。
通过androidSDK提供的API以及相应的开发工具,程序员可以很方便的开发android平台上的应用程序。
其整个系统由应用程序(Application),应用程序框架(ApplicationFramework),应用程序库(Libraries),Android运行库(AndroidRuntime),Linux内核(LinuxKernel)五个部分组成。
Android操作系统内置了一部分应用程序,包括电子邮件客户端、SMS程序、日历、地图、浏览器、通讯录以及其他的程序,值得一提的是这些所有的程序都是用java编写的。
因为应用程序框架使得组件更易于重用,所以开发者的应用程序可以很容易的调用API函数实现我们想要的功能。
在遵守应用程序框架的安全机制约束的前提下,开发者开发的一个应用程序可以使用其他程序所开发的功能。
虽然Android的应用程序是用Java语言开发的,但是Android给应用程序开发者提供了一系列的CC++程序库,通过Android的一些特殊的设计,我们开发者可以使用这些库,这在后面的叙述中将看到。
现今,Android操作系统已成为许多手机制造商的宠儿,其中包括HTC、索尼爱立信、Samsung、摩托罗拉以及国内的联想、华为、海尔、华禹等。
其中值得一提的是摩托罗拉公司,就在2009年11月凭借其一款搭载Android平台的Droid手机,两个月内就突破百万台,击败了苹果的iPhone3GS,被《时代》杂志评选为“年度最佳科技产品”。
因此告别了两年多的低迷态势,走出了泥潭。
2Android的系统研究
2.1Android构架
2.1.1Android的构架综述
Android是一个包括操作系统,中间件以及一些重要应用程序的专门针对移动设备的层次结构的软件集[1]。
作为一个层次结构的软件集,一定有一个层次的系统构架,下图为Android的构架图:
图2-1Android系统构架
从图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提供大量的应用软件。
我们知道,作为一个智能手机平台,只有拥有了大量的源源不断的应用程序作为支持,才能受人们的欢迎,从而才能占领市场。
之前Nokia的s60第三版就是一个很好的例子,因此NokiaS60v3的系统才被世人所熟知,并且曾经在智能手机行业占有很大的市场。
而另一个例子就是Linux系统,在所有操作系统中,稳定性和性能上能够和Linux抗衡的系统不多吧,但是在智能手机市场上为什么Linux却可以说是一败涂地,其原因也和其第三方应用少是脱不了关系的。
2.1.2内核层
GoogleAndroid作为一个开源的操作系统其内核采用了同样开源的被业界认为是相当稳定的Linux作为其内核,其中Linux内核包括以下功能模块:
安全(Security)、存储器管理(MemoryManagement)、进程管理(ProcessManagement)、网络堆栈(NetworkStack)、驱动程序模型(DriverModel)等,另外也在给其上层的软件和下层硬件间建立起一个抽象层(AbstractionLayer)。
同时Android在Linux2.6的内核上进行了一些增加和删改,使Linux更加适应ARM平台。
⑴增加了一个基于ARM构架的GoldFish平台作为虚拟机的虚拟CPU。
⑵增加了YAFFS2FLASH系统文件,因此增加了对NANDFLASH支持。
⑶增加了Android相关的驱动。
例如Android的IPC(进程间通信机制)binder,使用这个能使运行的进程为其他进程提供服务;Android的日志系统(Logger)和内存控制台(Ram_console);同时Google还重写了电源管理(Power)
⑷增加了新的共享方式Ashmem(匿名共享内存),多个应用程序可以这种方式共享内存获取信息,为进程间提供大量共享内存,同时为内核提供回收和管理这个内存的机制。
2.1.3AndroidRuntime和函数库层
2.1.3.1函数库
Android包含一些CC++库,Android系统中的各种不同组件都能够使用这些库函数。
这些库函数通过Android应用程序框架为开发者提供服务。
以下列举了一些库函数[2]:
①系统C库-一个专门为EmbeddedLinux设备定制的从BSD(BerkeleySoftwareDistribution伯克利软件套件)继承来的标准C系统函数库。
②媒体库-基于PacketVideo公司的OpenCORE开发设计的。
该库支持MPEG4,H.264,MP3,AAC,AMR,JPG,PNG多种常用的音频、视频格式的回放和录制,同时支持静态图像文件。
③SurfaceManager-对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合,提供如同类似iPhone的界面管理功能。
④LibWebCore-一个支持Android浏览器和一个可嵌入的web视图的最新的web浏览器引擎。
⑤3Dlibraries-基于OpenGLES1.0APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。
⑥SQLite-一个功能强劲的轻型关系型数据库引擎,Android中所有应用程序都可以调用它。
⑦FreeType-位图(bitmap)和矢量(vector)字体显示。
⑧SGL-底层的2D图形引擎。
2.1.3.2AndroidRuntime
前面说到Android采用Java作为应用程序的开发语言,但是虽然使用的是Java语言,但是Google却没使用传统的JavaRuntime来执行应用程序而是采用Android自己特有的AndroidRuntime。
从Android的系统构架图中可以清楚的看到,AndroidRuntime由Android函数库(AndroidLibraries)和Dalvik虚拟机组成[3]。
Android函数库中里包含了大部分Java程序语言所需要调用的函数库,如datastructure,network,utilities,filesystem等,其中很多代码是源于2005年的ApacheHarmony项目。
这样做的话能够使Android的虚拟机的类库与JavaSE的类库有非常大的相似性,进而提高了JavaSE类库的兼容性,最大限度的降低了一个程序员从Java平台开发到Andorid平台开发的难度,这样就降低了对Android开发的准备时间以及前期培训的费用,从而降低了Android应用程序开发的周期以及开发费用,这样的话短时间内就能让GoogleAndroid系统能够拥有大量的可执行的应用程序。
另外,使用ApacheHarmony类库还能完全摆脱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的运行时环境。
从图中可以看到,AndroidRuntime和Libraries在同一层,建立在LinuxKernel层之上,与LinuxKernel没有交集,而是直接嵌套到libraries中。
我们之前说过,我们开发者可以调用C和C++的一些类库。
其实就是这样AndroidRuntime与Libraries在同一层的设计并同时让AndroidRuntime中的AndroidLibraries引用libraries中的函数,而通过Dalvik虚拟机编译以后再调用这些函数做到上面所述的功能。
也就是说其实AndroidLibraries中的函数只是libraries中的一些引用,当一个上层的应用程序调用Dalvik虚拟机中的核心库函数时,调用的其实只是一个函数名,并不是函数的具体实现,然后Dalvik虚拟机对该函数进行一些处理以后再通过Dalvik虚拟机调用libraries中的相应函数,使之运行。
换句话说就是,AndroidLibraries中的只是一个函数名,而真正代码的实现是libraries中的C或者C++代码。
这样的好处就在于那些使用Java语言很难实现但是在C或者C++却能很容易实现的功能也能通过Java很容易等的实现。
2.1.4Dalvik虚拟机
Dalvik虚拟机是AndroidRuntime的一个组成部分,之所以要把他拿出来单独进行研究是因为,Dalvik虚拟机作为一个Java虚拟机,但它和普通的Java虚拟机有着一些不同。
Google的工程师结合传统的Java虚拟机,根据Android使用的平台一般为移动终端设备这样一个特点重新设计的虚拟机,这个虚拟机在移动终端设备上运行效率上明显比传统的Java虚拟机要高许多。
Dalvik虚拟机对内存的高效使用和在低速的CPU上表现出的高性能,确实让人们刮目相看。
Android的上层应用程序虽然是用Java开发的,但是Dalvik虚拟机却和传统的Java虚拟机有着很大的区别,两者是不兼容的。
首先,众所周知在Java中,所有的程序代码会被编译器编译成字节码(.class)文件,然后再打包成JAR文件,在执行时Java虚拟机就从JAR文件中提取出相应的字节码文件来执行。
在Android中不再使用字节码文件而是一种Android所特有的DEX(DalvikEXecutable)文件。
DEX文件的生成还是需要经过生成字节码文件的这个过程的。
使用Java语言编写好的Android程序代码,同样是先用Java编译器编译成为字节码文件,但是在这之后还需通过Google提供的一个DX工具将编译好的字节码转换成为DEX文件,然后Dalvik虚拟机通过DEX文件获得执行的代码。
Google弃用字节码文件而采用特有的DEX文件格式,这表明在Android实际运行中DEX文件格式相对于字节码文件格式应该有一些独特的优势。
在Java中当一个应用程序定义了多个类后,通过编译则会产生相应数目的class字节码文件,在这些字节码文件中则必然会有冗余信息,例如一些相同的类库会冗余等。
而DEX文件格式则是把这些class字节码文件整合到一个DEX文件中,使得字节码中的冗余减少了,同时使整体文件的尺寸也减少了。
这样一来,对于同一个应用程序来说,相对于Java的字节码文件Android的DEX文件格式在IO操作中所需要的时间也减少了,同时也减少了查找类所需要的时间。
另外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不采用基于栈的设计而采用基于寄存器结构设计Dalvik虚拟机呢。
我个人觉得这是和Android所搭载的平台以及Google的战略有关的。
首先,Android所搭载的主要平台为移动终端设备,如今的移动终端设备虽然性能比过去好多了,但是还是无法摆脱CPU处理能力低于桌面PC,存储资源有限的限制,在这样一个平台上使用基于栈的设计,在指令执行时必定会多出一个进栈(PUSH)和出栈(POP)的操作,那一定会影响指令执行的效率,这也是为什么我们在一些手机平台上运行Java程序时感到很慢的原因了。
其次从Google对Dalvik虚拟机设计中采用的16个通用寄存器中可以看出Android的发展方向是基于ARM的硬件平台,这也和Google的战略方向相一致。
虽然移植性降低了,但是使用二地址和三地址的指令,使得代码执行效率大大提高。
另外,Dalvik虚拟机虽然没有采用现在流行虚拟机技术例如JIT(justintime,及时编译)技术,但是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出所有的虚拟机进程,每当系统提出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 智能手机 开发 论文 毕业设计