Device profiles

Adobe AIR 2 and later

Profiles are a mechanism for defining the classes of computing devices on which your application works. A profile defines a set of APIs and capabilities typically supported on a particular class of device. The available profiles include:

  • desktop

  • extendedDesktop

  • mobileDevice

  • extendedMobileDevice

You can define the profiles for your application in the application descriptor. Users of computers and devices in the included profiles can install your application, users of other computers and devices cannot. For example, if you include only the desktop profile in your application descriptor, users can install and run your application only on desktop computers.

If you include a profile that your application does not truly support, the user experience in such environments may be poor. If you do not specify any profiles in the application descriptor, then AIR does not limit your application. You can package the application in any of the supported formats, and users with devices from any profile can install it — however, it may fail to work properly at runtime.

Where possible, profile restrictions are enforced when you package your application. For example, if you include only the extendedDesktop profile, then you cannot package your application as an AIR file — only as a native installer. Likewise, if you do not include the mobileDevice profile, you cannot package your application as an Android APK.

A single computing device can support more than one profile. For example, AIR on desktop computers support applications from both the desktop and the extendedDesktop profiles. However, an extended desktop profile application can communicate with native processes and MUST be packaged as a native installer (exe, dmg, deb, or rpm). A desktop profile application, on the other hand, cannot communicate with a native process. A desktop profile application can be packaged as either an AIR file or a native installer.

The inclusion of a feature in a profile indicates that support for that feature is common in the class of devices for which that profile is defined. However, it does not mean that every device in a profile supports every feature. For example, most, but not all, mobile phones contain an accelerometer. Classes and features that do not have universal support usually have a boolean property that you can check before using the feature. In the accelerometer case, for instance, you can test the static property Accelerometer.isSupported to determine whether the current device has a supported accelerometer.

There are following profiles can be assigned to your AIR application using the supportedProfiles element in the application descriptor:

Desktop
The desktop profile defines a set of capabilities for AIR applications that are installed as AIR files on a desktop computer. These applications install and run on supported desktop platforms (Mac OS, Windows, and Linux). AIR applications developed in versions of AIR before AIR 2 can be considered to be in the desktop profile. Some APIs are non-functioning in this profile. For example, desktop applications cannot communicate with native processes.

Extended desktop
The extended desktop profile defines a set of capabilities for AIR applications that are packaged into and installed with a native installer. These native installers are EXE files on Windows, DMG files on Mac OS, and BIN, DEB, or RPM files on Linux. Extended desktop applications have additional capabilities that are not available in desktop profile applications. For more information, see Packaging a desktop native installer.

Mobile device
The mobile device profile defines a set of capabilities for applications that are installed on mobile devices such as cell phones and tablets. These applications install and run on supported mobile platforms, including Android, Blackberry Tablet OS, and iOS.

Extended mobile device
The extended mobile device profile defines an extended set of capabilities for applications that are installed on mobile devices. Currently, there are no devices that support this profile.

Restricting target profiles in the application descriptor file

As of AIR 2, the application descriptor file includes a supportedProfiles element, which lets you restrict target profiles. For example, the following setting specifies that the application is only available in the desktop profile:
<supportedProfiles>desktop</supportedProfiles>

When this element is set, the application can only be packaged in the profiles you list. Use the following values:

  • desktop—The desktop profile

  • extendedDesktop—The extended desktop profile

  • mobileDevice—The mobile device profile

The supportedProfiles element is optional. When you do not include this element in the application descriptor file, the application can be packaged and deployed for any profile.

To specify multiple profiles in the supportedProfiles element, separate each with a space character, as in the following:

<supportedProfiles>desktop extendedDesktop</supportedProfiles>

Capabilities of different profiles

The following table lists the classes and features that are not supported in all profiles.

Class or Feature

desktop

extendedDesktop

mobileDevice

Accelerometer (Accelerometer.isSupported)

No

No

Check

Accessibility (Capabilities.hasAccessibility)

Yes

Yes

No

Acoustic echo cancelation (Microphone.getEnhancedMicrophone())

Yes

Yes

No

ActionScript 2

Yes

Yes

No

CacheAsBitmap matrix

No

No

Yes

Camera (Camera.isSupported)

Yes

Yes

Yes

CameraRoll

No

No

Yes

CameraUI (CameraUI.isSupported)

No

No

Yes

Captive runtime bundles

Yes

Yes

Yes

ContextMenu (ContextMenu.isSupported)

Yes

Yes

No

DatagramSocket (DatagramSocket.isSupported)

Yes

Yes

Yes

DockIcon (NativeApplication.supportsDockIcon)

Check

Check

No

Drag-and-drop (NativeDragManager.isSupported)

Yes

Yes

Check

EncyptedLocalStore (EncyptedLocalStore.isSupported)

Yes

Yes

Yes

Flash Access (DRMManager.isSupported)

Yes

Yes

No

GameInput (GameInput.isSupported)

No

No

No

Geolocation (Geolocation.isSupported)

No

No

Check

HTMLLoader (HTMLLoader.isSupported)

Yes

Yes

No

IME (IME.isSupported)

Yes

Yes

Check

LocalConnection (LocalConnection.isSupported)

Yes

Yes

No

Microphone (Microphone.isSupported)

Yes

Yes

Check

Multichannel audio (Capabilities.hasMultiChannelAudio())

No

No

No

Native Extensions

No

Yes

Yes

NativeMenu (NativeMenu.isSupported)

Yes

Yes

No

NativeProcess (NativeProcess.isSupported)

No

Yes

No

NativeWindow (NativeWindow.isSupported)

Yes

Yes

No

NetworkInfo (NetworkInfo.isSupported)

Yes

Yes

Check

Open files with default application

Limited

Yes

No

PrintJob (PrintJob.isSupported

Yes

Yes

No

SecureSocket (SecureSocket.isSupported)

Yes

Yes

No

ServerSocket (ServerSocket.isSupported)

Yes

Yes

Yes

Shader

Yes

Yes

Limited

Stage3D (Stage.stage3Ds.length)

Yes

Yes

Yes

Stage orientation (Stage.supportsOrientationChange)

No

No

Yes

StageVideo

No

No

Check

StageWebView (StageWebView.isSupported)

Yes

Yes

Yes

Start application at login (NativeApplication.supportsStartAtLogin)

Yes

Yes

No

StorageVolumeInfo (StorageVolumeInfo.isSupported)

Yes

Yes

No

System idle mode

No

No

Yes

SystemTrayIcon (NativeApplication.supportsSystemTrayIcon)

Check

Check

No

Text Layout Framework input

Yes

Yes

No

Updater (Updater.isSupported)

Yes

No

No

XMLSignatureValidator (XMLSignatureValidator.isSupported)

Yes

Yes

No

The entries in the table have the following meanings:

  • Check — The feature is supported on some, but not all devices in the profile. You should check at runtime whether the feature is supported before using it.

  • Limited — The feature is supported, but has significant limitations. See the relevant documentation for more information.

  • No — The feature is not supported in the profile.

  • Yes — The feature is supported in the profile. Note that individual computing devices make lack the hardware necessary for a feature. For example, not all phones have cameras.

Specifying profiles when debugging with ADL

ADL checks if you specify supported profiles in the supportedProfiles element of the application descriptor file. If you do, by default ADL uses the first supported profile listed as the profile when debugging.

You can specify a profile for the ADL debug session by using the -profile command-line argument. (See AIR Debug Launcher (ADL).) You can use this argument regardless of whether you specify a profile in the supportedProfiles element in the application descriptor file. However, if you do specify a supportedProfiles element, it must include the profile you specify in the command line. Otherwise, ADL generates an error.