Adobe Air Intro

Introduction to Adobe Air

This tutorial will introduce you to Adobe Air, a framework to build rich internet applications. This first introduction will show how to create a simple application using Html/Js technologies.

What is Adobe Air?

Adobe Air is a framework which allows building desktop applications.
Adobe Air applications are based on two technologies: Html/Js and Flash.
Developers can choose to build desktop application via Html/Js, Flash or Flex. After a brief overview of the architecture, we will build a simple application using Html/Js.

Step 1 – Architecture of an Air application

An Air application is executed by means of a runtime component, which executes the code contained in the air file. As you can see in the figure Adobe provides the runtime component for the three mayor operative systems, Mac OS X, Windows (XP/Vista) and Linux (note: the Linux version is still in beta). The figure might lead to think that the two approaches are exclusive, either you develop in HTML/JS or Flash. Since the air runtime allows “bridging” between Javascript and ActionScript engines, you can call javascript code from an swf, manipulate HTML/DOM via ActionScript, etc.

Step 2 – OS level functionalities

Adobe Air runtime is not simply an integration of HTML/JS and Flash technologies. The runtime provides a set of API which allows air applications to interact with OS functionalities like:

  • File read and write
  • Native Windows/Menus creation and management
  • Retrieval of internet resources

Adobe Air includes also SQLite, a database engine to locally store and retrieve data.

Step 3 – Installation

To repeat the steps described below you need to install the runtime and the sdk (Software Development Kit), which enables you to build air applications.

The runtime can be downloaded from http://www.adobe.com/go/getair. Just run the installer and follow the instructions.
The SDK can be downloaded from: http://www.adobe.com/go/getairsdk
Unzip the SDK and place the folders in the location you prefer (macosx users will have to mount a .dmg image). Remember the location of the SDK, we will refer to it as SDKPATH.
The directory of the SDK should look like this:

Step 4 – Configuration

The SDK has to be configured, otherwise the OS will not find the commands to be executed.
In fact, if you open a shell a type adl, your OS will say something like “command not found”. This will work only if you move to the bin directory of the SDK folder. Since we want to be able to run build and test commands from every folder we have to configure the SDK. It is important to type correctly the absolute path of the bin directory in the SDK folder.

On a Mac OS X follow this procedure:

  1. Open the Terminal (/Applications/Utilities/Terminal)
  2. Type cd to be sure you are in your home folder
  3. look for a file named .profile. If it does not exist create it
  4. Look for a line similar to this: export PATH=$PATH:/usr/bin
  5. add another line like this: export PATH=$PATH:/airsdk/bin
  6. if the path to the air SDK contains white spaces wrap it with a double quote (e.g. “/my pathtosdk/air”)
  7. Close and reopen the terminal. Or type source .profile

On Windows follow these steps:

  1. Right click on My Computer, choose Properties
  2. Select the Advanced Tab and then click the Environment Variables button
  3. Select PATH from the bottom list and add the path to the sdk folder at the end, as in figure.

To test whether the configuration is successful let’s open a shell and type the
adt command.
The result should be the following:

This response technically means that we have provided a wrong number of parameters to the command, but it also
means that the SDK has been correctly installed and configured.

Step 5 – Project creation

Let’s now create our project folder. We call it myTest and we create two files: myTest.html and myTest.xml.

The xml file is the configuration file, which enables setting up the air application. Open it with your preferred editor and insert the following code.



The first line is a standard header for xml files. The second line starts the definition of our application. The id is the unique identifier of your application. In this case I prefixed that with my domain name. The filename is the name of the executable that we will generate. Name is the name of the application, as seen by the user. The description is a snippet which is shown during the installation to describe the application. Version indicates the version number of your app, 0.1 in our case.

After specifying metadata about the application we go to the definition of the graphics, enclosed in the tag.

Line 10 specifies the root file, that is the file to be loaded in the air application at startup. In this case the myTest.html that we will show later. Title is the string that will appear in the upper part of the window. The systemChrome specifies whether your application has the standard chrome (the one of the hosting OS), or none. Chrome is a set of standard tools which allows manipulating a windows in a desktop environment, namely the title bar, close/resize buttons, borders and the area to grip for resizing.

The background of an Air application can be set to transparent, but this option is valid only if the chrome is set to none. Visible allows to decide whether you application should be displayed when launched. This is useful when the startup takes some time and you don't want to display the graphics to users.
The meaning of tags minimizable, maximizable and resizable should be intuitive and should not need explanation.

Now let's look at myTest.html which actually contains our application.

As you can see it is a standard html page, with a head and a body. The head contains a title and the body has a simple div with center-aligned text.

Step 6 - Running the application

Before packing the application as a .air file we will test it to check whether it produces the expected result.
The tool we will use id adl, which allows to run our Air applications without installation.
Let's open a shell and go to the directory which contains our myTest files (both html and xml).
Then type the following command:

	adl myTest.xml

This runs the application with the chrome of the current OS. On a MacOs should look like this.

Your Air application running on MacOsx

On Windows XP the application will appear like this:

Your Air application running on Windows XP

You might doubt that this application works just with html. Let's test javascript.
We change the myTest.html file as follows.

With respect to the previous version we added a script tag which contains the definition of a simple javascript function, myfunction(),popping up an alert (lines 4-8). We added a button to the body (line 12). The action associated with the button click is the popme() function. Let's save the file and run it, using the same command from the shell, adl myTest.xml

If we click the button we should see something like the following:

Javascript runnning on Air application

Step 7 - Deploying Air application

Once your application is ready for deployment we can create the .air file, which is the distribution package for Adobe Air applications.
This file, which is based on zip compression, contains all the stuff needed to install air applications.
An Air application has to be signed with a certificate. For widely distributed applications it is preferable to obtain a certificate from an authority like thawte.
Our purpose is just testing, so a self signed certificate is enough. The creation of a certificate can be done via the adt command. Open a shell, move to the project folder, and type this command:

	adt -certificate -cn mycertificate 1024-RSA mycertificatefile.p12 mysecretpass

adt -certificate -cn is simply the syntax required by the command. The following table explains the values provided to the command.

Parameter ValueExplanation
mycertificateThe name of the certificate
1024-RSAThe encryption key of the certificate
mycertificatefile.p12The file where the certificate is stored
mysecretpassThe password which protects your certificate

If you check the project folder you'll find a new file called mycertificate.p12 which is the self-signed certificate we right created.
The project folder should now contain three files as in the figure below.

Project folder with self-signed certificate

Now we have all we need to create our .air file. We have to run a pretty long shell command. Don't panic. I'll explain every single word. First let's see it.

adt -package -storetype pkcs12 -keystore mycertificate.p12 AIRHelloWorld.air AIRHelloWorld.xml AIRHelloWorld.html

As above adt -package is the syntax of the command, storetype indicates the the format of the keystore. This is a pretty technical parameter. To be brief, since we generated a certificate according to the pkcs12 format we have to tell it to the compiler. Next we specify the certificate file, via the -keystore parameter. Finally, we provide the name of the resulting .air file, the xml file containing the application settings and the .html entry point file. When we issue this command we will be asked for the password entered during the creation of the certificate ("mysecretpass") in our case.
We now have a .air file, which is the distribution format of our application. If we double click it the installation process will start.
Installation goes through two simple steps as shown below.

Installation - First Step

Notice that, since we self signed the certificate, the published Identity of the application if UNKNOWN.

Installation - Second Step

During the second step you can specify where to install the application and whether to start it when the installation is finished.

Conclusion

In this tutorial we have introduced the Adobe Air framework and we have built our first Adobe Air application using Html/Js.
In the next episodes we will see how to build the same application with Flex and Flash CS3.

  • Subscribe to the NETTUTS RSS Feed for more daily web development tuts and articles.


Note: Want to add some source code? Type <pre><code> before it and </code></pre> after it. Find out more
  • azerty

    great tut !
    I was looking for such an article.
    Can’t wait to read the next one with Flex and Flash CS3 !

  • http://www.image2markup.com Ivan

    Can I port my PHP apps with AIR?

  • http://enhance.qd-creative.co.uk James

    Absolutely awesome! I had no idea it was so easy!! :D

  • http://latest-mtv.net Tricks

    Awesome!

  • http://www.freshclickmedia.com Shane

    An interesting introduction to AIR – I had only last night thought about it.

    The functionalities you mention in step 2 might be appealing in certain circumstances, but I still don’t ‘get it’. AIR seems to be the integration of html/js/flash. So what does it offer over and above these technologies?

  • http://xseria.com Sam Parkinson

    Just the tutorial I was looking for. Thanks :)

  • http://cyberantix.org Connor

    This is a fantastic tutorial! Great Job!

  • http://www.insicdesigns.info insic

    First application ive made in AIR is based on snook tutorial ‘Christmas in the Air’. and its very nice. Thanks for posting this tutorial.

    • Neto

      Beaultifull!!!

    • http://duxing.g8up.cn 笃行天下

      could you tell me how to fine the ‘snook turorial’ ? thank you ~

  • http://mapness.net Tom Sieron

    Instead of going with Flash and Flex wouldn’t it be a good idea to dive deeper into AIR possibilities for AJAX apps?

    I mean there are plenty of good websites dedicated strictly to Flex and Flash and a great community of ActionScript developers, but so little tutorials on harnessing the power of AIR in JavaScript based apps.

    Come on guys! Don’t copy what others have been already writing about for the last couple of years! Flash/Flex is a proprietary technology, go with the open standards and give us more JavaScript+AIR goodies.

  • http://laminbarrow.com Lamin Barrow

    WOW.. i was not expecting an Adobe Air tut but here it is. I have a huge collection of light weight air applications on my computer for doing various things and i am absolutely pleased with them. Thanks for the introductory tutorial. :)

  • http://enhance.qd-creative.co.uk James

    Hmm… Actually yeh I’d also be interested in the benefits of using AIR. Like Shane said above, all it is is the “integration of html/js/flash” …

  • http://www.ursino.info Mark

    @Ivan, no.

    @Shane, the purpose it to move web apps to a desktop setting. You can take something you’d normally put on a website and make it browser-less (in a sense). AIR has the WebKit engine in it (rendering engine used by Safari and Google Chrome).

    Think of it like this: you have a campaign for a major brand and you’re building a cool Flash mini-site. It’s about 300px x 300px and it does some fancy stuff. The website around it is just the medium to get to it. Instead, if you wrap this thing up in AIR, you can have people download it and run it like it’s a program itself, rather than going to a website is a browser.

  • http://davidwalsh.name/ David Walsh

    Thank you for this tutorial. I’m looking to start Air and this will be valuable.

  • http://www.freshclickmedia.com Shane

    @Mark – thanks for the explanation. I still don’t really see the point though.

    In this connected world, taking web-based technologies such as html and javascript and wrapping them up into a little app that I can run on my desktop, independent of a web browser, seems a little pointless.

    I do remember the BBC using it for Olympics updates – I found the installation process seamless and the experience quite good.

    Hey – I’m talking myself out of the ‘don’t see the point’ argument :)

    Still not totally convinced though. :)

  • http://www.thisisaaronslife.com Aaron Irizarry

    Interesting… thanks for starting me off down another rabbit trail :) I look forward to more on this

  • http://www.yensdesign.com AdrianMG

    Sweet :)

  • http://matt-radel.com Matt Radel

    Great tut…I needed something introductory like this.

    @shane: The lure is that not only can you create an installable application using web based technologies, but you can also use it to connect to the cloud as well. You can work & save files & whatnot locally…think of it as building your own itunes.

  • http://devjargon.com Alex

    We’ve started developing a number of in house applications on Flex/Air, and so far it’s quite nice. Flex is a great framework (if you take a couple weeks to really understand it before you start) to build an application on.

    We’ve created a number of small automation routines that run on AIR. One of the service my company offers is SCORM compliant e-learning courses. One AIR app will allow you to build and edit the flow/sequencing of a course, and it will output the folder structure for the application, a templated .fla and .swf corresponding to the learning module/activity and the SCORM compliant manifest (a multiple thousand line xml document unique to each course that tells the Learning Management System how to handle the learning modules).

    All in all, it takes about 35 minutes to set up a project, compared to the 10-15 hours it took before we wrote the AIR app. You can’t do that with an online only Flex project.

  • http://blog.midstride.com Andre

    Awesome article. I’m looking for practical tutorials for AIR, please do more! :)

  • http://moukadesign.altervista.org/ Salmen

    WOW i have created my first AIR application

  • Mohammad

    Awesome , Thanks.
    Keep up the good work.

  • http://www.ben-griffiths.com Ben Griffiths

    Fantastic intro – Air has so much potential, best to get in there while its still relatively early days ;)

  • http://www.jadgraphics.net Jad Graphics

    WoW! This is cool. I think that Adobe Air has tons of potential. I hope to use this someday…

  • http://www.subooa.com matt

    thanks for this!!

  • http://askllora.com Askllora.com

    Very nice tut! Adobe has so many different yet related products that it’s hard to keep up. Intros like this really help bring new applications to light.

  • Atul Kushwah

    It so cool!!! does it works with php5 and mysql ?

  • http://www.datadrum.com colinr

    Thanks for this intro, AIR looks very interesting. I’d love to see a tutorial on building an AIR app using the SQLite functionality – I maintain a few bespoke database apps in Director and it would be great to move them to AIR.

  • http://www.windows7themes.com Windows Themes

    Nice introduction, definitely I will use it :)

  • http://www.jaysalvat.com/ Jay Salvat

    Thanks a lot for this one.

  • http://www.instantshift.com Roshan

    Thank you for this informative post.

    Roshan
    Freelance Developer
    http://www.instantshift.com

  • http://crfdesign.net Ray

    This is an excellent tutorial! Definitely bookmarked…

  • http://spreadingfunkyness.com Cesare

    Thanks everybody for the congratulations!
    It is really encouraging and motivating!

  • http://www.sparkblog.org Sniper Wolf

    Very Nice Post! :D

  • http://rebelmaker.wordpress.com Ian

    Just what I needed, I was hoping to start off working with Adobe AIR sometime soon.

  • http://www.johnjosef.com John

    @Ivan: Yes, you can. Just like you can utilize php in flash apps. Mark is incorrect. If you use javascript you can create get/post calls and connect with php scripts. Similar to how you can use XML requests in flash to do the same thing.

    @Mark: Think of possibilities before you shoot someone’s hopes down :)

  • http://taylorsatula.co.cc/ Taylor Satula

    *** n00b alert start ***
    So this is like mozilla prisim just much better?
    *** n00b alert end ***

    Loved the article air seemed to be mtn. but now it seems so much easier to do now that i get it.

  • Husky

    If anybody is looking for a reason why use AIR, think about an app for sales force automation. A sales guy is on the road and needs to punch in a few lines about his daily appointments / sales / whatever in the corporate CRM tool. Then he gets to the office at the end of the week and all the files in the local DB synch with the company server. If this is not possible with this technology, then somebody please tell me I am missing the point…

    Cheers.

  • http://imbuzu.wordpress.com Buzu

    Great tutorial, tough AIR is not a framework to build RIAs. It’s a framework to build desktop apps by using internet technologies. It has also its own database system integrated, and its capabilities go beyond the browser. Its the nest big thing for web developers since ajax.

  • http://imbuzu.wordpress.com Buzu

    nest? I mean next…

  • http://URL(Optional) Surendra Gurjar

    AIR is a exiting framework I am enjoying it…..

  • alleyes

    this seems very promising I will follow you closely.
    Air and flex are very popular and don’t seem to be getting enough attention so I’m sure such tutorials will be very popular.

    Thnkx

  • http://www.as7ap4you.com kareem

    this is wonderful tutorial i will put acopy of this lesson on
    my site here
    http://www.as7ap4you.com

  • http://madebyabe.com Abethebabe

    Nice tutorial, when I was installing it on my vista though I had to direct it to the \bin folder

  • Pingback: Best Resources Of The Web Christmas 2008 | Design Development Magazine

  • Pingback: Building an Adobe Air application with Flex - NETTUTS

  • Joao Clerigo

    Great! Can you make the source files available?

  • http://www.jashsayani.com Jash Sayani

    Great one.

    I have just purchased a signed certificate from Thawte. Could you please help me with signing my application with the new certificate. You have used the pcks12 format in the example, but what format does Thawte use?

    Just reply to my comment with the application signing command. Thanks.

  • http://www.webhostingstation.com Web Hosting Reviews

    Thanks for the information

  • http://pixelmount.com darki777

    Hi, thank you for this great tutorial. I have a question, is it possible to add js files? Like myjsfile.js ???

    Greetings,
    darki

  • Dilip Maddi

    Good Start
    Found a small problem while working

    adt -certificate -cn mycertificate 1024-RSA mycertificatefile.p12 mysecretpass

    adt -package -storetype pkcs12 -keystore mycertificate.p12 AIRHelloWorld.air AIRHelloWorld.xml AIRHelloWorld.html

    for the second command to work properly the first command should have the file name as mycertificate.p12 instead of mycertificatefile.p12 i.e.
    adt -certificate -cn mycertificate 1024-RSA mycertificate.p12 mysecretpass