32

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

2.) phonegap 是否只是更慢,因为它被包裹在操作系统中,如果是的话,慢了多少?我的意思是你真的能分辨出原生应用程序和 phonegap 之间的区别,还是只有在你需要硬件加速(例如游戏)时才会更慢?

有关该项目的更多信息。目前我有几个“.Net”服务和提供者,通过 WCF 进行通信。应用程序应该能够从服务接收和发送视频流和音频数据,就像提供者那样。

3.)是否可以为此使用phonegap,还是我应该坚持使用本机应用程序?

4

5 回答 5

40

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

优点:

  • 编写一次在每个目标平台上都可以正常工作的代码。

缺点:

  • 它的工作方式通常不是那么美妙。
  • 通常性能低于本机实现。
  • 有些还有自己的小部件集,看起来不合适。
  • 由于各个平台的怪癖,您仍然必须到处进行测试。
  • 您可以获得对功能的最低公分母访问权限。当支持原生特性时,通常只能通过一种方式访问​​它:可移植框架的方式。这有时与目标平台的首选方式不一致。
  • 如果您可以访问目标平台独有的功能,您将失去到处运行的可移植性。
  • 每个所谓的“跨平台”框架本身就是一个平台。请参阅前面关于怪癖的观点:现在,您不必知道 N 个平台,而必须知道 N+1。

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

使用定义明确的 API 清晰地设计您的核心逻辑(不使用任何 UI 的部分)。使其足够通用,以便在环境之间相当容易地移植。(SQLite 在 Objective C 和 Java 中真的有那么不同吗?)

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

于 2012-08-06T13:59:37.213 回答
16

我已经开发了本地和 HTML 包装器,如 Phonegap。虽然 Phonegap 可以很好地减少使用 2-3 种不同语言编写代码,并更改 2-3 种代码库,但如果您希望拥有一个人们想要使用棒原生的应用程序。我实际上只是在 Phonegap 中开发一个应用程序,并最终用本机代码重写了它,因为它还不足以达到预期。

虽然您的游戏或应用程序可能非常适合“用于 HTML 包装器应用程序”,但最终日常用户只会注意到加载和反应时间较慢,即使它们非常轻微。

IMO Phonegap 只能用于执行极少数据操作(显示和编辑)且没有进行密集处理的应用程序(即游戏)。

应用市场竞争异常激烈,你看到的所有顶级应用和游戏都是原生代码(它们是有原因的)。

于 2012-08-06T13:53:50.133 回答
11

Adobe 的 AIR 平台是 phonegap 的绝佳替代品,可用于随时随地部署而不是原生应用程序。它还具有出色的硬件加速功能。它包括一个 webkit 实现,因此您可以根据需要使用 web 标准,并且开源 apache flex 项目提供了很多。Flash builder是一个基于eclipse的优秀编码环境。除了游戏方面的巨大进步,我们可能很快也会看到更多数据驱动的 AIR 应用程序。As3 是面向对象的,非常好,再加上从用于动画的 flash pro 到 illustrator 和 Photoshop 的大量工具集是世界一流的。

于 2012-10-29T00:10:27.763 回答
4

我在一家公司工作,该公司也需要每个应用程序制作所有可能的移动版本。真的,如果您需要使用特定类型的应用程序,例如无线电流、GPU 访问、相机过滤器或任何您可以命名的应用程序……请使用本地应用程序。

在我个人看来,电话差距真的很慢,即使在安卓上也是如此。我不知道是因为我使用 iOS,还是因为我有高标准。使用本机将始终为您的应用程序带来更高的质量。

我了解使用电话间隙来使事情变得更快,但前提是您要制作一个简单的移动应用程序……只有信息或某些表格要显示。

在硬件/软件方面,您会发现本地开发这些东西更容易。iOS 几乎为您提供一切。我不了解android,但也不应该那么复杂!

于 2012-08-06T13:59:06.617 回答
2

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

于 2012-08-06T13:52:49.130 回答