0 Replies Latest reply on Aug 24, 2016 6:32 AM by Milind.Jha

    8/24/2016 - Beta - AIR

    Milind.Jha Adobe Employee (Admin)

      Welcome to the latest AIR Runtime and SDK version 23 beta!  We've been hard at work adding new features to AIR and we're looking forward to receiving feedback from our development community.

      This beta release includes new features as well as enhancements and bug fixes related to security, stability, performance, and device compatibility for AIR Runtime and SDK 23.  For full details, please see our release notes

      New and Updated 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

      Starting AIR 23, we have introduced Echo Cancellation for AIR on Android.Acoustic echo occurs when the speaker output feeds back to the built-in microphone input, producing disturbing echoing artifacts and significantly reducing the quality of captured data.


      Acoustic echo arises in collaboration applications, where two or more parties carry out interactive conversation. From this release onwards, developers can develop VOIP applications without any echo using AIR on Android.


      Note: This feature is already present on AIR for desktop and iOS Platform. For more information, see Microphone - AS3.


      Following changes are required in the action script code:




      To get access to device Microphone, we use Microphone.getMicrophone(). However, this API returns a simple microphone, which does not have the ability to eliminate acoustic echo. To remove the acoustic echo, developers must get an instance of Microphone using the API: Microphone.getEnhancedMicrophone(). The device microphone returned by this API has the acoustic echo cancellation feature enabled.



      • Add the following tag under Android manifest additions:                     

                <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.


      Sample snippet

      Here is the example code snippet for this scenario:


      public function Microphoe()


      mic = Microphone.getEnhancedMicrophone();


      mic.rate =22;

      mic.addEventListener(StatusEvent.STATUS, mic_status);




      • Acoustic Echo Cancellation may not work on some devices (such as the Moto G2) because of hardware side limitations.    
      • 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

      While creating StageText object on iOS, a clear button option is available by default to the AS developers. Beginning with AIR 23, a new feature has been introduced, which makes the StageText clear button optional. This provides more flexibility to the AS developers when using StageText. In the earlier versions, StageText object was created with an integrated clear button.


      To implement this feature, following changes are required in the ActionScript code:



      For getting access to the optional clear button support, AS developers can now use a clearButtonMode property to set different modes.There are four modes associated with this property:

      • To show clearButton while editing: StageTextClearButtonMode.WHILE_EDITING
      • 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.



      • 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

      Known Issues

      • [Asynchronous Texture Upload]Time lag is observed when a new texture is uploaded asynchronously while the main thread is rendering the texture.
      • [Windows] ADL becomes unresponsive when manipulating frame tree of a new frame, before it has been installed in a frame tree (4175625)
      • [Android] softKeyboardRect height is incorrect (4085072)
      • [iOS 10] Apps are not visible on devices once installed using adt -installApp command
      • [iOS] VideoTexture on iOS - sometimes the event TEXTURE_READY isn't dispatched (4150401)
      • [iOS] Capabilities.screenDPI gives a wrong value on AIR 22 simulator (4157457)
      • [iOS] Context3D.drawToBitmapData uses wrong offset on mobile (4147414)
      • [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)
      • [iOS] TextField with TextFieldType.INPUT cuts off text on the left side when focused (4009346)
      • [iOS] ld-64 Compilation getting failed while packaging app with multiple swf and ANE (4182822)

      Fixed Issues

      • ATF Textures (with JPEG Compression) are not rendered properly on MALI GPU.(3961778)
      • [Windows]TextField contextMenu displaying with offset with HiDPI (a.k.a. Retina) screens.(4176561)
      • For HiDPI machines, setting the NativeWindow bound property to a negative value on main monitor results in an increase of NativeWindow bound on the secondary monitor when the main monitor has a greater DPI than the secondary monitor(4176046)
      • The "Tab" and "Shift+Tab" keyboard shortcuts do not work on Text Field(4174808)
      • [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] Capabilities.screenDPI gives a wrong value on AIR 22 simulator (4157457)
      • [iOS] TextField with TextFieldType.INPUT cuts off text on the left when focused (4009346)
      • [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] sharedobjects fail when available storage is low (3711301)
      • [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] StageWebView makes application crash (4180325)
      • [iOS] Context3D.drawToBitmapData uses wrong offset on mobile (4147414)

      Authoring for Flash Player 23 and AIR 23

      • Update application descriptor namespace to 23
      • SWF version should be 34

      System Requirements

      For system requirements of the current release of AIR in production, visit http://www.adobe.com/products/air/systemreqs/

      About the Beta Channel

      To get the latest Beta build of AIR Runtime and SDK visit Adobe labs

      If you would like real-time notification for announcements related to the AIR Beta Channel please follow the Flash Runtime Announcements forums by choosing "Follow this forum" from the right-hand menu on the Forums page.