In my previous post I wrote about the most important aspects in mobile development in general as well as some specifics to the project in hand. In this post I will drill down into finer detail as to the available options based on the list of development time, performance, style, accessibility options, support and documentation.
Below are the options available to me…well actually there are many more than this, but I’m focusing on the options I either have at least some existing experience with or that I think the app will benefit form using the most, even if it means a lot of learning on my part.
Developing specifically for iOS you really only have one option – Xcode. And for Android you have something like Eclipse though there are other options. Developing using the devices native frameworks is the best way to go to get maximum performance. But it means literally developing an app twice, and what if you want to develop for Blackberry, Windows etc? Every update would be required for each platform. Therefore at the moment this simply is not an option. So despite being by far the best option for performance, this isn’t going to happen.
Hybrid apps are apps that you program once and then export for multiple platforms, massively reducing development and update times. This is definitely the way I’ll be going for this project. But there are plenty of hybrid options…
A lot of people say ‘Flash is dead’. Yes mobiles generally do not support Flash anymore but Adobe have brought a new player to the game in Stage 3D. Using software such as Flash Builder or Flash Develop (free), you can fairly easily ustilise the performance of Stage 3D for mobile apps and export for multiple platforms including iOS, Android and Blackberry. You can also still export as a good old flash object so you can even view the resource on a standard desktop via a website. This is extremely appealing at the moment. I’ve developed some games outside of work commercially and privately using Adobe Air and the performance is way ahead of HTML5 in terms of performance on mobiles. We’ve also developed some prototype apps here using Adobe Air which worked very well.
There are a few reasons why despite all of the above, I’m not convinced this is the right framework for the job… 1) This project will rely heavily on database driven content and this is something I have yet to do on such a potentially large scale using Adobe Air. I’ve Google’d it a lot and there is some support for how to achieve this but I’m a little wary and feel another option might be more suitable. 2) This framework is great for games and really interactive stuff, but when I’ve tried developing projects with a lot of textual content with Adobe Air, I find it a constant challenge and hassle achieving basic formatting similar to what I’m used to with html and css. Again this is likely down to experience but feel it might be an extra learning curve I’d rather avoid if possible.
PhoneGap (previously Cordova) is now owned by Adobe and is widely used option for web developers with not so much app development under their belts (i.e. me!). With this framework you can pretty much develop as you would a normal website using something like JQuery Mobile or Bootstrap (or both), which helps massively with making it responsive and therefore work on all devices with little extra work. Perfect.
JQuery is widely supported. In my experience its much quicker to find a resolution to a problem when using JQuery over anything else. Not only that but there are many many free to use, open source plugins available that could really help speed up development time.
PhoneGap also has an online build mode whereby you can upload your project and it will do the rest and provide you with the mobile app files required to install to a device. Taking a lot of the hassle away and freeing up time for more important things; developing the project.
Another bonus with PhoneGap is how it ties in with mobile specific features such as camera mode, notifications, file storage etc. Which might come in very handy later down the line.
At the moment PhoneGap is the option I’m leaning towards and think I will go with. Its probably the easiest of the lot to work with, is widely supported and supports many platforms.
The only downside to using PhoneGap over native or Adobe Air is performance. Looking ahead at the priorities of what the app will offer to the end user, I intend to use some animations and gestures but they will be minimal, so I’m hoping this option will work out ok.
Found this post a little confusing?
If you want to know in more detail about the difference between native apps and HTML5 / hybrid apps then this link might be useful.