So I know that adobe (or someone else) now provides a way to port your flex app to iphone. This seems to be a good solution when you want to create a multi-platform app that you can port to 3 top mobile OS. I am just wondering however. What are the downside? I am sure that doing it in flex is not as performant as doing it in obj-c or java. But how bad can it get? Are there other downside of doing it in Flex? (vs obj-c for iphone/java for android and bb)
Share
Here are a few considerations:
Performance is one consideration. It seems unlikely that Flash / AIR will ever run as as performant as an optimized Native application. That last part is not unique to mobile, though. The lower level you go, the better performance you can get. C will run better than ActionScript. Assembly code will run better than C. Machine code will run better than Assembly.
No Access to native APIs is another one. In-app billing and contacts are two common requests I see. AIR 3 has introduced Native Extensions as a way to combat this. However, to create a native extension you’re going to have to write native code and compile it in a special way to expose it to the AIR runtime. It is possible, over time, that a bunch of people creative Native Extensions that you’ll be able to use so you don’t have to do the dirty work yourself.
The dependency on an external runtime is another limiting factor for some. What if the user has an old version of AIR and has issues installing your app? In AIR 3, Adobe introduced something called Captive Runtime to combat this. It bundles the runtime as part of the app. It adds about 8MB to the size of the app, but removes the external dependency. Captive Runtime is the only way to deploy to iOS.
Those are the primary limitations I see. I think building with Flex/Flash brings a lot of benefits, but biggest being the ability to deploy easily to multiple platforms. If you’re already knowledgeable about Flash/AS3; building Mobile Apps with that seems like a logical choice.