Flex runs on the flash player and hence on the browsers so Flex is for the browsers.And as on last November adobe has
announced that they are not going to be develop and support for the flash player on the mobile browser so you can not run any
flex appliction on the mobile browsers.Flex is now has been donated to the Apache by the Adobe.
While the Adobe AIR can be used for creating the native applciations for the ios and android.Intially it was only for developing the desktop based non browser applications.But currently you can also create the native application for the ios,androind and blackbarry play book.
Adobe is not putting out any new versions of Flash for mobile devices, so Browser based flex apps will only work on the devices they do now, nothing new will work (and never worked on Apple mobile devices).
AIR will probably continue on Android, since AIR is basically packaged with the compiled flex app to make the native installer for Android.
iOS devices packaging the app as a native installed application is the only option, and always has been.
That said, the way you develop the app doesn't change much, it is only the last step of packaging for the various platforms that changes.
You can certainly create mobile apps using Flex and FlashBuilder and not need Xcode. You also have the option of using PhoneGap. Both Flex and PhoneGap provide abstraction layers for writing a single app that targets multiple devices. Those abstraction layers have some overhead and some folks simply have to write native applications.
LOL, no that wasnt particularly helpful or relevant
You would develop all the apps with Flex, whether its web, desktop or mobile. Flex is the framework that allows you to use MXML visual components and actionscript.
When you start a new project you are given the choice of a new flex project or mobile project (although both use flex).
Choosing a flex project then gives you a further option of developing for web or desktop. A web project will run in flashplayer, inside the browser. A desktop project will run in AIR which is, more or less, a flashplayer for the desktop.
Choosing a mobile project you can then pick to develop for android, iOS or blackberry playbook or all 3. Writing for all 3 is pretty much the same, its only when publishing you need to make a distinction. Android is easy and just needs a certificate which you can generate yourself. iOS needs certificates and provisioning file that Apple will give you (you have to pay them first).
Developing for android is similar to a desktop app in that an android app runs in AIR, mobile version. Whereas an iOS app is compliled to native iOS code.
Can you develop the same for iOS as Xcode? I dont think so. Not directly. I develop for android so cant say first hand what iOS is like. But with android (and presumably iOS) you can use Native Extensions to gain access to things like vibration or voice recognition.
I think the Flex framework is a really nice way to develop apps, especially across multiple platforms. I would tend to start with a library project to hold all the logic and services. Then import that into a web, desktop or mobile project which just handle the visuals and user interfaces. Using an injection framework like Swiz or Robotlegs (I love swiz) just makes everything work so well together.
However, sadly, Adobe has recently abandonned Flex and palmed it off to Apache. I was under the impression that Adobe remained commited to the use of flex for mobile development. But seeing an Adobe employee suggest the use of PhoneGap I am somewhat dubious of how committed they really are.
As I said, I really like Flex and enjoy programming with it (as a hobby, I'm a construction surveyor by trade). But I dont think I would recommend anyone learn it now. As Flex harUI said, maybe you should look at PhoneGap instead.
Phonegap is not a UI but a communications protocol between a Web View and a specific list of device APIs such as storage or the accelerometer.
So you need to build an HTML/CSS/JS UI and/or deploy equivalent frameworks and use PhoneGap for direct access to device features not accessible in a web view.
You need the development environment to create the app or you and use the PhoneGap build cloud service. In either case you do get an app that can be listed in stores.
If you do not need the device apis not accessible in web view and do not need an app in a store, you can build in HTML/CSS/JS as a web mobile site and use adpative or progressive techniques to tune to orientations and device screen widths/heights.
For animation there are a growing number of frameworks and software to export Flash like animations to HTML canvas that you can then use.
In all cases you use a device API or APIs, regardless of the development skill, you must have a resource that is familar with the native device. Reason is that often you get strange results that seem to make sense in the code (AS or JS) but do not work. A native developer will understand the way to perform the same in the native API and will understand quicker the problem and if it is possible.
Flex Flash to native in Flash Builder requires frequent performance testing on targed devices. If not you will find a non responsive app with the code built and a list of trouble tickets that all say non responsive or black screens that are not apparent in the development environment. This is not to say the Flash Builder to Native is a poor solution. It is to say you need to understand the environment and what it takes to assure success such as frequent device performance testing and available native resource skills to help debug. Do not go with just an AS Flex developer without that resource.
Motion Maker is very right: you should develop with a phone in your hands, because what you see on screen may be very different, in terms of performances (not necessarily in games), from what you see on a device.
For instance: the first time I developed an iPad application, I did 90% of the development with the simulator, only to find that state changes were mortifyingly slow on the tablet and most states had to be re-written to improve performances. I will never do that error anymore. However, Adobe states in its development videos: "never forget the importance of debugging on the device"
As for the native versus non-native platform, I have noticed that:
- developing in the native code of the best app store (Objective C and Apple Store) is temtping but risky. Differently from Google play, Apple Store may reject your app for no apparent reason than: there are two many apps on our store that are not very cool and yours isn't as cool as they'd want and they give you the justification 2.12. In that case, what do you do if you haven't programmed in a code that is reusable? How do you port Objective C to Java and go to Google play? If you developed with Action script, you can deploy to Google Play (Android) in literaly ONE DAY (it was my case).
- however, Google play market (read: Android) is ages far from Apple. This is why most games are 0.79 on App store and free in Google Play.
And, however, AIR is not supported by all Android devices; moreover, the Google play filter thing does not work properly :-( my apps aren't seen by Samsung Galaxy S II, although I stripped down all kinky permission requests. Why?
- PhoneGap looks cool, but the idea that you don't control the executable, which is instead produced by a server-based application, is strange to me. Chances are - in my opinion - that Adobe bought it to take it out the market.
I don't know if Flex is being dismissed by Adobe as some say. The "Design" mode is being dismissed, apparently, and in Flash CS6 there will be the possibility to export to HTML5+ JScript. However, I don't think Adobe will kill AS. If they kill Flex, who cares, but AS is enjoyed by too many developers to be given away at the moment.
Titanium is good for iOS, but apparently not so good for Android. Moreover, it's not so cheap!
When one chooses a platform, one should also take into consideration the history and stability of the company which offers it.
That is why I would not go to Appcelerator: who knows what's behind the corner?
Sure, it is ironic that I say this after Adobe - a big company - has abandonded Flex...
- AMPChroma (Horrible name, but it has a solid company selling it: Antenna Software). This thing has the advantage that the content is not either native or web: the same content can be packaged for a web site AND for an app
Pro's: Many big players are using it
Con's: price list not very clear
- Adobe Edge "Preview" + Adobe PhoneGap <--- Adobe says: you create animation for the web, you package it for an app. Not many people have tried it. But apparently it will work.
Pro's: apparently, Edge is Adobe's instrument to finally go to HTML5.
Con's: Edge "showcase" performs BADLY and SLOWLY in an iPhone (go think of a Samsung Mini)
- Adobe Flash professional CS6 + Create JS <--- you create animations in Flash, then you export to HTML5 and js for browsers which don't have flash. You can also package with AIR for iOS and Droid.
Pro's: Flash professional is easy, Action Script is powerful. You can have BOTH the power of Flash and the portability of html5/JS.
Me, I don't know what to do. I am keen on FlashBuilder/Flex because it's fast to build. Apps are really compatible both with iOS and Android. It has Salesforce.com connectivity. It's cool.
However, there are two problems that get me stuck from continuing with FlashBuilder:
- OK for native apps but... how do I use the Flash Builder/Flex content for the mobile WEB? Flash Builder does not have the CreateJS capability. I do a cool interface and I cannot reuse it on the mobile web if not with apps?
- OK for HTML5 but... it's NOT as good as Flash now. Have you ever seen a Phonegap application with graphics? They're embarassing. Slow, imprecise. And non-compiled Edge stuff is not much better. Is it? any good example.
Bottom line: at the moment, HTML5 support does not seem good. On the other hand, Flex is NOT compatible with mobile web. What IS performing and promises to be compatible with mobile web in addition to native apps?
Flash Professional CS6.
I am happy if some-one belies me with good arguments.
1. You don't need to convert to HTML5 / JScript to target mobile devices from Flash Professional or Flash Builder (which supports flex), They both can compile "native" applications for iOS and Android.
2. You need to convert to HTML5 / Jscript only if you want to have your animations in a mobile browser.
3. Flash Builder does not have the CreateJS conversion tool that Flash professional has. At least, not yet. And, moreover, Flash Professional has a mobile simulator that is more advanced than Flash Builder's. It allows you to simulate accelerometer, GPS, touch events... Flash Builder's simulator does NOT have these features. This is a big difference.
Sad news? Flash Builder is super cool for programmers. But Flash professional Cs6 is the application that Adobe seems to be keeping on beefing, regardless of the dreaded announcement that the flash player will not be updated for mobile.
So, Flash Builder could be much better than Professional, but Professional is pretty much what one is left with. Unless Adobe releases a new Flash Builder version with CreateJS and the same cool simulator that Professional has. Rumors, on the contrary, say that FBuilder will lose the "design" interface. Good luck with that!
I agree about Fbuilder and to be honest Mobile is a environment that changes, so technically i would like someone to keep up there "builder" and updates and Titanium dropped desktop apps and is concentrating on mobile.
So Flash CS6 looks like is the best for converting flash to a browser or device that can play it, basically any Apple type and to be honest people much prefer the flash animation minus the flash, i can concur that it drags browser when flash is being played but i like flash, its the first program i learned AS2 to AS3 also Front page.
I will look into the conversion for Flash CS6 but I'm hearing that it has limitations, i build flash business pages so there are things i do that are business related and not just animation.