




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Android与Flex手机应用程序开发比较研究摘要: 目前,手机应用程序开发的主流是Android,但Flex的手机应用程序开发也不容小觑,它们可能都是未来手机开发的主流技术。这两种手机开发技术有其相同之处,都可以基于Eclipse平台的开发,都强调Mobile/Service的应用。两者也有一些差异,本文从开发环境、系统架构、开发原理、技术实现等多个方面比较基于Android与Flex手机应用程序开发工具的不同,旨在通过比较这两种手机开发技术,让更多的手机开发爱好者了解这两种技术,使更多的人参与手机应用程序研发,从而促进移动商务的发展。1 引言当前计算机技术已经发展到了移动互联网时代,这意味着将有超过10亿的人和智能设备,可随时随地接入网络并进行具体的信息交互,而移动互联网终端将成为人们获取信息和分享个人信息的重要窗口。移动终端的创新空间比起PC、PDA来说大得无法想象,并且创新的速度正在加快,包括多核技术、并行计算、高清显示、3D显示、多屏和变屏技术、多点触控、环境感应等新技术,以及运营商的越来越快的移动宽带互联网等,使移动终端成为推动移动互联网发展的关键力量。可以说,计算机的发展已经逐步迈进了移动开发的大门,那什么技术才是手机应用程序未来开发的领军技术呢?目前手机开发的主流技术是Android,但Flex的手机应用也悄然而至,在这个风云变幻的移动开发世界里,还没有看到绝对的胜利者。本文通过比较基于Android与基于Flex的手机应用程序开发,试图找出未来手机开发的发展趋势。2 Android与Flex概述Android有两层意思,本义是指“机器人”,另一层意思是指Google于07年11月5日发布的基于Linux核心的开源手机软件平台,该平台主要由操作系统、中间件、用户界面和应用软件组成,Google官方称它是第一个为移动终端打造的真正开放和完整的移动软件平台。它作为一个庞大的系统,包括了Linux操作系统、各种本地程序、虚拟机和运行环境、Java框架和Java应用程序等多方面的内容。Android开发主要基于Eclipse开源平台,该平台是一个可扩展性良好的Java开发平台。通过Android技术,开发者可以开发各种基于Android手机操作系统运行的应用程序及游戏等,它仅限于Android手机操作系统上运行。Flex技术是一种基于标准编程模型的高效RIA开发产品集,最初由Macromedia公司在2004发布,后被Adobe公司冠以商标。它是目前最完善的RIA(Rich Internet Application,富互联网应用程序)技术。基于Flex与AIR(Adobe Integrated Runtime)技术能将传统的桌面应用程序搬到浏览器里运行,该技术包含两种重要的语言:MXML和Action Script。在这里,基于Flex技术的手机应用程序开发,主要是使用的是ELIPS Studio作为一个插件,置入到Adobe Flash Builder 开发平台中。Elips studio 是主要基于Flex开发平台,与Flex不同的是在平台上多了Elips编译器和不同型号的手机智能模拟器,考虑到手机硬件资源的情况,可使用的Flex组件与标准的Flex开发平台相比数量较少,并且增加了openplug所提供的elips控件包。通过ELIPS+Flex技术,可以让Flex的应用程序以原生码的格式直接在主流的iPhone、Android、Windows Mobile和Symbian等智能手机上运行,不需要Flash player或Flash engine的支持,解决了有些手机设备制造商排挤Flex技术的问题。可以说,ELIPS Studio这一先进技术,在手机应用程序开发方面做出了前所未有的技术突破。3 手机应用程序开发工具比较3.1 开发环境的比较基于Android手机应用程序开发,一般使用的是集成环境开发工具(Android SDK)进行程序的开发和调试。搭建Android开发平台涉及到的开发工具有:JDK(Java虚拟机)、Eclipse开发工具、Android SDK及ADT。Android开发是以Java作为开发语言,所有用Java开发的应用程序都需要安装Java虚拟机。Eclipse是一款免费、优秀开源的集成开发平台(IDE),很多Java项目开发都是基于这个平台,Android应用程序开发也不例外。Android SDK是Android软件开发工具包,应用软件开发工具的集合。该包定义了很多Android手机开发的底层应用,可以调用这些底层工具实现更多更复杂的手机应用。基于Flex技术的手机应用程序开发,主要是使用的是ELIPS Studio作为一个插件,置入到Adobe Flash Builder 平台中。开发环境首先安装的是Adobe Flex Builder,而后再安装Elips studio 3。Elips studio 是基于Flex,其开发平台就嵌入在Flex中,与Flex不同的是在平台上多了Elips编译器和不同型号的手机智能模拟器,考虑到手机硬件资源的情况,可使用的Flex组件与标准的Flex开发平台相比数量较少,并且增加了openplug所提供的elips控件包。3.2系统架构的比较3.2.1 Android系统架构Android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。(1)应用程序Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。(2)应用程序框架开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。(3)系统运行库Android的系统运行库包括程序库和Android 运行库。Android程序库主要包含一些C/C+库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。而Android 运行库包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中 的 “dx” 工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于Linux内核的一些功能,比如线程机制和底层内存管理机制。(4)Linux 内核Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。3.2.2 Flex系统架构 Flex属于富互联网应用程序(Rich Internet Applications,缩写为RIA),它是下一代将桌面应用程序的交互式用户体验与传统的WEB应用部署的灵活性和成本分析结合起来的网络应用程序。富互联网应用程序中的富客户端技术通过提供可承载已编译客户端应用程序(以文件形式,用HTTP传递)的运行环境,客户端应用程序使用异步客户/服务器架构连接现有的后端应用服务器,这是一种安全、可升级、具有良好适应性的新的面向服务模型,这种模型由采用的WEB服务所驱动。结合了声音、视频和实时对话的综合通信技术,使富互联网应用程序(RIA)具有前所未有的网上用户体验。Adobe RIA技术封装让现有的WEB技术得到了极大的保留,核心价值在于大大提高了产品设计师和开发工程师的“开发体验”,强化了设计端和开发端的整合。设计师和开发工程师们可以方便地将自己的代码平移到新的平台上,并且发布、部署的方式比之前的任何一款开发工具都方便得多,从而使RIA应用有更广大的开发者基础。Adobe RIA技术也将带来新的桌面革命“Desktop 2.0”,内容从Flash,HTML/CSS/JS,到PDF,几乎涵盖了时下最流行的WEB内容载体。此外,“可离线”应用模式能让用户更加安全、舒适地进行工作和娱乐。用户们不必再抱怨因网络故障而造成的信息损失,而且也可以借助本地资源更好地节省网络资源。因此,Adobe RIA技术可以让用户将WEB 2.0应用带回桌面,创造的商业应用价值和用户体验价值将超过以往任何技术。整个流程如图所示:图1 RIA技术框架图Flex的开发架构由 MXML和 ActionScript组成。Flex软件开发人员使用直观的MXML来定义丰富的用户界面,MXML是基于XML标准的一种描述语言,用于配置和设计程序的界面和编写表现层数据模型;Flex软件开发人员利用ActionScript来编写程序逻辑,它是基于ECMAScript标准,其语法规范类似于Javascript,是用于Flex正是应用开发的面向对象编程语言。这样两种基于W3C标准的开发语言就构成了Flex程序,两种语言的关系类似于HTML和Javascript。通过Flex技术,开发者可以将RIA程序编译成为Flash文件,为Flash Player所接受,也就是说,Flex技术所开发出来的程序对于大部分浏览者而言并不需要安装额外的客户端支持,这是一个得天独厚的优势。通过Flex技术,我们可以开发出用户体验极佳的交互界面,在浏览器里运行客户端程序,并最终编译成SWF格式的客户端应用程序,以Flash player作为载体,客户端应用程序可以在浏览器的Flash插件中运行。3.3 开发原理的比较Android和Flex手机应用程序开发在开发原理方面存在明显的差异,Android主要基于Linux内核进行的开发,而Flex的开发有两种,一种是Flash 4.5 刚推出的手机开发模块,它需要在手机中安装AIR运行时才能运行相应的手机运用程序。另一种是基于Elips编译器,它可交叉编译mxml和Actionscript代码,生成各种手机操作系统可执行的原生码。结合Android的系统架构功能,应用程序开发原理是将Android SDK注入到Eclipse开发平台中,主要是通过编写XML layout布局文件代码和Activity java程序代码,所有这些类都经由Java编译器编译,然后通过SDK中 的 “dx” 工具转化成.dex格式并由Dalvik虚拟机执行,最终编译生成Android手机操作系统可识别的.apk文件,然后可在此类型的手机操作系统中运行。Android手机应用程序实现的原理图如下:Dalvik runtimeNative codeStandard librariesJNILinux kernel +Android extensionsAndroid app frameworkAndroidSDKappsAndroidNDKapps图2 Android手机应用程序实现原理图而基于Flex手机应用程序开发,其开发原理是将Elips Studio注入到Flex开发平台中,编写Flex应用程序,在Elips 编译器中加入C+编译器,选择特定的目标设备(手机模拟器),就可以交叉编译mxml和Actionscript代码,生成原生手机类型可执行的输出包文件(如.cab或者.sis或者其他文件),根据不同的手机操作系统,选择不同的手机可执行输出包文件,移植到原生手机上,手机操作系统就能够执行这些文件,并将其显示在手机屏幕上。在此过程中,通过交叉编译转化成的原生手机输出包文件中包含了*.cpp文件,此文件是稳健高效的原生c+代码,,它具有很好的执行性能,并允许直接访问本机API程序。整个Flex手机应用程序实现的原理图如下: 图3 基于Flex手机应用程序开发原理图3.4 应用程序框架的比较3.4.1 Android应用程序框架新建一个Android应用程序,我们可以看到图4所示的项目结构。在这里主要阐述src文件夹、gen文件夹、Android 2.2包、assets文件夹、res文件夹及配置文件AndroidManifest.xml的主要功能。图4 Android手机应用程序结构(1)src文件夹Android项目遵循了现今普遍使用的三层架构模式(MVC模式),在src文件夹下存放的就是“C(业务逻辑)”代码,它是以“.java”后缀名的文件结尾。该部分是基于java代码,是程序开发的核心代码,可以说是Android手机开发的心脏。(2)gen文件夹在gen文件夹下,存放的是系统自动生成的项目索引文件,如在reslayoutmain.xml中定义一个文本框(TextView),id为“+id/TextView1”则会在R.java中生成对应的代码:public static final int TextView1=0x7f050000;R.java是自动生成的索引文件,这个文件是只读模式,不能更改,它是Android项目文件夹下各个对象的索引。如:public static final class drawable方法下存在的是res/drawable文件的索引,public static final class id方法下存在的是所有取了id名称的文件的索引。(3)Android 2.2包之所以会在项目中会生成Android 2.2包资源文件,那是因为我们之前选择的是Android 2.2 API,该包下存放的是与项目开发有关的底层包,可以说所有Android应用程序开发是基于这个包进行的,我们可以调用这些包里面的方法与属性,实现更多的功能。(4)assets文件夹assets文件夹存放的是不进行编译加工的原生文件,即表示该文件夹里面的文件不会像xml文件一样被预编译,主要存放的是一些图片及html,js, css等文件。在后面的章节中会介绍如何读取assets文件夹下的资源。(5)res文件夹res文件夹下存放的也是资源文件,这些资源文件与assets文件夹下存放的资源文件不同之处在于:res下存放的是需要进行编译加工的原生文件,而assets则是不需要进行编译加工的原生文件。在该文件夹下默认有drawable-hdpi、drawable-mdpi、drawable-ldpi、layout及values等文件夹。drawable-hdpi、drawable-mdpi、drawable-ldpi一般用来存放图片,Android操作系统的手机可能采用不同的手机分辨率,因此在开发过程中会要求使用具有不同分辨率的图片;在layout文件夹下存放的是外观文件,相当于三层架构模式(MVC)中的“V层代码。刚才我们所说的main.xml文件就是放在该层下;在values文件夹下自动生成一个“strings.xml”文件,在该文件中我们常常定义一些常量,如程序的标题等。(6)AndroidManifest.xmlAndroidManifest.xml配置文件,它是每个android程序中必须的文件。它位于application的根目录下,描述了package中的全局数据,除了包括该项目中常使用的activity、services、receiver, providers及intent receivers,还可以指定permissions、instrumentation等成员。3.4.2 Flex应用程序架构新建一个Flex手机应用程序,我们可以看到图4所示的项目结构。在这里主要阐述src文件夹、ElipsFlexSDK包、bin-debug文件夹、Extensions文件夹、resources文件夹及output文件夹的主要功能。图5 Flex手机应用程序结构(1)src文件夹点开src文件夹,可以看到在src文件夹下存在的是应用程序代码文件、capabilities.xml 文件和MyFirstELIPS-app.xml文件。MyFirstELIPS.mxml是我们所建的第一个程序文件,默认与项目名同名。capabilities.xml 是手机模拟器配置文件,主要用来描述所选择的手机模拟器的设备信息。MyFirstELIPS-app.xml 是应用程序配置文件,主要描述了应用程序ID、应用程序的名称、版本号、初始化窗口信息、项目主程序、程序图标类型等应用程序的基本特征。(2)ElipsFlexSDK包ELIPSFlexSDK中存放的是编译所开发的应用程序所需的底层类库文件,包括airglobal.swc、ELIPSFlexFramwork.swc、ELIPSFlexServices.swc、fluint.swc和json.swc五个swc文件。airglobal.swc文件中定义了桌面应用程序所需的全局变量、函数及方法,包括了adobe.util包、flash包和默认包。ELIPSFlexFramwork.swc文件中定义了Flex手机应用程序的底层框架及运行环境所需类库,包括flash.events包、mx包、openplug.ELIPS包和默认包。ELIPSFlexServices.swc文件中定义了flex手机应用程序与服务器通信所需的底层类库,包括flash包、openplug.ELIPS.services包及默认包。fluint.swc文件定义了数据流相关信息的底层类库,包括net.digitalprimates. fluint包和默认包。json.swc文件定义了json表达式所需的底层类库,包括com.adobe.serialization. json包及默认包。(3)bin-debug文件夹bin-debug
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养护作业安全规程培训课件
- 养成良好的卫生行为课件
- 农业器具使用安全知识培训课件
- 别具风味的美食课件
- 别云间-夏完淳课件
- 化工企业安全培训内容课件
- 内镜预约流程课件
- 兴县食品安全培训课件
- 化学清洗安全培训课件
- 兴业海螺安全培训课件
- 2025邮储银行校招笔试真题及答案
- 2025年甘肃省天水市甘谷县选聘大学生村文书55人考试参考题库及答案解析
- 2025年国家公务员考试法律基础知识复习讲义
- 农村产业融合发展示范园项目可行性研究报告
- d证科目一考试完整题库及答案
- 铝灰知识培训课件
- 旧窗户拆除安全合同7篇
- 民族团结一家亲知识竞赛试题及答案
- 学堂在线 运动与健康 章节测试答案
- 无人机作业安全知识培训课件
- 愿友谊地久天长课件
评论
0/150
提交评论