在本机和电话差距之间挣扎,简单的应用程序要求


75

我要成为一个本地人(意思是:不是浏览器中)移动应用程序。由于我是网络开发人员,因此我在努力决定是否应该尝试Phonegap还是只使用Java或Objective-c构建本机应用程序。

应用程序要求很简单。GPS / wifi位置,Facebook集成,我想我需要一个数据库来处理一些特定于应用程序的Facebook朋友关系。例如,像游戏中的高分一样。

我是一名网络开发人员,并且还不了解Java或Objective-c。我以前从未使用过Phonegap,所以我不知道它是否能够满足我的要求。

所以我的问题如下:我可以在应用程序中使用Phonegap,还是需要深入学习新语言?


时间是最重要的因素,这就是为什么我要使用phonegap的原因,尽管页面转换不会起作用。
iOSAndroidWindowsWindowsMo​​bileAppsDev 2012年

...或者只是用Java或Objective-C构建本机应用。如果您没有使用这些平台的经验,则可能需要花费一些时间来构建这些应用程序。
keune 2012年

这取决于应用程序的复杂性。如果大多数页面是静态页面,并且具有访问GPS位置或照相机拍摄个人资料照片等简单功能的功能,那就很好。在任何平台上的低端设备上,您仍然会遇到性能问题(在iOS上较少,但仍然如此)。任何具有大量持久性数据存储,解析,文件系统操作,大量页面,冗长项目列表的中型/大型文件,都可以原生。如果您仍然不确定,请在任何平台上启动任何应用商店,并查找HTML5 /混合应用并进行测试。如果您喜欢他们的表演,那就去吧
Mirko

Answers:


158

有关:

您也可以在这里找到本文的较大版本,要透明起见,这是我的个人博客。

混合与本地应用

混合应用:

优点:

  • 加快开发速度,特别是如果您是一位长期的Web开发人员。
  • 每个可用平台上都可以使用一种语言。当然,这需要一个Phonegap包装器。您无需学习Objective 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,这可能会给开发和测试带来挑战。
  • 如果您没有优秀的设计师,就不要尝试构建应用程序。看起来就是一切。
  • 如果您不知道自己在做什么,那么您的应用很可能不会获得Apple应用商店的许可。如果Google Play商店发现了第3方Phonegap PayPal插件,甚至会禁止您的应用。

本机应用程序:

优点:

  • 本机移动应用程序可以快速流畅地产生最佳的用户体验,可以让您最好地访问设备功能,并且可以在应用程序商店中找到。
  • 毫无疑问,本机应用程序具有对底层移动平台的完全访问权限。本机应用程序通常非常快且完善,因此非常适合高性能应用程序或游戏。这就足够了。

缺点:

  • 预算更大,如果您需要Windows移动应用程序,则至少需要一个具有Java和Objective C知识的人员,甚至C#。是的,您可以自己学习它,但不要生活在幻想中,您会在短时间内这样做。如果您从未进行过任何开发,请选择Objective C(iOS仍然是一个更好的平台)。在其他情况下,请选择Java。Java具有与其他可用语言类似的语法,因此很容易从C#跳转到Java,反之亦然。目标C是它自己的世界。它具有相当不常见的语法。
  • 开发所有这些可能会花费更长的时间,而时间就是金钱。这取决于应用程序的复杂性。

就您而言,如果您具有良好的Web开发/设计技能和/或具有良好的设计师,则应选择混合应用程序。仅当此应用将是一个复杂的应用时,才可以使用本机。您想要的一切都可以通过混合应用程序完成。您会发现一个很棒的支持社区。

混合应用

我以前没有提到的内容在这里需要特别小心。即使您是经验丰富的开发人员,您也会发现很多无法解决的问题。混合开发不应被误认为是基本的Web开发。

每个移动平台都有其自身的一系列问题,更不用说移动电话的行为取决于设备。如果可能,请始终创建可在速度较慢的设备上运行的应用程序,因为本机应用程序可在几乎所有设备上成功运行。

最后一件事,当创建混合应用程序时,应用程序开发将花费您大约30%-50%的时间,其余时间则用于特定的平台调试和学习。相信我,即使经过几年的移动开发,有时我仍会遇到无法独自解决或无法足够快解决的问题。

因此,在选择移动框架时要小心,选择2-3并花几天时间阅读有关它们的信息。

链接

以下是一些可帮助您做出决定的链接:

PhoneGap + jQuery Mobile 1.4教程-这是有关PhoneGap和jQuery Mobile的最新版本的分步教程

PhoneGap + jQuery Mobile 1.4教程-MacOS版本-这是在MacOS上部署PhoneGap的分步教程。上一篇文章介绍了jQuery Mobile部分,没有必要重复。

jQuery Mobile vs Sencha Touch -jQuery Mobile Sencha Touch比较

jQuery Mobile vs Kendo UI -jQuery Mobile Kendo UI比较

7个最著名的HTML5移动框架-名称说明一切

7个鲜为人知的HTML5移动框架-名称说明一切


2
在AppStore /市场中只能找到本机应用程序吗?
Henrik Skogmo

1
混合应用程序也欢迎进入应用程序商店,有时会被拒绝,但本地应用程序也会发生同样的情况。我的第一个混合应用程序被拒绝了,因为我使用的是第三方支付宝插件,而Apple对此不满意。所以不用担心
Gajotres

在过去的10个月里,我一直在js和Phonegap中构建一个中型大型应用程序,我希望我们已经本地化。Phonegap,js和HTML5在一起很痛苦,即使您可以使用某些功能,最新的iPhone和Nexus设备上的体验还是可以接受的,在其他任何情况下,它都会使您将该设备扔出窗外
Mirko 2014年

我觉得很多这样的声明-特别是在性能方面-已经过时了。从我所见,Ionic似乎融合了两全其美。
Rambatino '16

感谢您的意见,现在主要设备中的八核CPU已成为当今的好事物。比本地预算大得多,比PhoneGap低预算。它的明确取决于预算,但两者都有可能。
Tejas Tank '18

16

如果您的应用程序不具有动画效果且简单,我希望在网络(Phonegap)cz中创建时间更少,我们可以在多种类型的移动操作系统中启动。如果您的应用包含更多的UI效果和动画,那么最好使用本机。

即使您使用webview(Phonegap)开发,也需要学习Android和iOS中的一些基本步骤

Phonegap在设备中的性能如何

ios ios webview中的动画和视图加载是混乱且良好的,动画效果可以使观察者清楚地看到

Android
我们在运行html代码时必须考虑android的设备版本和设备公司。android中的一些高配置设备可以提供更清晰有效的动画显示,但是某些设备(大多是旧版本和某些公司设备)无法提供良好的动画效果,渲染效果因Android中的设备而异,


2
我想我很快意识到我想使用Objective-C或Java创建本机应用程序。如果“本机” Phonegap应用程序只是为与UIWebView一起使用而编译的Webapp HTML / CSS / JS文件,那么恐怕该应用程序将受到常规Webapp限制的约束。无法利用本机API。感谢您的回答。
Henrik Skogmo

1
它不仅与动画有关,否则您只需要在低端设备/旧平台上关闭它们即可。整体稳定性,UI响应能力,持久性数据存储,性能问题将使您发疯
Mirko 2014年

@HenrikSkogmo,您可以与硬件进行交互,这就是Phonegap / Cordova的全部目的。尽管有一些限制,但这取决于您要实现的目标
Mirko 2014年

6

以我对Phonegap的拙见,您只能开发简单的应用程序,仅此而已。文档还不够,就像其他人所说的那样,与构建应用程序相比,您将花费更多的时间来修复错误和查找插件。我会努力学习Android或iOS或其他东西,将其视为您的时间投入。(是的,我的评论有些偏颇)。


1
我完全同意,Phonegap和HTML5在移动开发的可行选择上落后了数年
Mirko

这就是为什么在实践中您将其与Sencha Touch或Kendo UI之类的其他东西结合使用的原因。
Tony O'Hagan 2014年

3

最后,我研究了PhoneGap的全部是html,css和javascript。因此,您可能会感到宾至如归。PhoneGap可以处理GPS位置,请参阅PhoneGap文档中的此文章。是否要使用Objective C,将取决于您选择新语言的速度,因为这与Web开发有些背离。


3

这完全取决于您的需求

在发布我的第一个应用程序几个月后(本机Android,数据库驱动的,稳定的连接应用程序),我决定通过使用phonegap重写我的应用程序(因为我想将该应用程序克隆到iOS,所以不要在ObjC中使用它,为什么不使用javascript ?)

在Android上时,我(Java开发人员)花了三个星期从头开始学习和编写所有代码。多次敲打墙壁以了解如何使ListAdapter与服务器上的Restful Service同步,如何对应用程序进行主题设置(在我看来,这很难,尤其是在涉及透明,边框等特殊效果时... ),以及如何有效地构建代码库(如果您熟悉Java,您会发现所有的类之间都非常紧密地耦合在一起,因为这是大多数教程所写的内容)

使用Phonegap时,所有操作都在1周内完成。CSS,htmlonsenuiangularGUI的开发就像大约一年级学生的作业一样,主题化只是小菜一碟。我不需要在实际设备上运行它,只需在开发过程中使用浏览器,更改代码和刷新就足够了。Angular提供与DOM的2种方式绑定,这在收集和显示数据时会产生巨大的麻烦。例如:

<ul ng-each="for sentence in sentences" >
   <li>{{ sentence.title }} </li>
</ul>

当变量)时,如果找不到任何好的插件,则必须坚持。sentences更改(从服务器检索)后,DOM也会自动更改。但是,javascript只是javascript。我发现自己在调试应用程序时花了很多时间,特别是在使用PouchDB进行MapReduce函数时(很大的错误,必须回到cordova-sqlite-plugin今晚),并且在大多数时候,我必须阅读日志以找出问题所在( Chrome的工具和Firebug无法捕获断点)。另外,很难重构应用程序(再次是javascript),因此,如果您在第一个迹象时没有仔细地组织代码库,那么最终可能会陷入混乱(再次调试确实很痛苦)。PhoneGap也是基于Web的,因此有时您会听到“由于在此平台上,它不支持bla bla bla”(例如,localStorage

结束语除了基于Web的存储的局限性外,PhoneGap与数据库驱动的简单GUI应用程序配合得很好(并且大多数数据库驱动的应用程序目前都具有简单的GUI)。如果您要开发此类应用,请坚持使用


2

请使用ionic进行检查,并以angular.js为后盾,以抵消已接受答案中提到的一些缺点。启动员工目录应用程序的教程:http : //coenraets.org/blog/2014/02/sample-mobile-application-with-ionic-and-angularjs/


Ionic不支持Android 4.2,但更糟糕的是处于Beta版。我一直在与jQuery Mobile和jQuery作噩梦,它们已经存在了很长时间,而且它们足够稳定,您能否想象使用Beta框架?
Mirko 2014年

不要恨玩家,不要恨游戏
Connor Leech 2014年

是的,足够公平。我很想尝试一下Ionic,但目前无法选择放弃60%的Android用户
Mirko 2014年

哦,快点!我什至不知道这个问题。看来他们会回滚以支持4.0+,但请关注forum.ionicframework.com/t/…–
Connor Leech

1
仍然有20%的产出...我们正在支持2.3+,直到低于10%。我认为到那时框架将足够稳定;)
Mirko 2014年

1

@Gajotres做出了很好的回应,但自2012年以来,混合应用程序的性能已取得长足进步。我回答了一个相关问题,该问题涵盖了2017年混合开发与本地应用程序开发之间的区别。

这个故事的寓意是,在过去的几年中,混合应用程序的开发已经取得了巨大的进步,但在某些用例上仍然无法与本地应用程序匹敌。

使用Ionic(于2013年首次发布)和React Native(于2015年首次发布)之类的工具,比以往任何时候都更容易使用类似本机的组件构建混合应用程序。混合应用程序现在速度更快,错误更少,并且能够与本机UI进行更深入的交互。

混合应用程序性能的门槛比几年前要高得多,但是在某些时候,您可能仍需要使用母语开发应用程序。

原始答案:

是的,人们普遍认为混合应用程序不如本机应用程序。虽然这可能会使更熟悉Web技术的开发人员感到沮丧,但这确实有充分的理由:

  1. 无法与本机组件交互:尽管cordova-plugin-statusbar存在诸如插件,但是使用Web技术与本机组件交互和操作存在局限性。我亲自遇到的一个重大(令人沮丧)问题是,当键盘进行动画处理时,无法在键盘顶部输入内容。这听起来像是没有问题的,直到您查看某个应用程序是必不可少的功能(例如,在像Slack这样的聊天应用中。
  2. 300毫秒延迟:尽管现代浏览器已开始逐步淘汰此延迟,但混合应用程序上出现的几分之一秒延迟使该应用程序感觉缓慢且不自然。随着越来越多的用户采用诸如FastClick.js之类的变通办法,并且诸如Ionic之类的某些框架默认情况下将其消除,此问题变得 不再那么重要了。
  3. 讨厌的人是对的(尽管如此:尽管混合应用程序开发已经走了很长一段路,但是仍然存在一些本机应用程序中不存在的小故障和滞后功能。屏幕过渡,应用程序切换和电池寿命仍然是出现错误的常见区域,并且可能会持续一段时间,即使它们开始变得越来越不引人注意了。
  4. 有一些很棒的本机解决方案:随着更新的语言(例如Apple的Swift),使用本机语言进行编码变得越来越容易。话虽这么说,React Native之类的工具通过允许开发人员使用友好的技术(例如JavaScript)进行编码,但可以编译为本机代码,从而使它们位于Native和Hybrid之间的灰色区域。

这个故事的寓意在于,它实际上取决于对您的特定用例而言重要的内容。混合应用已成为可行的选择,不再是令人尴尬的副秀。相反,除了与本机应用程序交互外,还存在与本机UX交互的微小方面。

总体而言,我建议规划您的项目,并确定您的应用程序是否需要本机应用程序的任何优势。使用Ionic View应用程序之类的工具 ,可以轻松组合应用程序的基本模型并在真实设备上测试混合应用程序是否适合您。


0

还有AppGyver类固醇,可以很好地将PhoneGap和本机UI结合在一起。

使用类固醇,您可以将诸如本机标签,本机导航栏,本机动画和过渡,本机模式窗口,本机抽屉/面板(facebook侧面菜单)等添加到您的PhoneGap应用中。基本上,在CSS + JS不能切割的任何地方,类固醇都会进入本机层以执行操作。

另外,对于类固醇,您可以(尽管不必)使用多页架构(多个Web视图)而不是单个。对于单页面应用程序,过渡之类的所有事情都只是CSS解决方法,正如Mani所说,即使是现代的平板电脑和手机也不够快,无法使它们流畅。当它是一个Phonegap应用程序时,这总是很明显的,尤其是当您有很多进程正在运行时,或者由于JS进程受重创而在滚动时(在iOS 8中已修复)。

使用多页体系结构意味着您可以获得100%的本机性能(因为这些部分实际上本机的)。并且与phonegap不同,您将获得一致的用户界面行为和更容易的调试(对于单页应用程序,通常很难在应用程序中重新创建特定状态)。多页功能使您的代码库更加整洁,从而使开发和维护应用程序变得更加容易。

查看演示:http: //youtu.be/oXWwDMdoTCk?t=20m17s


0

我还在http://www.comentum.com/phonegap-vs-native-app-development.html上找到了每篇不错的文章,它在不同类别中比较了这两种方式。

总结如下:

  1. 接口设计(相同)
  2. 成本(混合优势)
  3. 开发时间表(混合型具有优势)
  4. 用户体验和性能 (本地优势)
  5. 可维护性 (相同)
  6. 无限制(本机具有优势)
  7. 安全性(相同)
  8. 支持与资源(本地优势)
  9. 工具和调试(本机具有优势)
  10. 平台无关(混合具有优势)
  11. 人气 (相同)

0

Xamarin的开发是这里忽略的绝佳选择之一。

尽管利用OP的Web开发人员技能无济于事,但与PhoneGap相比,它有很多优点,并且几乎没有缺点。

Xamarin vs PhoneGap优点:

  • 成熟的框架提供对移动设备的大多数(如果不是全部)本机功能的访问。
  • 所有移动平台仅学习一种语言(大多数开发人员使用C#)。
  • 在iOS / Windows Mobile上具有本机应用程序的性能(因为将应用程序编译为本机代码),而在Android上则非常接近(它仍可编译为本机APK,但必须具有可翻译.NET类库API的精简包装)在运行时导入Android类API)。
  • 由Microsoft维护,以支持平台本身和开发工具的总体慷慨质量。例如,您将使用Visual Studio,它可能是周围最好的IDE,并且现在具有免费的Community Edition,其中包含Xamarin开发所需的所有可用功能。

Xamarin vs PhoneGap缺点:

  • 纯Web开发人员需要一些时间投入才能切换到C#和Xamarin类库API。

因此,Xamarin是当今跨平台开发的非常可靠的选择。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.