我要做一个原生(意; 不是在浏览器)移动应用程序。 因为我是一个网络开发我挣扎,我决定是否应该尝试的PhoneGap或者只是建立在Java或Objective-C中的本机应用程序。
该应用程序的要求很简单。 GPS / WiFi定位,Facebook的整合,我想我需要一个数据库来处理一些特殊应用的Facebook-朋友关系。 例如游戏中的高分,例如 - 这样的东西。
我是一个网络开发,不知道既不是Java或Objective-C的,但。 我以前从未使用PhoneGap的,所以我不知道这是否能够满足我的要求。
所以我的问题是这样的; 我可以使用PhoneGap的我的应用程序,或者我需要潜入一个新的语言?
Answer 1:
有关:
这篇文章的更大的版本也可以找到这里 ,是透明这是我的个人博客。
混合动力VS本地应用程序
混合应用:
优点:
- 更快的发展,特别是如果你是AA长期的网页开发人员。
- 1种语言可以在每个可用的平台上使用。 这当然需要一个PhoneGap的包装。 你不需要学习目标C,Java或C#做任何开发。 你只需要了解PhoneGap的实现的基础。 你需要用上述语言玩了一下,但你并不需要了解他们。
- PhoneGap的可以提供类似iOS原生的标签栏或Android原生的标签栏和这么多一些本地功能。
- 预算较低的成本和支持者和开发商的一个庞大的社区。
- 一种混合的应用程序提供了许多两者的优点,而不需要专门的技能,更多的预算和更长的上市时间是比较典型的完全原生的应用程序的方法获得了最常见的设备API和广泛的设备覆盖范围。
缺点:
- 一段时间后,你会小便血液,字面上和隐喻。
- 手机(即使在今天的平板电脑)不够快,无法流畅运行的混合应用,移动JavaScript功能是睡觉的最好的。 Android平台是一个噩梦,页面转换不顺利工作更何况缺乏CSS / CSS3实现。 如果您认为原生Android 2.X和4.x有分歧去看一下的是Android 2.X坏的JavaScript / CSS实现。 iOS的票价更好,但还是有欠缺CSS3实现你更好的页面过渡。 为了使这短暂的本机应用程序将永远有一个更好的用户体验和一般的感觉。
- 你会花更多的时间固定应用程序,然后进行编译。 创建为每个平台的应用程序是在颈部疼痛。 在不同平台上的浏览器不支持统一所有最新的HTML功能和API,它可以使开发和测试挑战。
- 如果你没有一个好的设计师,甚至没有尝试建立一个应用程序; 看起来是一切。
- 如果你不知道你在做什么有一个很好的机会,你的应用程序不会得到苹果应用程序商店的权限。 即使谷歌Play商店将禁止你的应用程序,如果他们发现了一个第三方的PhoneGap贝宝插件。
本机应用程序:
优点:
- 原生移动应用程序可以产生最佳的用户体验 - 快速流畅,可以给你设备功能的最佳途径,并且可以在应用程序商店被发现。
- 毫无疑问,本机应用程序可以完全访问底层的移动平台。 本机应用程序通常非常快,打磨,使其非常适合高性能的应用程序或游戏。 这更多的则是足够的。
缺点:
- 更大的预算,你会如果你想要的是Windows Mobile应用程序至少需要一个人/ s的Java和Objective C的知识,甚至是C#。 是的,你可以自己学习,但你会在很短的时间做这样的误解,不住。 如果你从来没有做过任何的发展,选择目标C(iOS版仍然是一个更好的平台)。 在其他情况下,选择Java。 Java有类似于其他可用语言语法,所以很容易从C#跳转到Java,反之亦然。 目标C是它的全球独家。 它有一个相当罕见的语法。
- 这可能需要你的一段较长的时间来开发所有这些,时间就是金钱。 这依赖于在应用程序的复杂性。
在你的情况,如果你有一个很好的web开发/设计能力和/或有一个好的设计师应该选择一种混合的应用程序。 去只有当这个应用程序将是一个复杂的原生。 你想要的一切可以用混合的应用程序来完成。 而且你会发现一个巨大的和配套的社区。
混合应用
我以前也没提到你需要特别小心这里。 即使你是经验丰富的开发人员,你会发现很多你解决不了的问题。 混合发展不应该被误认为是一个基本的Web开发。
每个移动平台都有其自身的问题,更不用提手机运作方式,取决于设备上。 如果可能的话总是创建一个应用程序,在较慢的设备的工作原理,因为本机应用程序将成功运行在几乎任何设备。
还有最后一两件事,创建混合应用时,应用程序开发将需要大约30%的时间-50%,其余部分则特定于平台的调试与学习。 相信我,即使经过几年的手机发展有时我面临的问题,我不能单独使用,或不够快解决。
所以,要小心选择移动框架时,挑选2-3,并花费数天阅读它们。
链接
这里有几个环节,以帮助您决定:
PhoneGap的+ jQuery Mobile的1.4教程 -这是一个的PhoneGap一步一步的教程和最后一个版本的jQuery移动
PhoneGap的+ jQuery Mobile的1.4教程- MacOS的版本 -这是在MacOS PhoneGap的部署一步步的教程。 jQuery Mobile的部分被覆盖在前面的文章中,在重复的事情没有意义。
jQuery Mobile的VS煎茶触摸 - jQuery Mobile的煎茶触摸比较
jQuery Mobile的VS剑道UI - jQuery Mobile的剑道UI对比
7个最有名的HTML5移动框架 -名称告诉一切
7个鲜为人知的HTML5移动框架 -名称告诉一切
Answer 2:
如果你的应用简化版,具有动画效果,简单的我喜欢在的时候,我们可以在多种类型的移动操作系统的推出量较少的网页(PhoneGap的)CZ创建。 如果你的应用程序中含有较多的用户界面效果和动画的话,就最好去与本土..
即使你的WebView发展(PhoneGap的),你需要学会在Android和iOS的一些基本步骤
PhoneGap的如何执行的设备
iOS上的动画和视图装载iOS中的WebView被困性好,动画效果可以清晰地观察
Android的
我们必须考虑为Android设备版本和设备公司,同时运行的HTML代码,在Android的一些高配置设备给予更清晰和高效的动画显示,但有些设备(主要是旧版本,一些公司的设备)不能提供良好的动画效果,渲染效果从装置在机器人变化的装置,
Answer 3:
在我与PhoneGap的愚见你可以简单下发展应用,仅此而已。 该文件是不够的,像其他人说你会花更多的时间修复bug和寻找插件不是建立您的应用程序。 我会做学习Android或iOS或任何的努力,把它看作是你的时间投资 。 (是的,我的意见是有点偏)。
Answer 4:
最后我看着它的PhoneGap是所有的HTML,CSS和JavaScript。 所以,你可能会感到宾至如归。 PhoneGap的可以处理GPS位置,请参阅本文从PhoneGap的文档。 无论你是否想拿起目标C将取决于多快你拿起新的语言,因为它是一个有点从网络发展的一个出发。
Answer 5:
这完全取决于你的需求
发布我的第一个应用程序数月(原生的Android,数据库驱动的,宁静的连接应用程序)后,我决定用PhoneGap的重写我的应用程序(因为我想克隆应用到iOS,所以不是在ObjC这样做,为什么不JavaScript的?)
当Android上,非常贵,一个Java开发者,3周的学习和代码一切从头开始。 撞我的头在墙上几次如何从我的服务器,如何主题应用程序(挺难在我看来,特别是当它涉及到像透明边框,特效制作与RESTful服务的ListAdapter同步... ),而且,如何有效地组织你的代码库(如果你熟悉Java,你会发现,所有的类都非常连接到每个人,因为这是大多数教程写)
当PhoneGap的,一切都在1周内完成。 CSS,HTML,与onsenui
和angular
进行GUI开发一样,约1年学生的分配和主题化只是一块蛋糕。 我并不需要真正的设备上运行,只是在开发过程中使用的浏览器,更改密码,刷新就足够了。 Angular
提供2路与DOM结合,并且该收集和显示数据时使一个巨大迷死。 例如:
<ul ng-each="for sentence in sentences" >
<li>{{ sentence.title }} </li>
</ul>
当可变sentences
被改变(从服务器检索)时,DOM自动改变为好。 然而,JavaScript是唯一的JavaScript。 我发现自己挣扎着很多的时间调试应用程序时,特别是与PouchDB做MapReduce函数时(大误,不得不回去cordova-sqlite-plugin
今晚)和大部分时间,我都在日志中顺序读取找出问题(Chrome的工具和萤火虫抓不住断点)。 此外,它是很难调整你的应用程序(JavaScript的,再次),所以如果你没有在第一个迹象精心组织你的代码库,你可能会一团糟结束(和调试是一个真正的痛苦,再次)。 PhoneGap的也是基于Web的,所以有的时候,你会听到“因为在这个平台上,它不支持唧唧歪歪”(例如, localStorage
),你必须支持这件事,如果你不能找到任何好的插件。
结论除基于网络的存储的限制,PhoneGap的工作得很好与数据库驱动的,简单的GUI应用程序(和大多数数据库驱动的应用程序目前有一个简单的GUI反正)。 如果你要开发一种应用程序,然后坚持下去
Answer 6:
检查出使用离子 ,通过angular.js为后盾,以抵消一些公认的答案中提到的利弊。 教程推出雇员目录应用程序: http://coenraets.org/blog/2014/02/sample-mobile-application-with-ionic-and-angularjs/
Answer 7:
@Gajotres写了很大的反响,但混合的应用程序的性能已经从2012年我回答了一个很长的路要走相关的问题 ,涵盖在2017年混合动力和原生应用开发之间的差异。
这个故事的寓意是,混合型应用开发在过去几年有了很大的改善,但仍不能满足本地对某些使用情况。
有了这样的工具离子(在首次发布2013 )和响应本地(在第一次发布2015年 ),这是比以往要构建具有类似天然的成分混合的应用程序更加容易。 混合应用程序现在要更快一些,bug更少,并且能够与本地UI更深入地互动。
对于混合的应用程序性能的门槛不只是几年前大幅走高,但仍有上,你可能需要开发你的应用程序在本地语言的一个点。
原来的答案:
是的,普遍的想法是,混合应用程序是逊色于原生应用。 虽然这可能是令人沮丧的开发人员更熟悉网络技术,它的确有很好的理由:
- 无法和原生组件交互 :虽然插件,如
cordova-plugin-statusbar
的存在,也有局限性交互和操作使用Web技术的本地组件。 一个伟大的(和令人沮丧的)问题,我亲自碰到的是不能有在他们的键盘作为键盘动画在顶部的输入。这听起来像一个不成问题的问题,直到你看一个应用,在那里,这是一个基本特征,如像松弛聊天应用。 - 300ms的延迟 :虽然现代浏览器都开始逐步了这一点 ,第二延迟出现在混合应用的比例,使应用感觉迟钝和非本地。 随着越来越多的用户采用变通方法,如这一问题已被越来越少的一个因素FastClick.js和一些框架,比如离子默认消除它。
- 仇敌是正确的(排序):而目前混合型应用的发展已经走过了很长的路要走,还有轻微的毛刺和laggy功能,这些功能只是没有出现在本机应用程序。 屏幕转换,应用切换和电池寿命仍然是漏洞出现,可能会持续一段时间,即使他们也开始变得越来越少,明显的公共区域。
- 有一些伟大的原生解决方案 :随着诸如苹果公司的新的语言斯威夫特它正变得更容易编码的母语。 话虽这么说,工具,比如阵营本地允许开发者在友好的技术如JavaScript代码,但编译为本地代码分为本地和混合动力之间的灰色地带。
这个故事的寓意是,它实际上取决于什么对你的具体使用情况很重要。 混合应用已经成为一个可行的选择,不再是一个尴尬的一面展现。 相反,仍有尚未能除与本机应用程序与本地UX交互的次要方面。
总体来说,我建议映射出你的项目,并确定您的应用程序需要任何的本机应用程序的好处。 有了工具,如离子查看应用程序很容易放在一起你的应用程序和测试的基本样机的真实设备混合式应用程序是否会为你工作的。
Answer 8:
还有团结的PhoneGap和原生UI很好AppGyver类固醇。
与类固醇可以像本地标签,本地导航栏,本土动画和过渡,原生模式窗口,本地抽屉/面板(Facebook的侧边菜单)等,以您的PhoneGap的应用程序添加一些东西。 基本上,任何地方CSS + JS不剪,类固醇伸进原生层来执行操作。
此外,类固醇,你可以(虽然你不必)使用多页面架构(多个网页视图),而不是单一的。 对于单页的应用程序,如转换所有的东西都只是CSS的解决方法,并作为玛尼说,即使是现代平板电脑和手机都没有足够快,使他们顺利。 它总是显而易见的,当它是一个PhoneGap的应用,尤其是当你有一大堆的流程走,或者如果您滚动,因为JS过程haulted(固定iOS中8)。
使用多页架构意味着你得到100%的原生性能(因为这些部分实际上是本机)。 不像PhoneGap的,你会得到一致的用户界面行为,更容易调试(含单页的应用程序,它往往很难重新创建你的应用程序特定状态)。 多页使得它更容易开发和维护你的应用程序,因为你的代码保持清洁。
检查演示: http://youtu.be/oXWwDMdoTCk?t=20m17s
Answer 9:
这里我也找了每一篇好文章http://www.comentum.com/phonegap-vs-native-app-development.html ,它在不同类别的这两种方式进行比较。
该摘要如下:
- 接口设计 (同)
- 成本 (混合有优势)
- 开发时间表 (混合有优势)
- 用户体验和性能 (本地有优势)
- 可维护性 (同)
- 没有限制 (本地有优势)
- 安全性 (相同)
- 支持和资源 (本地有优势)
- 工具和调试 (本地有优势)
- 独立平台 (混合有优势)
- 人气 (同)
Answer 10:
一个被忽视的伟大的选择,这里是与Xamarin发展。
尽管它不利于利用OP的Web开发人员的技能,它具有比PhoneGap的许多优点,几乎没有缺点。
Xamarin VS PhoneGap的优点:
- 成熟的框架提供访问大部分(如果不是全部)移动设备的原生功能。
- 只学一种语言(C#为大多数开发人员)为所有移动平台。
- 对iOS版/ Windows Mobile的(因为应用程序被编译到本机代码)和Android上非常接近一个(它仍然编译为本地APK,但必须有一个瘦包装器,转换.NET类库API本机应用程序的性能到在运行时的Android类API)。
- 微软支持平台本身和开发工具的整体大方质量维持。 例如,您将使用Visual Studio和它大概在最好的IDE,现在有免费社区版与每一个功能可用,你需要为Xamarin发展。
Xamarin VS PhoneGap的缺点:
- 需要一些时间投资纯Web开发人员切换到C#和Xamarin类库API。
因此,Xamarin是跨平台开发时下一个非常坚实的选项。
文章来源: Struggling between native and phonegap, simple app requirements