Air
You can read more about it here, and download it here.
Two of the most requested features for Adobe AIR have been the ability to launch native executables from an AIR application, and the ability to integrate native libraries into an AIR application. Unfortunately, neither feature will be included in Adobe AIR 1.0.
However, this does not mean that you cannot build an AIR application that has closer / tighter integration with the underlying operating system. This lower level of integration is possible, but it requires some work on your part.
I just noticed over on the labs wiki that the Adobe AIR For JavaScript Developers Pocket Guide has been translated to Thai.
You can view the full translation here.
Creative Commons FTW!
If you have been following Adobe AIR during its young lifetime, then you have probably noticed that it has been pretty inconsistent as far as branding goes. It has had a number of logos and graphics associated with it, including the rocket-ship, and the current “AIR” branding.
Part of this was due to the surprisingly complex process of designing and settling on a logo in the technology world. There have been quite a few times during the past year where we felt that we were close to having the final logo, only to then find out that it was just a bit too familiar to some other logo in the computer / internet / tech world.
One of the cool features of Adobe AIR (especially for Flash developers) is its ability to render full featured HTML within Flash content. The rendering is handled by the WebKit core, and the HTML content can be from both local and remote URLs as well as from a string of HTML text.
HTML rendering within Flash content is handled by the ActionScript HTMLControl class (which is wrapped by the HTML component in Flex).
One of the things that you might need to do when building your application is detecting whether your application has run before. This can be useful if you need to initialize settings, or perhaps prompt the user with some information.
Below is a simple example that shows how to detect whether the application has run before. Basically, it checks for the existence of a file. If it doesn’t exist, then the app hasn’t run before, if it does exist, then it means that app has run.
Here is a simple example that shows how to enable your Adobe AIR application to accept native drag and drop operations.
This is a simple application that allows you to drag a text file into the application and then view its contents.
DragAndDropExample.mxml
<?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication creationComplete="onCreationComplete()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script source="DragAndDropExampleClass.as" /> <mx:TextArea top="10" right="10" bottom="10" left="251" id="outputField" /> <mx:Text text="Drag a Text File into the Application" width="233" height="148" top="11" left="10"/> </mx:WindowedApplication> DragAndDropExampleClass.
As part of my Flash on the Beach Intro to AIR Session, I built a simple HTML Editor with a live preview. I have added comments to the code, and uploaded it to the on AIR tour google repository.
This example demonstrates:
Using the File API to write a string to a file Using the HTML Control within an application to render a string of HTML Using the File.browseForSave API to open a native save dialog.
A lot of people have been asking whether the Adobe AIR beta currently works on Apple Leopard (OS X 10.5). I pinged the team and they they told me that they are currently doing some testing, and haven’t run into any major issues yet. However, we are seeing some reports of issues from developers online, so if you are currently working on an AIR app, you might want to wait a little while to upgrade until we have more information.
ars technica has an interview up with Ed Finkler, the developer behind the AIR based Spaz Twitter client (which was one of the winners of the AIR Developer Derby).
The interview is a good read and why Ed (an HTML / PHP developer) choose AIR, and what his experience was like working with the runtime. It also gives a good explanation of some of the new HTML / JavaScript security changes that were implimented in Beta 2.
Dr Dobb’s Journal has posted an article on Adobe AIR in this months (November 2007) issue. It is written by Oliver Goldman, who is one of the primary engineers on the AIR team, and provides a good overview of what AIR is, and the problems that it tries to solve.
You can read the entire article online here.
Here is a quick tip, that I got from Tom Lane on the Flex Builder team. If you do a lot of AIR development, then you have probably noticed that the default application descriptor file in Flex Builder 3 Beta 2, is heavily commented. While this makes it easy to learn the new tags, it can be a little overwhelming, and make it difficult to find the actual tags you need.
I just uploaded a new build of Ascension that works with the current Adobe AIR beta (Sorry it took so long).
You can download the AIR file, as well as the source from the Ascension google code project page.
Over on the on AIR bus tour blog, I just posted about a new app that Lee Brimelow and I put together on the bus, called flump.
It is a simple AIR application that will download all of the public images from a Flickr account.
You can find more information, as well as download the app from here (source included).
I just posted on the on AIR Bus Tour weblog that we have opened up the code repository for the tour. We will be posting all of the applications for the tour here and have already included two:
AIRSnapshot Application: AIR application that takes a picture from the webcam, geoencodes it and uploads to Flickr. AIRTracker Application: AIR application which takes geo-coordinates, maps then, and uploads them to a server API You can find more information over at the on AIR Tour weblog.
In one of the projects I am working one with the Adobe AIR bus tour, I had a need to serialize instance of File class to the file system. Normally you can do this with File.writeObject(), but as the player serializer / de-serializer does not know about the File class, this would not work for me.
I came up with a simple solution that I wanted to share. Basically, you need to extend the File class and provide the meta data for it to tell the player how to serialize and de-serialize the class.
Just a quick fyi, but I just made a post over on the on AIR Bus tour blog about some of the GPS / Location / AIR App / API testing we are doing for the bus tour.
I think it is some pretty cool stuff, and it is definitely a LOT of fun.
You can view the entire post here.
I just finished up a book I have been working on (along with Kevin Hoyt and Danny Dura) that covers using JavaScript and HTML to build Apollo applications. In celebration of finally writing my last example, I wanted to post it here.
Here is a simple example that shows how to use Flash Player and ActionScript APIs directly from JavaScript to play a sound in the upcoming Apollo beta.
<html> <head> <script src="ApolloAliases.
Google announced their Google Gears project today which uses SQLite to allow browser based applications to work off-line. (Ryan and JD have more info on that). Part of the announcement was that the upcoming beta of Apollo will also include SQLite to allow developers access to an embedded database for their applications.
This has probably been the #1 request we have heard from developers since we release the alpha, and with a tons of help from the Flex team, we were able to add it.
Christian Cantrell has released and open sourced an Amazon S3 ActionScript 3 Library. This can be used to send and retrieve items to an from the Amazon S3 storage service from an Apollo application.
We posted a video of Christian showing of an application that uses the API a couple of weeks ago.
You can find more information here.
Here is a simple example that shows how to capture command line arguments passed to a Flex based Apollo application.
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="onCreationComplete()"> <mx:Script> <![CDATA[ private function onCreationComplete():void { //register for the Invoke Event, called whenever //the app is launched or called from the command line Shell.shell.addEventListener(InvokeEvent.INVOKE, onInvoke); } private function onInvoke(event:InvokeEvent):void { //arguments passed to app are stored as array in event.arguments outputField.text += "Invoke : " + event.
Just a quick reminder, but I will be out at Apollo Ranch in Boulder, Colorado this weekend. I will be giving the keynote, as well as a getting started session.
I am planning to give a sneak peak of the upcoming public beta, so if you are in the area make sure to hurry up and sign up (spaces are running out).
You can find more information here.
I just posted this week’s podcast
Download Podcast for July 14, 2006 fyi, I am going to try to start releasing the podcasts earlier in the week (around Tuesday or Wednesday).
Update : Fixed issue with podcast enclosure in RSS feed.
This weeks podcast discusses:
Apollo Information on Labs Apollo FAQ Discussion with Oliver Goldman, and Ethan Malasky (both engineers on the Apollo team) Apollo as a runtime. How will the Apollo runtime be distributed?
We announced this during the keynote at FlashForward, but I wanted to make sure everyone was aware of it.
We have created a wish-apollo mailing list to allow developers to submit ideas, feature requests, and bribes to the apollo team.
wish-apollo@adobe.com
What is Apollo? Apollo is a cross platform / device runtime that will allow developers to deploy applications that leverage Flash, HTML and / or PDF to the desktop.