使用Phonegap进行本机应用程序开发


97

我最近遇到了Phonegap。有没有人尝试过。它是一个令人难以置信的工具,声称开发人员可以同时使用基于HTML 5的框架(如Sencha touch和Jquery)来访问手机上的本机功能。此外,代码还可以通过一些努力从Android移植到Iphone。在深入探讨它之前,我想知道论坛对Phonegap的经验。痛点是什么,它对于企业级应用程序开发真的具有可伸缩性。

Answers:


95

我已经使用PhoneGap构建了几个应用程序,并且它提供的功能很棒。我想指出一些快速提示,这可能对您有所帮助。

Disable device-based features you're not using 加速度计,地理位置功能默认情况下处于打开状态。如果您不使用它们,我会关闭它们,因为您的应用程序将加载(初始化)并运行得更流畅。

onDeviceReady-这是在电话间隙加载并准备就绪后调用的方法。$(document).ready或您惯用的任何方法在这里实际上并不适用-除非您只在做界面/硬编码的HTML东西。如果您要与iPhone功能(如GeoLocation)进行交互,则在调用onDeviceReady 之后需要进行所有操作。

Pick a UI/library 界面/库,jquery-mobile,sencha touch,jqtouch等都有很多选项。这些选项均提供了独特的方法和功能集。做一些研究并使用它,但要避免合并。您可以在此处了解更多选项和工具:http : //www.phonegap.com/tool(更新链接)

Also, more on just mobile development in general, with PhoneGap如果您要构建通过Android市场和iPhone App Store分发的应用程序,那么我会仔细阅读它们的详尽列表,以获取有关如何开发应用程序的指南。例如,在上面的工具链接中,有一个名为“ Easy APNS ”的“工具/插件” -尽管这对Android有用-并且在iPhone上在技术上可行,但它违反了开发协议,因为它指出您必须使用Apple通知网络等。这只是一个例子,但是如果您的最终目标是继续阅读下去,则可以省去很多麻烦。

总而言之,它对轻量级应用程序非常有用,特别是如果您来自Web开发背景。LocalStorage,GeoLocation等。效果很好。我希望这会有所帮助...并希望提出问题。

附加编辑:

我真的认为这取决于您想做什么以及您知道该怎么做。马特(Matt)指出,开发适用于iOS的本地应用程序会更好,等等。但是PhoneGap是为可以利用现有技能和构建应用程序的Web开发人员而开发的。此外,PhoneGap允许您快速构建适用于iOS,Android,Symbian,Palm和Blackberry的应用程序。对每个代码库进行较小的调整。


2
似乎开发人员在Phonegap上存在分歧。
SaKet'3

8
如果一天结束时,您有时间和金钱来学习不同的语言,以构建适用于Android和iOS的本机应用程序-则一定要这样做:)但是,对于我们大多数人来说,我们都使用已知的知识来构建可运行的应用程序在多种设备上都非常好,这是不费吹灰之力的。
TNC

easyapns仅适用于iPhone通知(非android),并且确实使用Apple通知网络,不确定您从何处得知它违反了开发者协议
Traveling_Monk

很好的解释..谢谢:)
Mrunal

一个好的调试器是您最好的朋友。

52

这是我为《 PhoneGap》阅读的所有最佳性能指南。为了确保您获得稳定,稳定的性能,请多加注意。

以下是最好的金块:

PhoneGap /移动Web性能提示

启用新功能

建筑

在Ext JS 4中架构您的应用程序:http : //www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-2


1
大量的文档资料..真的很有帮助,谢谢:)
Mrunal

29

在表达对Phonegap的看法之前,我需要发表一点免责声明,说我绝不是Web开发人员。对我来说,编写JavaScript和CSS就像在咬牙。就是说,我不喜欢Phonegap。

该框架有一些非常吸引人的方面,主要是“ Write-Once-Run-Anywere”呼吁和“ I-Don't-Have-To-Learn-Objective-C?”。上诉。该框架甚至可以让您访问某些硬件功能,例如加速度计。所有这些在一定程度上都是有效的。

也就是说,没有一款出色的iOS应用是使用任何类型的跨平台框架构建的。原生UIKit控件为您处理了许多微妙而优雅的UI交互,许多用户和开发人员将其视为理所当然,直到它们丢失为止,例如,大量令人难以置信的详细视图动画曲线和滚动跳动不存在在基于Web视图的UI中。您可以辛苦地复制它们,但是在那段时间里,为什么不花本钱?

要注意的第二点是,Phonegap构建的iOS应用程序的支持社区比本地开发的应用程序小得多。如果您在项目期间依赖社区,那也应该让您停下来。

最后,这取决于您要提供的体验质量。Phonegap的上限较低。如果您准备接受差强人意的用户体验以换取缩短的开发时间和增强的可移植性,那么它就是一个非常可行的框架。

作为感兴趣的潜台词,Marco Arment和Dan Benjamin最近讨论了该主题。你可以在这里听。


5
+1关于社区规模的要点。
David Tang

5
+1关于用户体验的要点。在iOS中确实很重要。

1
您也可以在phonegap中创建相同的用户体验。我认为这不是学习目标c的问题。随着其他移动操作系统的流行:Androi现在,让我们看看Windows Mobile和Firefox OS会发生什么……如果您不希望局限于iOS拥有的x%市场份额,那么跨平台解决方案将是THE解决方案。
memical

1
@ memical,Facebook开发团队可能与您不同意。我并不是说从市场覆盖范围的角度讲这没有任何意义,而是说它的表现不如本土产品。尽管您说了什么,但这是事实。
Matt Wilding

4

安装过程涉及许多软件包(Java,Apache Ant,Ruby,iOS SDK,Android SDK和PhoneGap本身),都必须正确安装和设置。这可能是一项巨大的努力。公平地说,他们在Beta版中有一个称为PhoneGap Build的东西,应该可以使此操作变得更加容易。

我们将其与NS Basic / App Studio结合使用来生产符合应用商店资格的应用。


一年后,在Adobe收购了最初的开发商Nitobi之后六个多月,PhoneGap Build仍处于测试阶段。
DOK 2012年

2

如果您既不制作游戏,也不制作小部件,则只是简单漂亮的应用程序,然后选择phonegap。

但是您应该注意JS,避免在JS中执行任何操作,例如,如果要执行任何动画,则应避免以较小的间隔(例如100 ms)设置计时器,避免使用jquery和类似的动画。例如,与其通过设置一个短周期的计时器来逐步降低每个点的不透明度来动画化淡入(这是jquery淡入工作的方式),您应该使用从不透明度1到不透明度0的css3过渡。

我的建议是使用zeptojs.com之类的东西,毕竟所有的phonegap都不会运行ie6 :-)

查看一些有关如何使JS更轻巧的教程

http://bcksp.blogspot.com/


实际上,您现在也可以制作游戏
记忆式的

1

如果您不需要HTML5和Phonegap提供的任何硬件功能或性能,则封装的Web应用程序(加上对其他功能的部分访问权限)是一个不错的解决方案。

许多企业部署大型Web应用程序。Phonegap(或者只是带有嵌入内容的普通Web视图控件)将使您可以脱机运行这些Web应用程序(当然,对于所需的任何在线数据除外)。


0

在多个不同的设备之间进行部署时未提及的“痛苦”:设备越多,学习曲线就越大。要使用PhoneGap部署到iOS设备,您需要学习Mac上Xcode的基础知识。要部署到Android,您需要安装和学习Eclipse,Android SDK等。其他平台要求使用自己的SDK。学习一些基本的Xcode,Javascript和Java有助于我理解错误和常规语法。

“一次创建,到处部署”省去了很多步骤!

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.