【发布时间】:2011-11-21 13:26:56
【问题描述】:
我很想知道与使用 Android 相比,使用 Phonegap 是否有任何缺点或限制。我们还能做哪些其他平台无法完成的事情?
为什么要专门选择 Phonegap 而不是 Android(除了预算或跨平台兼容性),反之亦然?我正在寻找有理由的明确场景。
【问题讨论】:
-
@bluefeet 为什么说这太宽泛了?
我很想知道与使用 Android 相比,使用 Phonegap 是否有任何缺点或限制。我们还能做哪些其他平台无法完成的事情?
为什么要专门选择 Phonegap 而不是 Android(除了预算或跨平台兼容性),反之亦然?我正在寻找有理由的明确场景。
【问题讨论】:
完全披露我是 PhoneGap 的 Android 实现的核心提交者之一,所以我的意见可能有偏见,但我认为我是公平的。
要回答您的问题,这实际上取决于您的要求。您已经忽略了预算和跨平台,这是 PhoneGap 的两个主要优势。例如,如果我从不打算针对除 Android 之外的任何平台,我可能会选择原生 Android 开发,但如果我们要开发其他平台,我会选择 PhoneGap。另外,我想看看我的团队,他们是核心 Java 程序员吗?去安卓。他们是 HTML 开发人员吗?使用 PhoneGap 或纯 HTML5。
另外,这取决于您编写的应用程序类型。第一人称射击游戏,去安卓。一个表格驱动的数据应用程序,PhoneGap 是要走的路。
无论如何,如果不知道您正在尝试开发哪种类型的应用程序,很难具体说明。
【讨论】:
PhoneGap 专业人士
PhoneGap 是多种情况下的绝佳解决方案:
多平台:由于应用程序的前端是使用网络技术构建的,因此可以跨不同平台部署具有完全相同源代码的 PhoneGap 应用程序。
访问基本的本机功能:如果应用程序需要对本机 API 的访问最少,例如相机、地理定位和联系人,PhoneGap 只需几行 JavaScript 代码即可访问这些 API。
离线使用:虽然该应用是使用网络技术构建的,但它仍然可以提供离线功能,并且可以访问浏览器的本地缓存。
PhoneGap 缺点
由于应用程序的前端是用 JavaScript 构建的,因此会造成许多限制。
数据处理:原生语言在设备上的数据处理速度比 JavaScript 快得多。
后台处理:大量应用程序依赖后台线程来提供流畅的用户体验:例如,在后台计算 GPS 位置。 PhoneGap API 是使用非多线程 JavaScript 构建的,因此不支持后台处理。
访问高级原生功能:PhoneGap 的 API 尚不支持许多原生 API。
复杂的业务逻辑:许多应用程序(例如企业应用程序)非常复杂。在这种情况下,最好有一定数量的本机代码。
高级图形:使用只能通过第三方库访问的高级图形的应用最好在本地完成。
【讨论】:
构建移动网络应用的好处: 1) 只需要 HTML5/CSS/Javascript 技能与 Objective-C 或 Java。我们通过使用 Mobl (http://www.mobl-lang.org) 让事情变得更加简单,这是一种特定于域的语言,用于创建可编译为 javascript/html 的移动 Web 应用程序。 2) 适用于所有平台(iOS、Android、Windows 7、移动网络)的单一代码库 3)快速测试和部署(直到你Phonegap它,此时你会受到App Store审查条件等的约束) 4) 使用 Phonegap,您仍然可以通过 App Store 或 Android Market 进行分发和集成支付
缺点: 1) 性能不佳,尤其是如果您的应用程序图形密集,即游戏。您可以实现缓存或利用一些 3rd 方解决方案(即 Sibblingz)来加速本机图形,但在大多数情况下,本机应用程序比移动 Web 应用程序更快/更流畅 2) 缺少预先构建的 UI 小部件、过渡、标准控件等。您的开发时间可能会花费更长的时间,尤其是如果您想要一个外观精美且具有原生外观和感觉的应用程序。您可以尝试将 Sencha Touch、JQ Touch 或类似工具与预构建的 UI 元素一起使用,但您可能仍需要花费大量时间来设计应用程序以使其看起来像原生。
那么,您应该构建移动网络应用还是原生应用?如果您正在构建一个涉及图形或涉及任何计算成本高昂的操作的应用程序,请确保使用原生工具,因为这些工具还没有使移动 Web 应用程序的工作变得容易。如果您构建的东西相当简单,并且不需要任何原生样式或设计润色,请使用移动网络路线。
【讨论】: