phonegap开发环境搭建 目前能用做生产环境吗

出处:http://snoopyxdy. 最近2个月一直在做一个Phonegap(现改名为cordova,其实我用的cordova来做的,但是叫惯了phonegap)的手机app项目,目前已经debug完毕,准备发布上线了,发现真印证了网上流传的一句话:
如果你恨一个人,让他去开发PhoneGap应用;如果你爱一个人,让他去开发PhoneGap应用。
具体是某健身连锁公司要做一个宣传公司品牌,方便用户查询课程,并且还有类似微博功能的兴趣圈等功能的app,大致罗列下这个app主要涉及的功能吧:
1、用户系统
包括用户注册,登录,签名,头像,相册,好友,动态等反正别人有的我们都有,老板就是照着微信的个人中心来规格化的,真给他跪。
2、微博系统
包括朋友圈及一些其他内容列表,可以评论,可以赞,可以发图片,总之微博有的我们几乎都要有
3、实时聊天
如果两个人是好友,则必须有可以实时聊天的,聊天可以发图片,可以发表情,可以发地理位置
附近好友,新闻发布,通讯录,找好友等等其他一些琐碎的服务
其实这个app真心算麻雀虽小,五脏俱全的,老板想做一个大而全的东西,同时又想5月份能上线,同时又想android和ios一起上,so只有phonegap适合他了。先总体谈谈phonegap制作app的优点吧:
1、一套代码,开发安卓和苹果的app
这个优势是native无法比拟的,只需要在项目目录的www文件夹里放入一套开发代码,就可以在不同平台build出app应用,开发效率直接提高一倍,而且特别是后期的debug阶段,这种优势更加凸显出来,逻辑代码只有一份,如果ui符合标准,那只需要debug一次即可将安卓和苹果平台的bug都搞定。
2、开发调试方便
免去每次打包,开启虚拟机的等待时间,安卓还特别慢,直接在chrome浏览器里即可调试大部分功能,这也是native无法做到的,包括查看本地的sqlite数据库等。
3、开发门槛低
毕竟HTML5+CSS开发门槛要比native学习oc和java两套语言要低的多,所以速成也并非难事
感觉大方面的优点也就这么几个了,相信初次接触phonegap的朋友都会感受到,开发好简单,功能好强大,但是当你深入去开发一款比较复杂的线上app时,将不可避免的踩到很多坑,我在开发过程中,有些坑是通过google解决的,stackoverflow网站帮了我很多,有些坑至今无法解决,只能想其他办法绕过了,下面是一些我开发过程中遇到的坑和建议:
1、页面切换闪白
很多有web开发经验的人都会使用页面跳转来进入不通的功能页面,但是在利用phonegap的时候尽量少这么做,因为这会带来不可避免的屏幕闪白页的现象,所以尽量将整个应用做成单页,我现在的做法是,登陆前登录注册是一个单页,登录后是一个大单页。
2、iframe的坑
想要使用phonegap制作类似webview的功能,iframe就是再适合不过了,但是iframe在ios上会有一个坑,只会显示一个屏幕的高度,无法全部显示整个iframe,也没有滚动条。当然这个问题在stackoverflow上有很好的解决方法。
3、获取相册的坑
这个问题一般在高端机器上不会出现,但是当把图片质量设置很高,在一些低端的机器上选择图片后容易内存不足而闪退,所以尽量保证在选区图片时质量调整为30左右
部分ios机器选区的图片后方向不正确,这个只需要在获取照片时设置如下即可
correctOrientation:true,
4、定位的坑
首先ios上根本就没有这个问题,无论wifi或者3g都能够非常快速的定位到经纬度,但是android在wifi下面速度还算快,可是3g的时候就非常缓慢了,因为是直接去gps定位的,所以我们在写定位代码时得区分开来,ios一律使用“enableHighAccuracy: true”,安卓先使用“enableHighAccuracy: false”定位,如果超时失败,在使用“enableHighAccuracy: true”进行卫星定位,如果再失败,那就没办法了,提示用户吧。
5、下拉更新
很多app都有下拉更新,上拉加载更多这样的功能,但是在phonegap世界中,还是乖乖的在底部放一个加载更多的按钮,在顶部加一个刷新按钮比较好 ,在内容长过几个屏幕之后,这种上拉和下拉会成为ui的杀手,整个屏幕卡的不像样子。
6、alert的坑
我们很多提示信息需要使用alert来体现,但是请一定使用phonegap的通知插件来做,不要使用原生的alert,否则标题将是&index.html&这样的丑陋的文字。
7、页面切换效果
我主要使用了jqmobile的pagechange功能,其他的jqmobile功能几乎都没用到,如果你的应用页面像我那样比较多,建议还是老老实实的把切换效果关了吧,所谓的左右移入会出现底部滚动条,淡入淡出效果也不理想给人拖泥带水的感觉,还不如直接将效果设置为none来的干脆和快速
8、加速Dom元素选择
目前这个应用在note2或者S4上的响应速度已经非常好了,就算在我华为的屌丝机上也算可以,我使用了大量的变量来取代每次的$选择器,保证获取dom元素的高效和快速
9、websocket的坑
在我开发的过程中,这个坑算是最牛逼的了,我使用pomelo配合socket.io来制作聊天,其他手机一切正常,包括我的华为以及HTC,iphone4-5等,就发现note2和s4在进入聊天页面需要等待20秒左右,每次都是如此。真机打alert查询了半天,还是没有找到问题。于是上google搜索,发现还真有人和我遇到了一样的问题,原来是note2和s4不支持websocket,连接服务器等待timeout后,自动降级协议成为long-poll。但是我在note2上&alert(window.WebSocket)&时不是undefined,所以最后确定为,pomelo框架检查note2是否支持websocket时是true,但是真正要用到websocket的时候却发现无法使用,所以等timeout后才会自动降级,后来在一个websocket检测网站上测试,证实了我的说法。
但是虽然问题找到了,解决方案我却无能为力,于是只能android系统全部强制降级long-poll,ios优先使用websocket。
10、返回页面滚动条的位置
相信很多app都有这样的需求,用户浏览一个列表,发现感兴趣的,点击进入了,看完内容点返回,用户还是希望停留在之前的那条列表信息那里,而不是返回列表顶部。
但是如果利用jqmobile的pagechange来切换页面,每次都会将document的滚动条返回到顶部,然后进行切换的,所以在列表页进入详细页必须记住document滚动条的高度,以便返回时滚到指定位置。
但是坑爹的来了,在ios中返回并且修改document滚动条的top值会出现闪白屏的问题,最终的解决方法是每个page自己维护滚动条位置,这样返回的时候也只是修改自己的page里面div的滚动条top值,ios下的闪白问题也解决了
11、sqlite本地存储
sqlite我是作为本地存储,当网络出现状况时读取的,sqlite是不支持批量insert操作的,所以只能自己拼接sql语句然后执行。
12、IOS下的问题
用phonegap开发的app,会存在ios下面整个页面能够被上下拖动的情况,这个只需要在config.xml中加入如下一行配置解决,整体拖不动,但是页面还是可以上下拖动的
&preference name=&DisallowOverscroll& value=&true& /&
ios下面还有input框或者页面双击变大的问题,也可以通过搜索google进行解决
总结下,phonegap不是银弹,一些比如新闻展示,和硬件交互不高,页面复杂度不是很大的行业展示类app很适合使用,开发成本和周期都要比native少很多,但是使用phonegap初期会觉得很爽,越到后面越觉得phonegap制约性太大,坑也比较多,所以长线项目尽量不要使用它。
相关 [phonegap] 推荐:
- IT技术博客大学习
一、PhoneGap是什么.
PhoneGap是一个标准的开源框架,用PhoneGap开发移动应用是免费的,无论是商业或是开源;一个用基于HTML,CSS和JavaScript的,创建跨平台移动应用的
快速开发平台. 它使开发者能够利用iPhone、Android、Palm、Symbian、WP7、Bada和Blackberry智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动等,此外PhoneGap拥有丰富的插件,可以以此扩展无限的功能.
PhoneGap由Nitobi 公司创建,并于2011.10被Adobe收购,并捐赠给Apache基金组织,PhoneGap是唯一的一个支持7个平台的开源移动框架.
- snoopyxdy的博客
最近2个月一直在做一个Phonegap(现改名为cordova,其实我用的cordova来做的,但是叫惯了phonegap)的手机app项目,目前已经debug完毕,准备发布上线了,发现真印证了网上流传的一句话:. 如果你恨一个人,让他去开发PhoneGap应用;如果你爱一个人,让他去开发PhoneGap应用. 具体是某健身连锁公司要做一个宣传公司品牌,方便用户查询课程,并且还有类似微博功能的兴趣圈等功能的app,大致罗列下这个app主要涉及的功能吧:. 包括用户注册,登录,签名,头像,相册,好友,动态等反正别人有的我们都有,老板就是照着微信的个人中心来规格化的,真给他跪. 包括朋友圈及一些其他内容列表,可以评论,可以赞,可以发图片,总之微博有的我们几乎都要有.
- CSDN博客推荐文章
用了3天的时间,终于把环境搭建完毕,郁闷了N天,终于完成了. 这里我只是讲述我安装的过程,仅供大家参考. 环境搭建首先要去下载一些安装包:. (下载前注意一下,电脑是32位还是64位的请注意选择安装包). java环境的JDK:/technetwork/java/javase/downloads/index.html. Android下载 (此安装包含有Eclipse的开发平台):/intl/zh-CN/sdk/index.html. PhoneGap下载:/?page_id=442#android.
- 博客园_首页
首先, 来看一下phonegap 初始化流程以及Native 与 JS 交互流程图. 说明:socket server模式下, phonegap.js 源码实现的采用1 毫秒执行一次XHR请求,
JS 队列里面有JS语句数据时,才是真正的1毫秒调用一下;
当没有数据, scoket server 会阻塞10毫秒, 也就是XHR 要等10秒钟才能收到结果,并进行下一次的轮询. 1、Activity继承 DroidGap (extends PhonegapActivity). 从phonegap.xml 中加载白名单配置 和 log配置. 2、loadUrl
(每个Activity 都初始化一次).
- HTML5研究小组
PhoneGap现已完全支持Windows Phone 7所有的原生功能,其支持力度达到了iOS与Android的水平. 微软在去年7月帮助Nitobi将PhoneGap移植到了Windows Phone Mango上,并在9月
发布了 该框架的一个可用版本. 很多原生特性都得到了支持,包括Accelerometer、Camera、Contacts、Geolocation、 Notification与MediaCapture,但团队希望能找到一些Bug. 此外,由于缺乏具备相应功能的WP7设备,因此Compass并未得 到测试. 那时,还缺少两个重要的API:File与Storage. 近日,
PhoneGap团队与微软发布了1.3版,
对iOS、Android与RIM进行了一些增强,同时还为WP7提供了可用于产品的特性集,包括完整的API支持、更棒的Visual Studio模板、文档、指南、Bug修复以及大量
- HTML5研究小组
@). )按官方说法,是HTML5移动应用平台,它包括两部分:. 1)
应用开发框架:采用Web/HTML5技术编写应用,支持设备能力(如GPS、重力感应等)调用;支持能力插件灵活扩展. 图1 PhoneGAP支持设备能力API列表. 2)
手机应用创建工具:将遵循PhoneGAP应用框架编写的程序转换/封装生成各平台支持的手机应用. 图2 进去的是网页,出来的是本地应用. 1)有了PhoneGAP,用HTML5技术也能开发出传统意义上的手机本地应用,同时可以通过Javascript调用摄像头、位置信息等设备能力.
- SweetRiver
phonegap今年发展不错啊,至少“跨平台”一个词就是多少人无法拒绝的一个诱惑,而且使用HTML+CSS+JS开发,可灰常有吸引力. 网易轻博LOFTER的移动客户端就是用phonegap开发的,但是目前只有iOS版本,Android版本似乎还在开发中. 试用了下iOS下phonegap做出来的LOFER,应该说UI效果非常接近原生APP,但不如原生APP流畅,可以感觉到网易LOFTER团队付出了很多的努力. 正好之前我也用phoengap和jQuery Mobile做过demo,说一下我的感觉吧,
只针对Android:. 界面做起来较快,毕竟HTML、CSS和JS这方面太成熟了,有很多的lib也是直接用.
Phonegap做过一次调研,当时还是1.1版本,印象也一般. 对他的性能以及真实的跨平台能力都不太确定. 今年过完春节至今正好有机会参与了一个纯Phonegap + HTML5开发的项目,项目至今已经完成了一期的App Store提交,所以也正好能抽时间来小结一下. 一个月左右的开发过程让我对这种开发模式有了更深的认识,这对于前端开发人员而言绝对是一个大的机会. Phonegap Native API + Plugin基本能访问移动设备绝大部分本地功能,除此之外就是HTML5了,迁移成本非常的低,而开发效率也是很高的.
Phonegap最大的价值在于跨平台,理想情况下应该是只需开发一份代码就可以同时发布到iOS/Android等N多平台(理想情况一般仅限于一句hello world),因此开发效率与开发本地应用相比有非常大的提升.
- snoopyxdy的博客
近期的一个phonegap项目把我做的焦头烂额,最让人蛋疼的就是安卓4.1.x对html5的定位获取经纬度有个无比巨大的坑,一般我们利用如下代码进行html5的定位. 另外一个巨坑也直接影响了我对这个问题的判断,如果我重启了安卓4.1的机器,那么上述代码将能够正常跑大约几小时,甚至半天,可是到了第二天又会出现同样的问题,无尽的timeout. 总不能让客户每次使用定位功能都重启一次机器吧,涉及这个问题的机器有包括我的华为,三星note2,oppo等目前主流的安卓4.1系统的机子,在另外几台例如glasky3、红米等安卓4.3的机器上没有出现. 然后我直接将上述代码在浏览器中运行,发现安卓4.1也是无法跑起来,天真的我以为是安卓4.1对html5的接口支持问题,于是利用cordova加载geolocation插件,想利用cordova的native方法解决这个问题,但是问题依旧,其中意外的发现我的华为和note2能够跑起来了,其实只不过碰巧刚重启过而已.
- CSDN博客Web前端推荐文章
app开发告一段落,期间遇到不少问题,写篇文章记录一下. 为虾米要用phonegap. 开发app,至少要考虑android和ios两个版本吧,android偶可以应付,ios表示完全木有接触过,于是时间成本、开发成本上去了. phonegap则解决了这个问题,而且对po主而言,用web开发的方式来搞app很爽啊有木有. 当然,用之前还是要调研下,基于phonegap的app有木有成功案例. 大公司里腾讯的qq邮箱ios版,豆瓣的豆瓣音乐人都是基于phonegap. 重点看了看豆瓣音乐人,很无耻的反编译了一下apk,居然代码都木有压缩过
,正好方便了偶研究. 也就是,在页面中保证只存在一个frame.
坚持分享优质有趣的原创文章,并保留作者信息和版权声明,任何问题请联系:@。phonegap环境配置_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
phonegap环境配置
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢您所在的位置: &
一个产品经理眼中的PhoneGap Vs. AppCan
一个产品经理眼中的PhoneGap Vs. AppCan
首先在写这篇文章前,必须先申明一下,本人是技术出身,对HTML技术及手机客户端都有过编程经验,只是出于工作岗位的变动,便没有再具体代码工作,以下文章涉及的中间件的基本代码实现及前期的API使用,都是自己测试过的,虽然比较浅,但是都是真真实实的。所以请各大网友拍砖,手下留情哦~另外本文的视角如文章标题一样, 是从产品经理的角度去做比较的,不是从技术方面上去做比较。
而关于原生态的开发,个人觉得HTML5中间件或者混合原生的方式肯定是不用做比较的,毕竟原生的东西还是很强大的,很多效果是HTML5无法比拟的,但是请确认你要做的产品是要炫?还是实用?好吧,入正文啦。
记得第一次接触,是在月份左右的时候,当初寻找这类HTML5中间件或者说HTML5平台的初衷是为了能快速推出iPhone及Android等智能手机客户端;至于为什么需要这类HTML5中间件呢?我们是出自这样的考虑:
由于公司资源的分配问题,原生态开发组已经肩负太多的项目,等待原生态组团队明显不能满足我们急切要推出智能端的要求;而现有团队都是做WEB开发的,显然对于HTML这个团队是比较熟悉的,而且这样的学习成本也是相当的小;
HTML5跨平台的特性,一次编译,run Anywhere.只要一套html5程序代码,经过中间件的编译就可以在iPhone、Android及Symbian,还有Windows Phone 上运行,明显这个是开发成本及时间成本上可以大大的节省;
用户体验性能如何,能否给用户提供流畅的用户体验;
在满足了这些条件及经过一周时间的选型之后,公司决定选择了PhoneGap平台(中间也分析过其他中间件平台如:Titanium、Sencha Touch等,但都不是很理想),接下来就是苦逼的开发鸟~
由于前期在HTML5平台的使用上欠缺经验,所以在前期做选型的时候没有用很具体的业务逻辑去做性能测试,结果到了开发的中间过程,发现PhoneGap的整体性能太差了,点击一个事件都要等半天,启动页面也很慢,切换页面也是相当的慢,最终我们的产品连页面件的切换动作都不敢用&但是已经在研发进程中了,此时再改方案似乎也没有好的平台选择,也无法保证产品进度鸟,最终我们做出了这样的技术优化:
页面的js库,采用自己的JS库,没有采用Jquery mobile,以加快加载速度;
采用本地HTML界面模版方式做数据缓存,以减少数据请求次数;
修改了PhoneGap源代码,优化启动界面及部分接口,如地图定位接口;
最终产品如期推出,可是性能方面上只能说是差强人意啊,至于体验,我想到了目前流行的一句话我想说&我能讲脏话吗?&&不行&&那我没什么好说啦!!!&
其实当初也大体知道PhoneGap在性能方面上表现差强人意,可是我们是这么期望的,在我们产品的开发过程中,应该会得到改善,而事实证明这个期望让我们承担了太多的风险;
之后,我们也试过了采用Sencha来实现,表现也是一般,所以对于HTML5中间件的性能表现,我们都不抱希望了,虽然说对这个方向一直都是看好的,可是一直都没有很好的中间件能解决这个性能问题;这个状态一直持续到今年的3月份的一天,在36Kr网站上得知了AppCan这个产品在做内测,所以很快就申请了内测,进行了试用;
一开始我试用的是采用Web模式,将的网址编译成APK包做测试,发现好像整体启动速度及性能表现还可以;出于上次的经验,我再测试了AppCan所谓的Easy模式,随便搞了新闻类的编译了一下,感觉这东西好像还不错哦,效率应该可以挺高的,可是Symbian版本就实在难以接受鸟,下载后一大段时间白屏,然后还要再下载一个AppCan核心插件,最终直接关闭程序,无视Symbian版本;然后便安排了技术人员做深入的了解及实验,包括从API接口,性能及支持方面进行详细的研究;
研发团队经过了2周的时间的代码实现,出了一个公司产品的Demo版,在经过大多数相关人员的使用过后,感觉性能比PhoneGap实现的确实改进了不少,比如说页面的切换特效还挺顺畅的,一些公共插件及接口都比较全面,如Jabber通讯、二维码扫描、支付宝等;可是致命的一个问题是:点击触发某个事件的时候,还是可以感觉&顿&一下的等待,让人有点不爽,最终这个问题也顺利得到了解决,原因是onclick事件的响应没有ontouchstart事件来得快,两者相差了0.5s这个数量级,实在无语AppCan这样的重要体验,都没有文档说明。
下面表格是PhoneGap与综合对比表:
PhoneGap与AppCan综合对比表
整体表现性能
页面切换响应慢
数据请求慢
启动速度快
页面切换相应速度不错
数据请求较快
多窗口支持与动画
支持多窗口及native平台自身的窗口间动画
在整体UI上,PhoneGap自始至终只存在一个窗口,也就是所有的网页都运行在这个窗口当中的,这也就使得用PhoneGap写出来的应用失去了很多native应用的原生特性。
AppCan采用Window的理念来划分窗口。每个window独立存在,可以相互跳转,并且可以指定一个跳转时的过渡动画效果,如此一来,用户体验效果就非常接近native应用了,并且不存在影响效率的问题
Native UI支持
支持,开发者自己打补丁
支持并且有系统的NativeUI扩展
PhoneGap没有一套完整的native
UI架构,所有UI完全依靠HTML和CSS完成。手机上的webkit存在IFrame不支持height属性,css样式不支持z- index,position,overflow等属性的硬伤,也就是页面的区域滚动在正常网页布局下是无法做到的,只能依赖JS或者native
不幸的是PhoneGap把这个问题留给了开发者,开发者只能选择JS。在页面滚动上用JS效率是相当低的,尤其在android的中低端手机上表现更为 明显。
而AppCan则采用html +
native的布局方式(开发者同样写JS即可做到),很好的解决了这个问题,在页面滚动的表现上,与native应用没有任何差别。
本地化接口丰富
支持可扩展(非常有利于定制功能)
本地化接口非常丰富
官方提供了很多第三方插件,省去不少开发时间
无标准的IDE及模拟器,不同平台的开发要求安装不同的开发环境
一套完整的开发环境,IDE为标准的Eclipe插件,支持智能提醒,自动补齐,代码自动生成,模拟器为标准的Chrome扩展插件,支持单步调试,Log输出等
唯一缺点,是鸟文
比较少,一些文档缺失,很多描述表达也不完善,造成很多开发者很难入手
国文文档,哈哈哈
开源及是否收费
目前不开源
开源及是否收费问题,一直是很多开发者担心的问题,怕有一天AppCan就收费了,其实AppCan官方已经承诺会永久免费,另外一般国内优秀的产品是不会开源的,而选择开源可能就证明其在走下坡路鸟;
基本上很难得到技术支持的相应,每次邮件都是苦逼的等待
国内团队支持,沟通无障碍
支持力度还不错
还有官方论坛提供解决渠道
开源及是否收费
可以正常上线
可以正常上线
综合来看最终还是感谢AppCan这个产品,虽然有些地方还需要完善,但的确做得挺棒的,基本满足了我们产品研发的需求。PhoneGap作为较早进入国内的HTML5中间件知名度较高,但毛病也不少。希望两者都能越来越好!
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&&&的更多文章
十一长假归来上班,好像更累了;早上也越来越堵了。小编前天去买
既然强大的Android Studio来了,有什么理由不去用呢?
Web App开发中会面临越来越“重”的问题,如果在开始
作为Android开发者,最头疼是什么?相信大家会异口同
七夕,是让人听起来就觉得美好的日子,牛郎织女鹊桥相
在开始学习WAN资料时,我经常面对资料深度不够或者为电气工程师编写的书。另外,在看了几本书,并且对Internet进行了研究以后,
Windows Phone专家
Android开发专家
51CTO旗下网站

我要回帖

更多关于 phonegap3.4 环境搭建 的文章

 

随机推荐