- Eclipse or Android Studio (For Android)
- Visual Studio (for Windows Phone)
- XCode (for iOS)
- Web Storm (Device Agnostic)
- Sublime Text (or any text editor)
Regardless of which method you start with, it is fairly easy to port your code to another platform for example, if you start developing your app for Windows Phone, it is fairly easy to then take your PhoneGap source code and move it into an Android environment.
PhoneGap was originally an open source project that was bought out by Adobe. Since then, Adobe has retained the name ‘PhoneGap’ for its particular commercial offering, but has kept the underlying technology as open source. The underlying open source project is now call Cordova.
How Does PhoneGap Work
Nowadays practically all mobile devices have an web browser and have excellent, standards compliant support for HTML5 in that browser. At its core PhoneGap creates an application that is basically a web browser that hosts your HTML5 application.
Its important to understand that the web browser PhoneGap uses is still provided by the operating system, and as such provides the same level of HTML5 support (as the standard OS browser). This means that when developing your PhoneGap application you cannot assume that the full HTML5 specification, mobilehtml5.org provides an excellent resource for listing which devices support what. This means that (depending on what you’re targeting) you’ll probably need to use progressive enhancement when making your app. That said modern mobile devices tend to provide pretty good support for HTML5, so you don’t have to worry about dealing with the nuances of browsers such as IE6/7.
Abstracting the Native Operating System Features
I will put in a caveat here – you still need to account for the fact that not all devices have the all the same features. For example, some devices may not have a camera (its pretty unlikely these days though).
The Key Components
A PhoneGap app generally consists of the following core pieces:
- A OS Specific Wrapper: This is the bit that’s specific to the OS your building for, that allows PhoneGap to build and deploy your source code.
This means that whilst you are developing in pretty much the same way for any OS, there is an element of the project that will be specific to the OS. This means for example, that if you want to deploy an app that was originally developed in an Android environment, to an iOS environment, you will need to build up the iOS wrapper. This wrapper basically consists of a folder structure, some boiler plater code, a way to compile and various other things related to things like signing etc.
Building up this wrapper is a pretty straight forward process, and the PhoneGap’s tools provide simple command line calls to do this so it isn’t something you worry about. What is important though, is to understand that a part of your project is OS specific, and part of your project is not. That is unless you want to use a service like PhoneGap build.
What is PhoneGap Build
PhoneGap Build is a service by Adobe that can make building and deploying PhoneGap applications to multiple devices simpler. As previously mentioned, building your HTML5 app for a specific environment requires an environment specific wrapper – this can slow down the development process for several reasons:
- You have to create and maintain that wrapper for each target OS
- You have to build each OS version independently
- You may have to maintain a source control structure with linked files
To alleviate this, PhoneGap Build provides a simple to use service that allows you to upload your HTML5 source code and let it doing the building for each different environment. In addition to this, it also provides some cool features for rolling out updates during the development process. This could allow you develop locally with nothing more than a text editor and a web browser, but still build and deploy to multiple devices.
Advantages of PhoneGap Build
There’s a lot great about PhoneGap build:
- Speed up the building process
- Simplify your source control structure
- Simplify your development deployments
- No need to maintain several different OS wrappers
Disadvantages of PhoneGap Build
That said there are some downsides:
- PhoneGap build isn’t free (as of writing this it is free for 1 app)
- The version of PhoneGap used by PhoneGap build tends to lag behind the latest PhoneGap version.(as of writing this PhoneGap is at version 3.3, and PhoneGap Build is supporting 3.1)
- Deploying a new development version requires a good web connection for both deploying and receiving
I should also mention that Telerik have a similar service call Icenium.
Choosing PhoneGap as your mobile app framework can be a smart move if you want to deploy you app cross platform or you want to leverage existing HTML5 skill set. It is a powerful framework, and can provide a quick way to build and deploy mobile apps. That said it does have down sides such as performance and impaired user experience, so it is certainly not the solution for everyone.
In a future article I’ll get into choosing between PhoneGap and native, and when you might be best selecting one over the other.
What are your thoughts on hybrid platforms? Is it something you’ve considered or used? What were your experiences with them?