9/13/2016 - Release - AIR 23 Runtime and SDK

Adobe Employee ,
Sep 15, 2016 Sep 15, 2016

Copy link to clipboard


Today we're pleased to announce that the next version of AIR is available for immediate download.  This release of AIR provides bug fixes, security updates, and new features.

Below are some of the key features and benefits of AIR 23.  Please see our release notes for full details.

New Features:

GameInput API for iOS

Starting AIR 23, we are providing GameInput API support for iOS. GameInput API is an interface that allows applications to communicate with attached Game controllers. There are different types of Game Controllers depending on the number of controls. This API allows an application to get all information related to the Game controller.

GameInput API support has already been available for Android. On iOS, it requires a minimum swf version of 34. This API supports iOS devices running on iOS version 9.0 or higher.

GameInput API Example:

        trace("GameInput.isSupported - "+ GameInput.isSupported);
        trace("GameInput.numDevices - "+ GameInput.numDevices);
        gameInput = newGameInput();
        gameInput.addEventListener(GameInputEvent.DEVICE_ADDED, inputDeviceAddedEvent);
        gameInput.addEventListener(GameInputEvent.DEVICE_REMOVED, inputDeviceRemovedEvent);
            trace("inputDeviceRemovedEvent - "+ e.device);
            trace("inputDeviceAddedEvent - "+ e.device);
            trace("device.enabled - "+ device.enabled);
            trace("device.id - "+ device.id);
            trace("device.name - "+ device.name);
            trace("device.numControls - "+ device.numControls);
            trace("device.sampleInterval - "+ device.sampleInterval);
            for(vari:Number=0; i < device.numControls; i++)
                varcontrol:GameInputControl = device.getControlAt(i);
                control.addEventListener(Event.CHANGE, changeEvent);
            varcontrol:GameInputControl = e.target asGameInputControl;
            trace("control.device - "+ control.device);
            trace("control.value - "+ control.value);
            trace("control.minValue - "+ control.minValue);
            trace("control.maxValue - "+ control.maxValue);
            trace("control.id - "+ control.id);

Asynchronous Texture Upload for Mobile

Till AIR 22, texture upload was synchronous and developers had to wait till a new texture was uploaded successfully

With AIR 23, you can upload textures asynchronously while current texture is being rendered. This will ensure better UI performance for AIR applications and a smoother user experience.

On successful completion of asynchronous texture upload a TEXTURE_READY event will be generated. Asynchronous upload of texture data for all texture formats for all mip levels is done through two new APIs:

  • uploadFromBitmapDataAsync( source:BitmapData, miplevel:uint = 0)
  • uploadFromByteArrayAsync( data:ByteArray, byteArrayOffset:uint, miplevel:uint = 0 )

Echo Cancellation on AIR for Android

          <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

  • There may be pre-existing swfs that use Microphone. getEnhacedMicrohone () API (as it is already present and working for AIR desktop applications). If such swf files are packaged with the latest AIRSDK (version 23), the feature will not work. Developers need to recompile the swf with swf-version 34 or higher.
  • The API MicrophoneEnhancedOptions (present on AIR for desktop) will be a no-op on AIR for Android.    
  • Performance of the feature can vary depending upon the hardware side handling of echo cancellation for different Android devices. For the devices that do not support Echo Cancellation at the hardware level, AIR will handle the echo cancellation from the software side.    
  • Acoustic effects of the microphone class will vary according to the device. Because the Android Family has devices with different hardware configurations, the same audio settings will have different impact on different devices. For example, a developer may have to use "mic.gain = 70;" for Samsung Note 4 for loud output of the voice.

The StageText clear button is now optional on iOS

  • To never show clearButton: StageTextClearButtonMode.NEVER
  • To always show clearButton: StageTextClearButtonMode.ALWAYS
  • To show clearButton unless editing: StageTextClearButtonMode.UNLESS_EDITING

By default,  clearButtonMode property is set as StageTextClearButtonMode.WHILE_EDITING. Requirements

  • The application must be packaged with latest AIR SDK (version 23).
  • SWF version must be 34 or later.

Sample snippet

You can use this example code snippet for your reference. public function ClearButtonMode(){label = new StageText();label.clearButtonMode = StageTextClearButtonMode.NEVER;label.textAlign = "right";label.stage = stage;label.viewPort = new Rectangle(20, 20, 90, 90);}

Limitations for using stageText.clearButtonMode property    

  • This property is not available in StageText with multi-line   
  • This property is a No-Op for Android          

Win: Add HiDPI support for AIR desktop (Release)

Beginning with AIR 23, HiDPI support for AIR Desktop on Windows has been introduced. It allows you to provide a higher quality rendering for AIR content on HiDPI displays. This feature works on the concept of higher pixel density scaling instead of pixel-doubling scaling.

Note: HiDPI is already available for AIR on Mac Retina displays.

To implement this feature in an AIR app, the developer should set requestedDisplayResolution as high in the manifest file.

  • requestedDisplayResolution set high

Fixed Issues

  • [iOS] ld-64 Compilation getting failed while packaging app with multiple swf and ANE (4182822)
  • [iOS] Capabilities.screenDPI gives a wrong value on AIR 22 simulator (4157457)
  • [iOS] Context3D.drawToBitmapData uses wrong offset on mobile (4147414)
  • [iOS] TextField with TextFieldType.INPUT cuts off text on the left side when focused (4009346)
  • [iOS] StageWebView makes application crash (4180325)
  • [Android] MP4 Video rendering completely broken in Air 22 on all version of Android (4167492)
  • [Android] Full screen display states must use immersive mode on Android 4.4+ (4100625)
  • [Android] OpenSSL library upgraded to 1.0.2h version
  • [iOS] App using concurrency closes when a class is instantiated on the worker .swf (4067035)
  • [iOS] CameraRoll on iOS returns Bitmap in incorrect orientation (4070057)
  • [iOS] [Windows] Error, ld: in section __TEXT,__text reloc 153: R_ABS reloc but no absolute symbol at target address for architecture arm64 while packaging Application with Social.ane using flag -hideAneLibSymbols yes (4005515)
  • [iOS] sharedobjects fail when available storage is low (3711301)
  • TextField contextMenu displayed with offset with HiDPI screens (4177810)

Known Issues:

  • [Android] softKeyboardRect height is incorrect (4085072)
  • [iOS] VideoTexture on iOS - sometimes the event TEXTURE_READY isn't dispatched (4150401)
  • [iOS] Crash when trying to access function arguments (4117964)
  • [iOS] Landscape mode is not able to initiate the camera and the app crashes in debug mode (4168916)
  • [Android N] AIR apps are not able to recognise display changes & font size as per the new Android N features (4186054)
  • TextField: delay after creation of first TextField (4133187)

Download Locations:

AIR runtime for Windows: Runtime Download

AIR runtime for Macintosh: Runtime Download

AIR SDK & Compiler for Windows: SDK & Compiler Download

AIR SDK & Compiler for Macintosh: SDK & Compiler Download

Note: To provide all the all the necessary tools for our developers in one place and avoid having to download multiple components, we are packaging Adobe AIR 23 SDK and ActionScript Compiler 2.0 in a single SDK called “Adobe AIR 23 SDK & Compiler”.

AIR SDK (Compatible with Flex) for Windows: SDK Windows Download

AIR SDK (Compatible with Flex) for Macintosh: SDK Macintosh Download

Previous versions of the AIR runtime and SDK can be found on the Archived AIR SDK and Runtimes page

Runtime announcements








Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines