PhoneGap 3.0 was released at PhoneGap day in Portland, OR last week. There are some great changes with this new release. Historically PhoneGap and Cordova, the open source project behind PhoneGap, were almost identical. This has changed with the release of 3.0.
Prior to 3.0, PhoneGap was distributed as an archive which was downloaded and unzipped to install. Now, both PhoneGap and Cordova are distributed as command line tools, which are installed via the node.js package manager, npm. Both Cordova and PhoneGap can be installed on your machine at the same time.
$ npm install phonegap -g $ npm install cordova -g
The command line tools provide scripts to create projects, add platforms (iOS, Android, BlackBerry, Windows Phone, etc), compile and deploy projects. The new structure makes it easier to support multiple platforms with one project.
$ cordova create hello com.example.hello Hello $ cd hello $ cordova platform add ios $ cordova platform add android $ cordova emulate
With 3.0, the Cordova distribution provides the core functionality to embed a webview (browser) into a native application. Cordova is distributed without any of the plugins installed. This allows you to only install the functionality you need, simplifies your code base, and reduces the amount of code in your app.
To use the Camera APIs, we’d install the camera plugin.
$ cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-camera.git
Raymond Camden’s blog post about Cordova 3.0 for a list of core plugins.
PhoneGap is a distribution of Cordova, similar to how Safari and Chrome are based on Webkit. The PhoneGap distribution of Cordova come with all of the core plugins installed. Additionally the PhoneGap command line adds features like PhoneGap build support. If you don’t have a native SDK installed, the compiling the project can be delegated to PhoneGap Build.
$ phonegap create example $ cd example $ phonegap run wp7
Overall these are great changes for PhoneGap, but may require a changes to your workflow. The payoff is that it’s easier to create projects, manage plugins, and support multiple platforms.