什么时候最好不要使用Phonegap?

时间:2012-08-06 13:45:47

标签: android ios wcf cordova

我计划为多个操作系统(包括Android,IOS,WindowsPhone)开发移动应用程序(我的第一个) - 在野外互联网中,我找到了一个名为phonegap的框架,作为最小化开发过程的可能性解决方案。 我理解phonegap的优点 - 但找不到真正的缺点...... 1。)所以问题是我为什么不使用phonegap?

2。)phonegap是否只是速度较慢,因为它包含在操作系统内部,如果是的话要慢多少?我的意思是你真的可以告诉原生应用和手机之间的差异,或者只是当你需要硬件加速时,例如用于游戏?

关于该项目的更多信息。目前我有几个'.Net'服务和提供商,通过WCF进行通信。应用程序应该能够从服务中接收和发送视频流和音频数据,例如提供商可以这样做。

3。)是否可以使用phonegap,还是应该坚持原生应用?

5 个答案:

答案 0 :(得分:40)

所有跨平台框架(包括HTML)通常都有相同的优点和缺点。

<强>优点:

  • 在每个目标平台上编写一次相同的代码。

<强>缺点:

  • 它的工作方式往往不是那么精彩。
  • 通常性能低于本机实现。
  • 有些人也有自己的小工具集,看起来不合适。
  • 由于个别平台怪癖,你仍然需要在任何地方进行测试。
  • 您获得功能的最低公分母访问权限。当支持本机功能时,通常只能以一种方式访问​​它:可移植框架的方式。这有时与目标平台的首选方式不一致。
  • 如果您可以访问目标平台独有的功能,则会失去随处运行的可移植性。
  • 每个所谓的“跨平台”框架本身就是一个平台。请参阅前面关于怪癖的观点:现在,您不必知道N个平台,而是必须知道N + 1.

为了获得针对多个平台的最佳结果,我建议如下:

使用定义良好的API,干净利落地设计您的核心逻辑(不使用任何UI的部分)。使其足够通用,可以在环境之间轻松移植。 (在Objective C与Java中SQLite真的不同吗?)

按照目标平台的最佳实践设计您的UI,使其在每个平台上看起来很棒(并且适合)。 (对于Android,请参阅http://developer.android.com/design)让UI通过您创建的API与核心逻辑进行交互。

答案 1 :(得分:16)

我已经开发了本机和HTML包装器,如Phonegap。虽然Phonegap可以减少必须使用2-3种不同语言进行编码,并且可以对2-3个代码库进行更改,但是如果您希望有一个人们想要使用的应用程序仍然使用原生代码。我实际上只是在Phonegap中开发一个应用程序,并最终用本机代码重写它,因为它对于期望来说还不够好。

虽然你的游戏或应用程序对于HTML包装应用程序来说可能很棒,但最终用户只会注意到加载和反应时间较慢,即使它们非常轻微。

IMO Phonegap应仅用于进行非常少量数据操作(显示和编辑)且不进行强烈处理的应用程序(即游戏)。

应用程序市场极具竞争力,所有顶级应用程序和你看到的游戏都是本机代码(它们是有原因的)。

答案 2 :(得分:11)

Adob​​e的AIR平台是phonegap的绝佳替代品,可以在任何地方进行部署,而不是本机应用。它还具有出色的硬件加速功能。它包含一个webkit实现,因此您可以根据需要使用Web标准,并且开源apache flex项目提供了很多。 Flash构建器是基于eclipse的优秀编码环境。除了游戏方面的巨大进步外,我们很快就会看到更多数据驱动的AIR应用程序。 As3是面向对象的,非常好用,加上flash专业版动画到插画家和Photoshop的大量工具集都是世界级的。

答案 3 :(得分:4)

我在一家公司工作,每个应用都需要,制作所有可能版本的移动版本。真的,如果你需要使用特定类型的应用程序,如无线电流,GPU访问,相机过滤器或任何你可以命名的东西..去原生。

在我个人看来,即使在Android上,手机间隙也很慢。我不知道是不是因为我使用iOS,或者我有高标准。与本机合作将始终为您的应用带来更多品质。

我理解使用手机间隙可以让事情变得更快,但前提是你正在制作一个简单的移动应用程序......只显示信息或某些形式。

对于硬件/软件方面,您会发现本地更容易开发这些内容。 iOS几乎掌握了一切。我不知道android,但也不应该那么复杂!

答案 4 :(得分:2)

Phonegap使用WebViews,因此它是一个网站,您正在构建并包装到本机容器中以将其部署在应用商店中。 对于基本的应用程序,如果您是一名Web开发人员,最好采用这种方式开发应用程序,但如果您希望获得目标的全部优势和原生特性,那么开发本机应用程序要好得多。 希望有所帮助。