Build a Feathers UI project as an Adobe AIR mobile or desktop app

Feathers UI may be used to build mobile and desktop applications targeting the Adobe AIR runtime, maintained by HARMAN.


In addition to the dependencies specified in the Feathers UI installation instructions, building an Adobe AIR application with Feathers UI has some additional requirements.

Run the following command (with the correct path on your computer) to configure where OpenFL can find the AIR SDK.

openfl config AIR_SDK path/to/AIR_SDK

Build Desktop

To build for the air target and create a desktop app, run the following command.

openfl build air

Use the -debug flag to create a build to include extra debugging information, including full stack traces when there's an exception or crash.

openfl build air -debug

The build's output will be written to the bin/air/bin folder.

Your project.xml file may optionally specify an output folder different from bin.

<app path="Export"/>

In the example above, the output would be generated in Export/air/bin instead.

Build Android

Run the following command to build an .apk file for Android:

openfl build air -android

Build iOS

Run the following command to build an .ipa file for iOS and iPadOS:

openfl build air -ios

Run / Debug

OpenFL provides the test command to launch your project using the Adobe AIR runtime.

openfl test air

Mobile simulator

The Adobe AIR debug launcher supports simulating mobile devices. Use the -air-simulator option to skip packaging the .apk or .ipa file.

openfl test air -android -air-simulator


In the future, common error messages and their solutions will appear in this section.

Did you get some other error message that you don't understand?

Configuring OpenFL builds for various targets can be a little tricky! Head over to either the Feathers UI community forum or the Feathers UI Discord. Explain which command you tried to run, be sure to mention that you are targeting air, and post the error message (and any additional relevant output). Ideally, we can help you figure out a solution, and then we'll also add it to this troubleshooting section, so that everyone can benefit.