0 Replies Latest reply on Feb 4, 2017 7:25 AM by Milind.Jha

    02/03/2017 - Beta - AIR 25.0.0.108

    Milind.Jha Adobe Employee (Admin)

      Welcome to the AIR Runtime and SDK version 25 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 25.  For full details, please see our release notes

      New and Updated Features

      Apple TV support (Beta channel only)

      We have made some enhancements to tvOS support which was introduced in AIR 24 beta. Please see the release notes specific to this feature here

      iOS SDK Upgrade

      AIR Runtime is now built with iOS 10 SDK, which enables AIR developers to use ANEs built with iOS 10 APIs without using the –platformSDK switch while packaging with ADT.

      Option to fallback to older Video pipeline for Android

      AIR 22 had significant changes to the Android Video pipeline. For more information, see the Release Notes for that release. If your application is facing issues because of these changes, starting AIR 25, you can fallback to the older video pipeline.using a new tag named <disableMediaCodec> in application descriptor to enable/disable MediaCodec for Android. On setting this flag as true MediaCodec is disabled and video is decoded using OpenMax AL just like in AIR 21. The default value for this tag is false.

      Sample snippet:

      Here is an example code snippet for disabling MediaCodec.

      <android>

                  <manifestAdditions><![CDATA[

                 

                 

                  ]]></manifestAdditions>

                  <disableMediaCodec>true</disableMediaCodec>

      </android>

      AS3 API to get Compilation Information for iOS

      Starting AIR 25 (with swf version 36 and above) we have a new API for ActionScript developers to determine if their application is running with compiled runtime or interpreted runtime. The new API “isCompiledAOT” is added to NativeApplication class.

      This API returns true if the application is built using one of the following AOT targets:

      • 1. ipa-app-store
      • 2. ipa-test
      • 3. ipa-debug
      • 4. ipa-ad-hoc

      This API returns false for any other iOS target and other AIR platforms like AIR android and AIR desktop.

       

      Local Storage Support in StageWebView for Android

      Starting AIR 25 (with swf version 36 and above), local storage in StageWebView is available for Android. Now, the sites that require local DOM storage work as expected on StageWebView.

       

      Sample snippet:

      For example, the below HTML page will load correctly in StageWebView using AIR 25.

       

      <html>

          <script>

              function enableStore(){

                  localStorage.setItem("set", "Storage enabled");

                  document.getElementById("abc").innerHTML = localStorage.getItem("set");

              }

          </script>

          <body>

              <h1 id="abc"> Storage disabled </h1>

              <script> enableStore() </script>

          </body>

      </html>

       

      Result: "Storage enabled"

      Adding support for new languages in AIR Mobile


      Starting AIR 25, we have added support for the following languages:

      • Danish (da),
      • Norwegian (nb), and
      • Hebrew (iw).

       

      Note:To use these languages, the Namespace value in application descriptor must be 25.0 or greater.

       

      Sample Snippet:

       

      <supportedLanguages>da en nb</supportedLanguages>

      <name>

      <text xml:lang="da">NameInDanish</text>

      </name>

       

      Multidex support for Android

      Starting AIR 25, MultiDex support is available for Android. Through MultiDexing, developers can package apps that exceed the 64K references limit. Usually, 64K references limit reach when the ANEs have a lot of methods.

      More information on Android Multidex can be found here: https://developer.android.com/studio/build/multidex.html.

      Note: If you use ANEs containing pre-dex libraries, there will be a packaging error when you try to package it.

       

      Offset support for drawToBitmapData()

      Beginning AIR 25, capturing current buffer data of the back render buffer through drawToBitmapData() allows offsets for capturing a target rectangle from buffer instead of complete buffer.

      The feature is supported on Windows, Mac, iOS and android platforms.

       

      Background:

      drawToBitmapdata(BitmapData) is used to draw the current render buffer to a destination bitmap. It used to take a bitmap input to which it would copy the complete buffer content.

       

      Offset Implementation:

      Starting AIR 25, the API drawToBitmapData( destination:BitmapData, srcRect:Rectangle = null, destPoint:Point = null) copies a particular target area from the buffer and copies it to the bitmap.

       

      The API takes the following inputs:

      • Destination Bitmap(Bitmap): Bitmap to which rendered buffer data would be copied to.
      • Source Rectangle(srcRect): Rectangle defined on the back render buffer, from which the data would be copied
      • Destination point(destPoint): Offset on the bitmap where the data will be copied to.

       

      This can be understood by the following demonstration:

      offsest.png

      Some important points:

      • If the source rectangle goes beyond the current render buffer, the rectangle part extending beyond the dimensions of buffer is clipped, this is similar to target area of Stage3D as in the representation above.
      • If the target area selected in the above step goes beyond the dimensions of the bitmap, the part extending beyond bitmap is clipped.
      • The actual target area would be final bitmap data according to the rectangle size and the bitmap size and offsets chosen.
      • In case, the offsets (destination offset, source rectangle offset) falls out of the dimensions or are set negative, “Error #3802: Offset outside stage coordinate bound” would be thrown.
      • If the values for source rectangle and the destination offset is set null, the API falls back to the older implementation where complete buffer is copied to the bitmap.

      Instanced Drawing on AIR Desktop

      Instanced drawing feature which was available for AIR Mobile is now available in AIR Desktop. This feature helps developers to use a  model of graphical object and render it multiple times in a single frame. This reduces draw calls and hence rendering and overall

      performance is smoother.

      Similar to AIR Mobile, to use this feature on Desktop ,developers can use the createVertexBufferForIntance() and drawTriangleInstanced() APIs.

      Context3D::createVertexBufferForInstances( numElements:int, data32PerElement:int, instancesPerElement:int, bufferUsage:String = "staticDraw", ):VertexBuffer3D;

      Use the VertexBuffer3D object to upload a set of instance data to the rendering context.  The vertex buffer contains the data needed to render each instance in the scene geometry.  Vertex Buffers with instance data provide attributes that are common to all the vertices of an instance and serve as the input to the vertex shader program.

      Context3D::drawTrianglesInstanced( indexBuffer:IndexBuffer3D, numInstances, firstIndex:int=0, numTriangles:int=-1 ):void;

      AGAL version 3 with “iid” register can be downloaded from:

      AGALv3 is available at : https://github.com/adobe-flash/graphicscorelib/tree/master/src/com/adobe/utils/v3

      Assumptions and Dependencies

      • 1) This feature is supported only on devices that support Standard Extended Profile
      • 2) This feature is only available in AIR Mobile and Desktop.

      Known Issues

      • [Android] Allocations made by async texture upload are not freed up after multiple asynchronous uploads(AIR-4198245)
      • [MAC] Adobe AIR_64 Helper and ExtendedAppEntryTemplate64 creates problems while codesigning MAC Captive App.(AIR-4189809)

      Fixed Issues

      • Starling does not display any content on Integrated GPU Intel HD Graphics with AIR 24( AIR-4198176, AIR-4198227 ).
      • Unable to install the application on iOS Simulator(AIR-4198023)
      • TEXTURE_READY event is dispatched very soon when uploading the RectangleTexture repeatedly(AIR-4198247)
      • [Android] OpenSSL library upgraded to 1.0.2j version
      • [Android] Context loss in Stage3D on android after displaying native dialog
      • [Android] Capabilities.screenResolution return a wrong values (AIR-4198240)
      • [iOS] Clipboard.clear() crashes application on iOS 10 (AIR-4198156)
      • [iOS] Packaging of application fails with message ANE is not a valid native extension file (AIR-4198128)
      • [Android] ANE on Android fails to load shared native objects when app is installed on a SD card
      • [Android] stage.fullScreenHeight is returning wrong value on Android with immersive full screen
      • [Android] On using Ane's which contain resources having attribute names same as any of the attribute names of the AppCompat resources, the packaging will fail.
      • [Android] <supports-gl-texture> tag in Android manifestAdditions prevents project from building (AIR-4123604)
      • [iOS] Sound starts to crackle on using SampleDataEvent with microphone and sound class.
      • [iOS]Flare 3D is rendered incorrectly when anti-aliasing is used.

      Authoring for Flash Player 25 and AIR 25

      • Update application descriptor namespace to 25
      • SWF version should be 36

      System Requirements

      For system requirements of the current release of AIR in production, visithttp://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.