`
mmdev
  • 浏览: 12920846 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

活动报道:PhoneGap 解救苦逼的移动跨平台开发(CMDN Club16期)

 
阅读更多

2012年3月24日是一个不同寻常的日子,这一天,在Adobe北京公司的会议室里,举行了第16期CMDN Club活动。来自Adobe和PhoneGap开发社区的资深开发者,带来了一个号称可以解救移动开发者的于跨平台水火中的开源Web开发框架“PhoneGap”。

签到处

什么,你没听说过PhoneGap?那让我来简单介绍一下吧。如果你只是专注于本地开发,追求将硬件性能发挥到极致来支持你的应用,那么PhoneGap只是一个跨平台框架;如果你的目标是跨平台或者Web App,而对本地性能的需求没有那么的严格(比如GunBros、武士这样的游戏),那么PhoneGap是“你必须认真阅读以下文字”。

Part A:关于PhoneGap

PhoneGap是什么 能做什么?

Adobe技术经理董龙飞称:PhoneGap是一个帮助我们利用这个平台进行移动平台跨平台开发的工具,或者是叫一个框架也好。但是实际上PhoneGap帮助我们做:

Adobe技术经理董龙飞

1.打包

开发者自己处理多平台、多尺寸的适配,适配好后,PhoneGap可以将其打造成不同平台的应用。打包主要有三种方式,DW、手工打包以及用Adobe的PhoneGap Build服务。刚入门的话用DW非常方便,但是DW只支持iOS和Android平台。打开本地的DW,可以往项目里引任何代码,可以引各种各样的内库,编写完了以后里面有一个命令菜单,直接点击就可以直接把你的项目编译成APK或者iOS包,当然也可以在模拟器里让你预览。

同时如果不愿意手工去编译的话,Adobe提供一个叫PhoneGap Build的服务。开发者只需将整个Code、目录结构按你的项目布置好,在PhoneGap Build设一个ID,就可以直接打包到你所指定的平台了,甚至可以直接帮你提交到不同的应用商场里。

2.访问本地特性

访问移动设备很多本地化的特性或者功能,比如摄象头、移动电话里面的电话簿等,这个时候PhoneGap通过标准接口提供访问本地特性的接口。PhoneGap框架提供一系列的接口为你服务。实际上在每一个设备上,或者每一个平台上,这些特性都不一样,而且这些特性不断快速的发展。具体如何操作可以参考官网上都有相应的文档,以下仅就1.4版和1.5版做一个简要的介绍。

第一要引出一个PhoneGap.JS,然后你来指定deviceready事件,这个事件是PhoneGap自己抛出来的事件,抛出这个事件就说明把整个条件和体系好了,你就侦听这个事件,在这个事件你要自己设定镇定器,实际上这就是PhoneGap提供对应API接口访问本地的运动传感器的,当然可能是iOS的传感器,也可能是Android。在PhoneGap整个体系里面到处都是CallBack,很好的反应了PhoneGap整个体系到底是怎么工作的。

接下来你就自己在你这两个函数里面,通过事件获取PhoneGap通过本地代码返带来的接口,就很简单。这是一个比较完整的PhoneGap。每一个API都不一样,所以你需要自己来看。这是1.4的版本。到1.5的版本就不一样了,这是刚刚下的1.5的版本,在这个1.5是针对不同的项,在这里面你可以看到JS文件名叫Cordova。实际上用1.5版本的话,其他的没什么变化,但是你引用SRC其实就是Cordova了。

PhoneGap不是什么?

做过开发都知道PhoneGap本身做应用不提供任何基础的框架,比如说做应动应用很多人用现在市场上一大堆开源的框架,UI框架、CSS框架、MBC的框架这个不面向移动。PhoneGap不是任何框架当你自己开发自己的移动应用的时候,你可能需要使用自己CSS库。我可能使用一套UI的框架,可能选一套MBC的框架,PhoneGap不提供所有的框架,仍然需要自己选择不同的框架,编好自己基于Web还是Web App。开发PhoneGap应用的时候,需要选择自己的ID。

比如说我们今年会有很多设备带NFC,那样PhoneGap本身提供的接口没有这种NFC接口。或者有一些设备索尼有一些设备是双屏,这时候是本地独特的特性,PhoneGap也不能支持。甚至有时候进行大图片处理,或者在Web应用里处理图片。PhoneGap大规模运算量高性能不是很多,这个时候你就需要有一个框架能够让你来挂接你自己进行扩展。PhoneGap我们提供了一个Plugin,你可以写自己本地的Code,就可以写在自己的Web应用上

PhoneGap的前生今世?

在2008年在旧金山针的iPhoneDevCamp活动上,有几个工程师和自由设计师实现了一个idea,使用Web技术调用iPhone的SDK。后来就在这个平台上实现一些基础的代码,发到社区里面,结果这个idea非常受Web开发者的欢迎,立刻非常火热,发展到现在已经可以支持很多其他的平台。Adobe收购了PhoneGap以后就贡献给阿巴奇基金会那时名字叫做CallBack,因为整个开发过程中她都在不断的CallBack。后来觉得这个名字太过于野性(可能引起某些非单身男性的不爽?)就把名改成Cordova。

Cordova是原来公司的地址的一个街名。这是一条街,就是那个公司地址。现在PhoneGap是一个开源项目,有很多公司包括IBM、Adobe等,一开始在里面贡献了非常非常多的Code。但是大家公认PhoneGap一开始来自这个公司的,所以PhoneGap的名字仍然保留。但是由于一些法律问题实际上阿巴奇基金会这个名字就叫Cordova。在未来发展的时候你可以把PhoneGap看成是Cordova开源项目的一个发布版。Adobe也有计划在整个PhoneGap下面,除了基础的代码框架,也会不断加入不同的服务和工具。

PhoneGap发布到1.5版,1.5版是3月初刚刚发布,没多久。在发布1.4的时候PhoneGap正式支持WP7。实际上它每一个本地的支持,他也是以插件的形式提供,只不过有些是自己开发,有一些是在社区上。

伟大的插件!

PhoneGap最重要就解决了一个问题:JS和Native之间的通讯问题或者是调用问题。我们知道由于浏览器的限制,JS是无法直接访问本地特性的,于是便有了插件这种神器,成功为这对儿基友牵线搭桥,解救了苦逼的移动跨平台开发。

Part B:PhoneGap内幕

跨平台开发技术研究者,PhoneGap中国社区发起人钟馥百,最做离PhoneGap核心最近的人,他对PhoneGap本身做了一个深度介绍。

跨平台开发技术研究者,PhoneGap中国社区发起人钟馥百

PhoneGap存在的意义是什么?

PhoneGap是面向做移动应用开发的,现在移动开发是一个雷区。非常多的平台,非常多的设备,不同的硬件设备、不同的软件平台都存在。开发移动应用,有太多太多内容和知识要学习。伴随这么多内容和知识点一定会伴随着N多的问题,就像看到前面这么多条路不知该去往何方。基于这样的问题,技术开发人员太苦了,要有那么多问题要解决,怎么办呢?于是PhoneGap来拯救世界了,HTML5+CSS3+JavaScript出现改变了未来。对于开发者,它节省时间,节约成本,以一应万变。

解开PhoneGap的外衣

这个PhoneGap架构比较简单,在最底层操作系统,提供了一些组件,在上面通过Web App用程序访问更多的系统资源,提高我们系统的可交互性和可娱乐性。现在PhoneGap方案和HTML5方案基本上用一个HTML5文件来完成,在整个运营程序过程当中只有一个HTML5文件露一次,所有的过程全部是用HTML来做的。

PhoneGap开发语言用的JS,中间的交互变成非常重要的过程,就是PhoneGap如何让Java和List代码交互。显然Java和JS是有鸿沟的,因为我们运行在浏览器里面,浏览器有一个砂箱模型,就是我在浏览器运行所有代码都是不可访问实际操作系统,为了保证安全。PhoneGap就是建立这样一个可以访问的桥梁。这个DELEGATE这样一个方法,传给List。

PhoneGap是跨平台应用平台,使用Web开发技术,可以同时开发N个平台,提供丰富的硬件API支持,像GPS、摄象头或者是内置一些功能都是可以得到完美的支持等。PhoneGap对于不同的层我们有不同的解决方案。比如说Debug,PhoneGap提供的加速器、扩充Camera还有Campass,这是最底层的。再下面就是数据存储层,就是可以用SQL Storage。

Android和iOS下如何运用PhoneGap

Android下,主要是Native插件管理器接受请求。执行之后需要等结果的返回,此时对于用户来说,UI不能动的。PhoneGap在这里面做了一些扩展,就是达成异步,请求放在一个单独的线程里面来做,需要一个Thread,最前面的过程和最后面的过程是一样的,不同的地方在这中间这两个框架。这样同样完成了整个调用的过程。

iOS上面的JavaScript和Native代码交互,首先先把COMMAND这样一个对象,它的一些函数、参数放在CommandQueue这里面,然后等着来执行。Native就是查找对应的Plugin执行它,通过Native执行代码的方式去执行,将结果返回给JavaScript,返回给我们的CallBack。

PhoneGap的未来

Vision Mobile做过一个跨平台开发工具大调查,结果显示PhoneGap有60%到70%的欧美开发者在使用它,而且PhoneGap通过收购贡献给基金会,这样是一个很牛的团队,做开源的人真正在做开源,钟馥百认为以后50%以上的手机开发移动会用PhoneGap。

现场花絮

移动开发者俱乐部(CMDN Club)是全球最大中文IT社区CSDN专门为移动开发者打造的实名邀请制网络平台,是移动开发者线上交流和线下活动的专属社区。

同时欢迎关注CSDN移动频道的官方微博@CSDN移动;加入移动开发者交流:149841439;加入移动开发者Google讨论组,共同关注与探讨移动互联网资讯与热点话题。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics