PhoneGap和Cordova的区别

Cordova历史发展

  • ・2009年通过iPhoneDevCamp之后,加拿大Nitobi开发了PhoneGap
  • ・2011年7月28日PhoneGap1.0.0发布
  • ・2011年10月Adobe收购了Nitobi,并把PhoneGap的核心代码codebase捐给了Apache基金会,但保留了PhoneGap的商标所有权
  • ・2011年Apache最开始孵化这项目时用的名是ApacheCallback(PhoneGap1.1.0)
  • ・2012年PhoneGap更新到1.4版本后,用Nitobi旧址的街道名Cordova重新命名了这个项目,更广的用户和贡献者、管理透明、更好的文档;但是也产生了品牌歧义(Phonegap、Cordova)
http://en.wikipedia.org/wiki/PhoneGap

所以,可以把PhoneGap理解为Cordova的一个distribution,但它或多或少的和Cordova有所不同,当然很多不同也是因为要支持PhoneGapBuild的。PhoneGap和Cordova的关系就如同Safari和WebKit的关系。

PhoneGapisadistributionofApacheCordova.

前提版本:

引用
#cordova -v

3.4.1-0.1.0

#phonegap-v

3.4.0-0.19.21

(1)CLI

从以下的依赖关系可以看出PhoneGap实际上内部就是使用了Cordova。

引用

查看命令的说明:

引用
#phonegap help

#cordovahelp

官方说明:

https://github.com/apache/cordova-cli

https://github.com/phonegap/phonegap-cli

最常用的命令都是相似的,Adobe给PhoneGap添加了一些Cordova没有的特性,比如remotebuild。

1)create命令

引用
E:\projects>cordova create c1

Creatinganewcordovaprojectwithname"HelloCordova"andid"io.cordova.hellocordova"atlocation"E:\projects\c1"

引用
E:\projects>phonegap create p1

[phonegap]theoptionsE:\projects\p1com.phonegap.helloworldHelloWorld

[phonegap]createdprojectatE:\projects\p1

phonegapcli命令中不能指定name和id,需要手动修改config.xml

参考:https://github.com/phonegap/phonegap-cli/issues/263

2)build命令

phonegapbuild统一了Cordova的以下命令:

  • cordovaplatformadd
  • cordovaprepare
  • cordovacompile

3)serve命令

  • phonegapserve不需要添加平台直接使用,默认端口3000
  • cordovaserve需要添加平台后使用,默认端口8000

4)local/remote命令

“phonegaplocal*”

  • build<platform>buildaspecificplatform
  • install<platform>installaspecificplatform
  • run<platform>buildandinstallaspecificplatform
  • plugin<command>add,remove,andlistplugins

“phonegapremote*”

  • loginlogintoPhoneGap/Build
  • logoutlogoutofPhoneGap/Build
  • build<platform>buildaspecificplatform
  • install<platform>installaspecificplatform
  • run<platform>buildandinstallaspecificplatform

cordovaemulate等价于phonegaplocalrun。

cordovacli更像是Phonegap的localbuild。

https://github.com/phonegap/phonegap-cli/blob/master/lib/phonegap/util/platform.js

'local'=>cordova-cli

'remote'=>PhoneGap/Build

phonegap的project命令都会判断是否该工程下有.cordova文件夹。

Cordova判断的是wwwplatformsconfig.xml

(2)Project

1)www/spec

jasmine的测试代码

2)www/res

phonegapbuild支持icon和splash

3)config.xml

文件位置

phonegap:/www/config.xml

cordova:/config.xml

***cordova也支持读取www下的config.xml

文件内容:

<iconsrc=""/>

<gap:splashsrc=""/>

<gap:pluginname="org.apache.cordova.camera"/>

4)index.html

<scripttype="text/javascript"src="cordova.js"></script>

<scripttype="text/javascript"src="phonegap.js"></script>

cordova.js和phonegap.js的内容完全是一样的,而且phonegap的native工程里也有cordova.js。

(3)Plugin

phonegappluginadd是用于phonegaplocalbuild的,phonegapremotebuild的plugin需要在config.xml中添加,互不相干。

(4)其他

  • Phonegap独有功能:PhonegapBuild、PhonegapEnterprise、PhonegapDeveloperApp等。
  • Phonegap使用Cordova,但是各自管理版本,一般Cordova先发布,Phonegap会随后才支持新版。
  • PhonegapBuild里只能使用Phonegap的插件,而Cordova可以导入任意插件。

参考:

http://blog.tiger-workshop.com/difference-between-phonegap-and-cordova/

相关推荐