I'm quite new to developing in Flex. I've found out that it's possible to create mobile applications with Flex 4.5. So far so good, I've made an app and it's working well on my mobile phone. But there is one thing that I'm not very happy with. When I'm installing the app I also have to install Adobe Air (stand alone application). So is not realy cool and not the way to go in my opinion because this will look strange to the users of the app. And especially the users which aren't realy 'geek minded'.
Any solutions to this? Is it possible to include or embed Air in the app? It will make the filesize of the app bigger but that's a much smaller problem then having to install a complete different app next to the real app.
All the best from NL.
This feature is called Captive Runtime and was introduced in AIR 3.
To use it today, you'll have to overlay the AIR 3 SDK onto the Flex Framework of your choice (I suggest 4.5.1). Then you'll have to use command line tools to compile your app using captive runtime.
This will most likely be a lot easier when Flash Builder 4.6 rolls around.
More information
Related
Is it possible to launch, integrate Adobe flex application within the electron shell?
Have someone done this before? if so, I am looking for challenges or even a possibility of using it with electron.
In order to do that you will have to migrate from Adobe (maybe apache?) Flex to the new Royale SDK. This will allow you to export as html5 and then wrap it with electron.
When migrating to Apache Royale, you can keep your as3 code but will have to rewrite most of the UI. There is also an option to "emulate" spark components but I haven't tried that.
If your intention are creating Desktop App, recompile your code with Adobe AIR and re-target for Desktop.
This will be much much much more easier.
Can a Flex application that was designed for use on a PC be run on an iPad, iPhone, or Android-based mobile device?
Seems like a simple enough question. Visiting http://www.adobe.com/products/flex.html yields a picture of a dude running a (presumably) Flex application on an Android. So at first glance, the answer would appear to be "yes." End of story.
but yet…
There is so much (mis)information out there on various tech sites that suggest Flash-based technologies simply won't run on iOS or other mobile platforms. Why is this? Perhaps they mean to say that Flex won't run "out of the box" and requires a plugin? Or do they mean it won't run at all?
Every time I think I've reached a definitive conclusion, some post on SlashDot or CNET directly contradicts it. So what's the scoop? Can one take an existing Flex application and run it on iOS/Android? (I realize there are screen size issues to consider so the app might not run effectively. I just want to know if the runtimes are available on the mobile devices to allow the Flex app to launch at all.)
Sorry for the noob question. My background is WPF / HTML5. Adobe technologies are completely foreign to me.
I wrote a lot below if you'd like to read it enjoy, if not sorry for taking your valuable bytes :) I directly answered the questions up here first:
Why is this?
It's a confusing matter read below for the why details.
Perhaps they mean to say that Flex won't run "out of the box" and requires a plugin?
Or do they mean it won't run at all?
Using the flash builder tools (the bin folder in the SDK) you can compile for native desktop application, desktop web browsers, native iOS application, native Android application. Android with FlashPlayer plugin installed will show Flash content within the web browser, iOS will only run the ones compiled with AIR, not in the the web browser but as a native app.
Every time I think I've reached a definitive conclusion, some post on SlashDot or CNET directly contradicts it. So what's the scoop? Can one take an existing Flex application and run it on iOS/Android?
Yes, if using AIR and run as a native app on all three platforms (the desktop Flex API is for the most part a superset of the web Flex API), your other points about performance and form factor are valid and should be considered though. The nice thing is you can write your model/controller code in a common library in AS3 then write separate presentation layer interfaces that all share the library.
Here's the very long version:
Using the flash compiler results in "bytecode" in the form of a file with a swf extension using the swf format, you can read a ton more about that here:
http://www.adobe.com/devnet/swf.html
To interpret the file you need some sort of run-time similar to some degree to running WPF/XAML/C# within a .NET framework context (either desktop or using silverlight on the web). In the case of adobe technologies (rough equivalence):
AS3 = C#
MXML = XAML
Flex = WPF+WCF (client side RPC not server side)
Flash Player = Silverlight
AIR (Adobe integrated runtime) = .NET
Framework Redistributable .dll(s)/.so(s) for desktop OSes
(Read this list very loosely please, I know XAML is preserved in the MSIL or whatever which is different because MXML is compiled to AS3 and only if a debug flag is set on the compiler does it include the debugging symbols, there's certainly tons of differences but I think this is an easy and correct enough model to use)
On iOS the browser does not allow for plugins in the traditional sense of netscape browser plugins or ActiveX plugins. For this reason you'll not be able to execute a plugin ie flashplayer or silverlight in the browser. Since Adobe did release a flashplayer for Android devices that does run in the browser it will work on those devices in the browser, however they have essentially thrown in the towel for supporting this long term, as they have to support the majority mobile device platform, iOS, in order to remain relevant (this was I think more a collective throwing in of the towel by Google, device manufacturers, carriers, Microsoft, all just following suit and trying to make the best business decision, WebKit and V8 or SpiderMonkey can probably do 99% of what Flash can do and better in some cases and WebKit will hopefully not splinter and will remain open source... frameworks and the browsers just need to get fleshed out and stabilized).
If the user installs AIR (or the runtime is packaged with the app) then a Flex/Flash (that is stuff coded in AS3 and/or MXML and compiled to a swf) can be transcoded/packaged to be interpreted by the run-time for that device correctly (be it iOS or Android or whatever RIM did, I don't think they have AIR for Windows Phone 7 and Win8 on ARM won't support browser plugins either). Part of the confusion is possibly from the fact that Apple denied the distribution of Apps that were "cross-compiled" which kept AIR out of the list of options for iOS for a good year, just after Adobe started announcing it was usable for that purpose (kicking Adobe while their down). Another part of the confusion probably comes from real vids of people who have 1 hacked their device or 2 were able to get open source alternatives to the flash player run-time to work on their iOS device (gnash was one I'm aware of from some occasional Linux tinkering, also possibly FAKE vids).
You can run Flex applications on mobile devices, but you cannot simply run any Flex project.
In Flash Builder ( Flex Ide) or in Flash Professional you can create mobile projects. These projects generate native applications for iOS and Android.
Last time I tried, the result and the available components where less than what I expected. So, if you can, I'll much recommend you go for something like Appcelerator.com or similar, which turns HTML5/Js code into native apps. I tried them, worked a lot better than Flex.
Short answer: No
Long answer: You can use Adobe's tools to compile your Flash/Flex app for use as a native iOS app. So you won't be able to embed the app in a web page like you normally could with Flex, but you can build it as a native app. Note you have to have Flash Builder 4.5 to do this.
It won't run on iPhone as a .swf file, but it will run on Android based devices that have adobe flash installed. It will also run on the BB playbook, which also has flash.
Flex is a framework.( Anyway it is very beutiful one which even sometime looks like complete different language ).
As soon as you are building AIR application it can run on various platforms like : Windows, iOS, Android, upcomming TV's, PlayBook, even .. into the future ( maybe/hopefuly ) on Windows Phone, plus Linux ( which AIR future is not very clear anyway ( but hopefuly Adobe will reconsider ) ).
So - application created with Flash Builder 4.5+ would probably run everywhere as soon as it is AIR application.
The compilation methoods is really simple, and you almost simultaneously compiling for everything you wanna to.
And one of the most important things here - your applications will run, work, look and feel the same way you were designed on one device. Flex is the thing which is responsible for everything to looks beutiful on each platform it is running.
For instance i am compiling currently for Android, and without even test i can clearly say that it will looks and feel the same way under iOS and Windows, and it will.
I'm very familiar with the Adobe Air runtime, and quite handy with the workings of a Flex application, but I'm unsure which technology I should use if I would like to have a multi-platform application able to be deployed to the Web foremost, Android Phone secondly, and Desktop third.
I understand that AIR is probably the route I should go, but I'm very conflicted on how integrated it is with Android? Is it easy to do now, or still a headache (I haven't read about it in ages)? I've seen the new Flex 4 deploying to Android very smoothly, but I've heard it's difficult to write an AIR program with Flex.
Any thoughts are appreciated!
You have me scratching my head here.
AIR is a runtime, not an application development framework.
Flex is an application development framework, not a runtime.
You can author your application in Flex and deploy it via Flash to the phone and web and deploy it to the desktop with AIR.
Now, if you were implying that you would develop your web app using HTML/JS/etc..., deploy that to the desktop with AIR, and then try to rewrite the whole thing in Flex, I agree... that's not a reasonable approach.
My advice is that you stick to one stack.
So, if you're going to do Flex, do Flex all the way. If you're going to do standard web stack, do that all the way (there are a lot of mobile web dev frameworks out there - jQuery Mobile is probably one of the better ones, but Ext.JS/Sencha is out there too).
Make sense?
I have not tried it, but Adobe acts as if it's fairly simple to adapt from straight Flex to Flex within AIR.
What's more important is what language the app is already in. If it's in JavaScript and HTML, then it would stand to reason that adapting that to AIR's HTML5/Javascript engine would be quicker and less frustrating than porting it to Flex and adapting it to AIR.
Additionally, it gives you a codebase you can more easily adapt to iPhone if you want, using PhoneGap or Titanium, which are HTML5/Javascript based as well.
I've had a couple of projects end up withering on the vine because I went back and forth between technologies (and in parallel allowed feature creep to make them more and more monolithic and daunting undertakings). So, IMO, the development paradigm to use is the one that will allow you to spend more time coding and less time second guessing yourself.
I want to clear up some confusion:
I understand that AIR is probably the
route I should go, but I'm very
conflicted on how integrated it is
with Android? Is it easy to do now, or
still a headache (I haven't read about
it in ages)?
AIR is very integrated with Android through the runtime, officially known as "AIR For Android". Adobe released it recently and people already have applications in the Android store. The tooling introduced in Flash Builder Burrito makes it very easy to build Flex applications for Android. I expect Burritio to become a formal release early next year.
I've seen the new Flex 4
deploying to Android very smoothly,
but I've heard it's difficult to write
an AIR program with Flex.
It is borderline trivial to convert a Flex application to an AIR application. However, switching a "standard" Flex or AIR application to AIR for Android will most likely require code optimization due to device resources. I would anticipate sharing 60-80 percent of the code base, but the UI will most likely require rework because of the smaller screen size and component management will have to be done differently because of memory / processor requirements on a mobile device.
I am using Fedora 12 (linux) Installed Packages adobeair.i386 2.0.2-12610 #adobe-linux-i386.
I want to make a simple "hello world" application which is able to run in my desktop and also via http://localhost/air/index.php
Can someone please show me step by step, a working example?
Thank you
Regards
N.B: What are the differences between Adobe Air and Adobe Flex? Can you share please, seems very confusing, i could use C++ (which is Air) and i could use PHP (which is Flex), like that kind of difference?
The AIR app won't work in a browser. For the web version, you would use Flex and for the desktop version you would use AIR. Both applications can be written in Actionscript 3 however, unlike Flex apps, AIR apps can also be written in HTML/JS. If you write your apps in Actionscript 3, your Flex and AIR apps could use almost identical code. Obviously, there are a few classes which can only be used in AIR as these related to desktop functionality. If you look at the Actionscript 3 reference (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/), you can see which of the classes are AIR only and which can be used in both Flex and AIR.
AIR files are exported as .air files while Flex file are exported as regular Flash .swf files.
As far as, "C++ (which is Air) and i could use PHP (which is Flex)", that is sort of right. AIR is a replacement for C++ in that you can write desktop apps with both. However, because of the AIR runtime, you do not have to write different versions for different operating systems. the one AIR app will work on Windows, Mac, Linux and now Android phones. With C++, you'd have to modify your codebase for all of these environments. Flex is not like PHP however, it's client side so is more like a more-powerful Javascript. You can have a Flex app talking to a PHP backend (using AMFPHP or Zend_AMF to communicate) which handles all the server-side stuff like retrieving data from a database and sending it back to the Flex app running in the browser on the client. Flex is sort of like a collection of components (it's officially an SDK) to make writing web apps easier. So, for example, there's drop-down menus, date-pickers, datagrids, trees, video displays, etc, plus everything else that's available in Flash. IMO, the best thing about Flex development over HTML/JS development is the layout model. You can make some very complex fluid layouts very easily in Flex which adapt to different screen sizes. You also don't have to do much in the way of cross-browser testing - it looks the same in all browsers on all OSes as long as the user has the approriate Flash Player. It's also very fast when handling lots of data and makes it easy to mix many different multimedia components, video, audio, etc, in the same app. Some good apps written in Flex are Aviary, Photoshop.com and Buzzword. Some good AIR apps are the eBay desktop client, Feedalizr, Seesmic Desktop, etc.
This could've been solved by googling "adobe air tutorial hello world", but here's the link to Adobe's official air beginner hello world tutorial: http://help.adobe.com/en_US/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7ecc.html
i am working with Flex for quite sometime. but i hadn't get any chance to even look at Adobe AIR platform. I am planning to do some personal softwares using AIR.
Provided the background that am an absolute zero in AIR, what all should I have in my system apart from Flex builder? And how fast i can learn AIR if I am pretty comfortable in Flex?
Regards,
Anoop
You can quite literally use any Flex code in AIR - the most imminent differences are the root tag of the application that is WindowApplication and a wider selection of methods available. AIR is only a platform that your Flex runs on, not an alternative or anything.
After you have created a new AIR project, you may want to check the MyTest-app.xml (or whatever the name of your app) file in the src folder. This is where, for instance, some properties of the new window created by the operating system reside.
As for tools, you'll want to install the AIR runtime if you don't have it already, but apart from that and Flex Builder you're all set!
You're in a good position to start developing AIR applications given your background in Flex. What you have to learn would depend on what you already know and the kind of application you are going to build. We can help you if you share more details about the app.
Some things you can look out for are the WindowApplication object, File systems i/o, SQLite database ops, windows/menus/task bars etc. Here's the basics for getting started with AIR app development in Flex: http://livedocs.adobe.com/flex/3/html/Part5_AIR_1.html