Overview
UPDATE: This was originally posted January 18th, 2011. All 3 platforms have changed immensely since.
I have been charged with deciding on a mobile framework for deploying a single code base to multiple devices (iPhone, iPad, Android, Blackberry). Naturally, I was gravitating towards Adobe Air since most of my personal work these days has been in AS3. I wanted to see what else was out there, though, and was pretty surprised that Adobe Air wasn’t my choice in the end.
In addition to one other commercial platform I did not fully assess (too expensive), I looked at Adobe Air for mobile, Titanium Appcelerator and PhoneGap. All are free to use frameworks for centralized mobile development. The gist is to be able to create apps for multiple devices off the same code base. With iPad & Blackberry support, speed to market, and the ability to use Contacts & Multitouch as my critical points, I began digging.
General Functionality
Titanium Appcelerator | PhoneGap | Adobe Air for Mobile | Notes | |
Android Support | Adobe Air requires Android 2.2+ | |||
iPhone/iPad | Adobe Air creates iOS apps with the Packager for iPhone | |||
Blackberry Phone | Appcelerator support is currently beta. | |||
Blackberry Playbook | Appcelerator support is currently beta. | |||
Symbian | ||||
Palm | ||||
Windows Phone 7 | phonegap-wp7 is a 3rd party attempt for PhoneGap. | |||
Native UI support | PhoneGap and Adobe Air both require 3rd party libraries. PhoneGap has UIControls for PhoneGap. Adobe Air has as3iPhoneComponents and android-components | |||
Native code support | Appcelerator allows module development. PhoneGap uses custom Javascript handlers. | |||
Desktop deployment | PhoneGap has 3rd party libraries on Github: phonegap-mac & phonegap-windows | |||
Deploy without Mac? | Adobe Air uses the Packager for iPhone/iPad | |||
IDE & Tools | Titanium Developer | PhoneGap Tools | Flash Builder, FDT, FlashDevelop | Appcelerator has no current IDE, but recently acquired Aptana |
Interpreting | Javascript mapped to native code | Rendered in web view control | Adobe Air runtime | |
Community Resources | Developer Center | Docs, Wiki, IRC, and Mailing List | Mobile and Devices Development Center | |
Languages used | JS | HTML, JS, CSS | Actionscript3 | Appcelerator also uses PHP, Ruby, and Python for desktop app development |
Support | $2,189 per year per developer | ranges from $1,000 - $25,000 per year | Adobe Support | Adobe offers no professional mobile support for apps, just their products. |
Device APIs
Beyond the overall support structure of the frameworks I wanted to get into the specific device API functionality. This was a little harder to track down, but the list here should be accurate as of the writing of this post. As I said earlier, contacts and multitouch were the only criticals, but I wanted to know what else these frameworks offered. I’m assuming anyone reading this far would find this information valuable as well.
Titanium Appcelerator | PhoneGap | Adobe Air for Mobile | Notes | |
Accelerometer | ||||
Geolocation | ||||
Vibration | ||||
Camera | Not yet supported Adobe Air for iPhone/iPad | |||
Contacts | ||||
Multitouch | ||||
SQLite | ||||
File System IO | ||||
SMS | All support SMS via the “sms:” URL prefix. | |||
Phone API | ||||
Copy/Paste | ||||
Sounds | PhoneGap cannot record sounds. Adobe Air cannot record sound for iPhone/iPad | |||
Bluetooth | ||||
Video Capture | Adobe Air cannot record video for iPhone/iPad. |
Summary
That’s what I’ve got so far. Let me know if and when some of these assessments change. I’m also eager to hear other people’s thoughts. Feel free to chime in.
The long and short of my recommendations:
- Go Adobe Air if performance isn’t critical and you have AS3 experience. The tools and workflow for using pure AS3 or Flex Hero make turning out mobile apps very smooth. Watch out for performance, particularly on iOS.
- Go PhoneGap if you needed the widest range of support for devices. If you need it to run everywhere, this is your framework. Beware of the less than stellar documentation and wiki, though.
- Go Appcelerator everything else. The native UI and ability to access native code is a big win. Also, the community, IDE, and documentation are top notch. Appcelerator was my choice in the end, but that doesn’t mean its right for you.