0 Replies Latest reply on Jan 9, 2018 12:23 PM by chris.campbell

    12/12/2017 - Release - AIR 28 Runtime and SDK

    chris.campbell Adobe Employee

      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 28.  Please see our release notes for full details.

       

      Announcements

       

      Android AIR Runtime Play Store Availability

      Adobe will be unpublishing the shared AIR Runtime from the Google Play Store for all devices running Android 4.0 or below on March 13th, 2018.  AIR applications that require the shared runtime will not be able to be able to access the required download from the Play Store from these older systems.  We recommend impacted developers convert and republish their applications to use the captive runtime before March 13th.

       

      New Features

       

      Resolution to Adobe AIR applications installation issues

      With the release of Flash Player 28, Adobe AIR applications with SHA-1 certificate can be successfully installed after 30th Oct 2017, without the need of re-packaging the AIR application with a new certificate. Refer to our blog post to view the details of Adobe AIR applications installation issue.

       

      Who should use this resolution?

      If your developed AIR application fails to install after 30th Oct 2017 and application installation log contains the error: “Package signature validation failed”, it indicates that the application is signed with SHA1 certificate.

       

      The location of the log files for different platforms is mentioned in the article: https://helpx.adobe.com/air/kb/logging-air-2-desktop-application.html

       

      Resolution:

      AIR applications with the above-mentioned issue can be installed using two methods.

       

      Using keyboard shortcuts:

      Install the Adobe AIR Runtime

      Steps to follow on Windows:

      1. Go to C:\Program Files (x86)\Common Files\Adobe AIR\Versions\1.0

      2. While holding the "Ctrl" key,  select the Adobe AIR Application Installer.exe -> Right click on it -> Run as Administrator. Do not take your finger off the "ctrl" key until you see the window open up.

      3. Select and open the AIR application to be installed.

      Steps to follow on Mac:

      1. Go to /Applications/Utilities

      2. While holding the "command" key,  double click on the Adobe AIR Application Installer.  Do not take your finger off the "command" key until you see the window open up.

      3. Select and open the AIR application to be installed.

      The Adobe AIR Application should be installed successfully.

       

      Using the new -ignoreExpiredCertificateTimestamp directive while launching AIR Application installer using Command Prompt/Terminal

      Install the Adobe AIR Runtime

      Steps to follow on Windows:

      1. Open a command prompt as Administrator.

      2. Run the following command:

      “C:\Program Files (x86)\Common Files\Adobe AIR\Versions\1.0\Adobe AIR Application Installer.exe” - ignoreExpiredCertificateTimestamp

      3. Window opens up.

      4. Select and open the AIR application to be installed.

      Steps to follow on Mac:

      1. Open Terminal.

      2. Run the following command:

      /Applications/Utilities/Adobe\ AIR\ Application\ Installer.app/Contents/MacOS/Adobe\ AIR\ Application\ Installer/ -ignoreExpiredCertificateTimestamp

      3. Window opens up.

      4. Select the AIR application to be installed.

       

      Adobe AIR Applications gets installed successfully.

       

      Swift based ANE Support in AIR (iOS / tvOS)

      Starting AIR 28, developers will be able to use Swift based ANE for iOS/tvOS. Developers can also use iOS/tvOS based Dynamic Frameworks while packaging the application for respective iOS/tvOS platforms. Dynamic Frameworks signing will be done while packaging the application.

      Steps to create Swift ANE and packaging application:

       

      1. Along with the existing necessary resources for ANE creation, AS developers also need to include dynamic frameworks (relevant .framework files) during ANE creation command. The platform.xml also needs to mention the dynamic frameworks as shown below.

       

      <?xml version="1.0" encoding="utf-8" ?>
        
      <platform xmlns="http://ns.adobe.com/air/extension/28.0">
        
      <linkerOptions>
        
      <option>-rpath @executable_path/Frameworks</option>
        
      </linkerOptions>
        
      <packagedDependencies>
        
      <packagedDependency><dynamic_swift_framework_path></packagedDependency>
        
      </packagedDependencies>
        
      </platform>
      

       

      2. Sample ANE packaging command

       

      adt -package -target ane <ane_file> <extesionxml_file> -swc <swc_file> -platform iPhone-ARM -platformoptions <platformxml_file> -C iPhone-ARM/ . -platform appleTV-ARM -platformoptions <tvOS_platformxml_file> -C appleTV-ARM/ .

       

      • iPhone-ARM folder contains dynamic_swift_framework_file as mentioned in package dependencies in platform_xml, Objective C Static library (.a) built for iOS and library.swf file.
      • appleTV-ARM folder contains dynamic_swift_framework_file for tvOS as mentioned in package dependencies in tvOS_platform_xml, Objective C Static library (.a) built for tvOS and library.swf file.

       

      3. Sample IPA Packaging command

       

      adt -package -target <target> -provisioning-profile <path-to-profile> -storetype pkcs12 -keystore <path-to-certificate> -storepass <password> <ipa_file> <appxml_path> <swf_path> Frameworks -extdir extension

       

      Where the <dynamic_frameworks_and_Swift_Dependencies_path> folder, or subfolders inside it contain Swift Frameworks and its dependencies as mentioned below. These Swift dylibs can be found at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/sw ift/iphoneos for iOS

       

      <dynamic_swift_framework>

      • libswiftCore.dylib
      • libswiftCoreGraphics.dylib
      • libswiftCoreImage.dylib
      • libswiftDarwin.dylib
      • libswiftDispatch.dylib
      • libswiftFoundation.dylib
      • libswiftObjectiveC.dylib
      • libswiftQuartzCore.dylib
      • libswiftUIKit.dylib

       

      For Xcode 9 and Swift 4 support, AS Developers also need to add 3 more swift dependencies as below from iphoneos folder from Xcode.

      • libswiftCoreFoundation.dylib
      • libswiftMetal.dylib
      • libswiftos.dylib

       

      Note - Default MinimumOSVersion values for iOS is 8.0 and for tvOS is 9.0.

       

       

      iOS SDK Upgrade

       

      AIR Runtime is now built with iOS 11 SDK, which enables AIR developers to use ANEs built with iOS 11 APIs without using the –platformSDK switch while packaging with ADT. With iOS 11 SDK, Apple has mandated inclusion of  a few icons in the application. Follow the steps below to incorporate them:

       

      Note: You need to have a Mac machine having Xcode 9.

       

      Launch Xcode 9.

      1. Select File -> New Project -> Single View App (iOS). Fill Product Name, Organization Name and Organization Identifier (no specific names required)

      2. Save the project

      3. Click Assets.xcassets -> AppIcon -> Drag and drop App store icon of size 1024 * 1024 (1024pt, 1x)

      4. Drag and drop iPad App icon of size 76x76 (76pt, 1x) & 152x152 (76pt, 2x)

      5. Drag and drop iPad Pro App icon of size 167x167 (83.5pt, 2x)

      6. Drag and drop iPhone App icon of size 120x120 (60pt, 2x)

      7. Drag and drop iPhone App icon of size 180x180 (60pt, 3x)

      8. In the drop-down select Generic iOS Device as the build target

      9. Build the project ( Product -> Build)

      10. Right-click on your ‘.app’ -> Show in finder

      11. Right-click on your ‘.app’ -> Show package contents

      12. Now copy Assets.car and package with AIR application

       

      All these icons except store icon (1024*1024) need to be packaged along with the application using the icon tags in the app.xml. Refer https://help.apple.com/xcode/mac/current/#/dev4b0ebb1bb for adding icons in assets.car file.

      Note - If you are targeting iOS 11 as the minimum supported OS in the application descriptor, the generated IPA will be 64bit only.

       

       

      Localization of permission purpose strings on iOS

      Starting AIR 28, developers can provide localized purpose strings for the permissions required in the application. Developers are required to package an XML file called purposeStrings.xml in the application. The format of this XML file should adhere to the following. A sample xml file is available in AIR SDK at SDK/samples/purposeStrings-sample.xml. Use the below mentioned command to package a sample application using the purposeStrings.xml file.

       

      adt  -package -target <target> -provisioning-profile <provisioning profile> -storetype pkcs12 -keystore <certificate> -storepass <password> <name of the ipa> <application xml> <swf file> purposeStrings.xml

       

      Note:

       

       

      Android SDK Upgrade

       

      Beginning AIR 28, Android SDK has been upgraded in the AIR Runtime. Here is the list of version numbers of the tools upgraded in AIR 28. There have been significant changes in the tools used to build the runtime. Raise your issues on AIR user forums if you observe any performance or functional issues.

       

      ToolVersion
      Android SDK Platform25 ver 3 (Android 7.1.1)
      Android SDK build tools26.0.1
      Android SDK tools26.0.2
      Android SDK platform tools26.0.0
      Android NDK15.1.4119039
      Android Support Repository47.0.0

       

       

      Android TV Support

      With AIR 28, Android TV support for AIR Android applications comes with more stability and improvements. 

      Developers can develop captive runtime applications that are also compatible with Android TV. Use swf-version 31 or greater and namespace 20.0 or greater to access this feature. The two tags mentioned below need to be added to the app.xml file to support Android TV applications.

       

      1. <supportsAndroidTV></supportsAndroidTV>

      Value for the <supportsAndroidTV> tag can be either "true" or "false". If this tag is not added, then the default value will be "false".

       

      <supportsAndroidTV>true</supportsAndroidTV>: Application is supported on Android TV and it will reflect on the home screen of Android TV after the installation.

       

      <supportsAndroidTV>false</supportsAndroidTV>: Application is not supported on Android TV and it will not be shown on the home screen of the Android TV. However, it will be reflected in the downloaded apps inside Settings of the device.

       

      2. <banner></banner>

      This is the tag where the user can give the banner image path. Application Banners represent your app or game on the home screens of TV devices and serve as a way for users to launch the app. The specific requirements for a banner image are 320 x 180 px, .png,xhdpiresource. In case the developer does not provide the banner image with <supportsAndroidTV>true<supportsAndroidTV> tag, a default banner image will reflect on the home screen of  Android TV. SDK tools should be updated to version 24.0.0 or higher. In order to access new APIs for TV devices, you must create a project or modify an existing project that targets Android 5.0 (API level 21) or higher. Applications can only be packaged with –targetapk-captive-runtime for Android TV. Android TV support is available from AIR SDK 20.0 or higher, and so the namespace needs to be added accordingly inapp.xmlfile.

       

      Sample snippet - Make the below changes in app.xml file parallel to <containsVideo> tag:

      <android>
        
              <manifestAdditions><![CDATA[
        
      <manifest android:installLocation="auto">
        
      .
        
      ..
        
      .
        
      </manifest>
        
      ]]></manifestAdditions>
        
      <supportsAndroidTV>true</supportsAndroidTV>
        
      <banner>"path of the banner image (320x180 px, .png file)"</banner>
        
      </android>
      

       

       

      Support for embed bitcode in iOS/tvOS

      ADT supports a new option -embedBitcode to add bitcode in your iOS and tvOS applications. For more information about Bitcode, see the App Distribution Guide.

      Switch details:
      Name of the switch: -embedBitcode
      Values(iOS): yes or no. Defaults to no
      Values(tvOS):yes or no. Defaults to no(yes for ipa-app-store target as it is a mandatory requirement by Apple)
      Usage: -embedBitcode yes
      Order: Just before the code signing options
        
      Example ADT packaging command:
      <AIRSDK>/bin/adt -package -target <target type> <other options> -embedBitcode yes -provisioning-profile <SampleProvisioning.mobileprovision> -storetype pkcs12 -keystore <SampleCertificate.p12> -storepass <password> Example.ipa Example-app.xml Example.swf
      

       

      Notes:

      • Embedding bitcode enables AIR developers to upload their tvOS applications to the App Store where bitcode is required.
      • Embedding bitcode in your application increases both application size and packaging time.
      • Embedding bitcode requires that all your ANEs also include bitcode. If not present, adt can throw packaging errors such as the following:

      ld: bitcode bundle could not be generated because '/var/folders/d3/yxwv5yn5715fk31lq36lnk780000gn/T/805ef2d4-5fe2-4ec9-a773-a3cc39845fa1/lib .nativeExtension.systemVersion.a(systemVersion.o)' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build for architecture arm64

      Compilation failed while executing : ld64

       

       

      Apple TV support (Beta Quality)

      We have made some enhancements to tvOS support. For more information, see the Release Notes specific to this feature. AIR Runtime is now built with tvOS 11 SDK, which enables AIR developers to use ANEs built with tvOS 11 APIs without using the –platformSDK switch of ADT.

       

       

      AIR Desktop - Audio Device Manager ActionScript API

      The Audio Device Manager ActionScript API was added in Flash Player 27. This functionality is now enabled in AIR starting from AIR 28 for Desktop only. This API provides the functionality of selecting audio output devices. AIR app developer should build their own UI to list the available audio devices in a system and select the device for playback.

       

      When an AIR app is launched, the audio output will play through the system default device. The user can change the audio output device. The selection is valid only for the current session of the AIR app. On-relaunch of the app, the audio will play through system default device.The developer is responsible for the storage of the user selection if it is required.

       

      The audio device selected in one AIR application does not affect the audio from the other AIR applications or Flash Player instances.

       

      The User Invoked Action(UIA) restriction is applicable when an external SWF/HTML which is hosted over the network is loaded by the AIR application. The UIA check implies that the audio device can be changed by user interaction only. If the externally loaded SWF/HTML tries to change the audio output device without any user invoked action, then AIR runtime throws an error "IllegalOperationError" with error code 2176.

       

      More information about the Audio Device Manager API is available at https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/AudioDevic eManager.html

       

      Sample Snippet:

      //Access system available audio device names
      
      var status_ta:TextField = new TextField();
      status_ta.width = 200;
      addChild(status_ta);
      var audio_device_manager:AudioDeviceManager = AudioDeviceManager.audioDeviceManager;
      var audio_output_device_array:Array = audio_device_manager.deviceNames;
      var selected_audio_device:String = audio_output_device_array[audio_device_manager.selectedDeviceIndex];
      status_ta.text = "The default device is: "+selected_audio_device+"\n"+"\n";
      status_ta.text += "You have "+audio_output_device_array.length+" device(s) available."+"\n"+"\n";
      for (var i = 0; i<audio_output_device_array.length; i++) {
          status_ta.text += "["+i+"] "+audio_output_device_array[i]+"\n";
      }
      
      
      //Select an audio output device
      var audio_device_manager:AudioDeviceManager = AudioDeviceManager.audioDeviceManager;
      audio_device_manager.selectedDeviceIndex = desired_audio_output_index;
      
      
      // Monitor audio output change
      function audioOutputChangeHandler(evt:AudioOutputChangeEvent):void
      {
          if (evt.reason == AudioOutputChangeReason.USER_SELECTION) {
              [do something]
          } else if (evt.reason == AudioOutputChangeReason.DEVICE_CHANGE) {
              [do something]
          }
      }
      

       

       

       

      AIR Desktop - Support for selection of GPU preference in multi-GPU system

       

      Till AIR 27, there was no option in AIR to set the preference for use of either of the GPU types. It uses the default GPU type as set by the OS: integrated GPU on Windows and the discrete GPU on Mac OS X.

       

      With AIR 28, developers can set a preference for the use of the specific GPU type, in the AIR application descriptor by adding the "<gpuPreference>" element in the application descriptor as follows:

       

      <application>
      <gpuPreference>(discrete|integrated)</gpuPreference>
      </application>
      The AIR application developer can set the preference for the discrete GPU for better performance, or the integrated for better battery life. This feature is supported only on devices that are equipped with both an integrated GPU and a discrete GPU, and with OSes that support GPU switching functionality.

       

       

      Fixed Issues

       

      • AIR runtime quits unexpectedly after graphics.readGraphicsData is called.(AIR-4198466)
      • Initiating multiple workers simultaneously causes the application to quit unexpectedly.(AIR-4198267)
      • Anti-aliasing on retina OS X desktop display fails/degrades when Context3D backBuffer is set to 1024x768 or greater.(AIR-4198319)
      • [Android] KeyboardEvent.KEY_DOWN dispatched twice for NEXT button (AIR-4198503)
      • [iOS]Artifacts are observed when child Sprite is near bottom of screen(AIR-4198445)
      • [iOS] ADT to correctly sign dynamic frameworks included packaged with iOS app (AIR-4198407)
      • [iOS] ADT to correctly sign dynamic frameworks (AIR-4198408)
      • [IOS] AIR 23 and newer: Compilation failed while executing: compile-abc - Class (...) could not be found. (AIR-4198225)
      • [iOS] StageWebView does not load nor display local HTML content (AIR-4198420)
      • Improving capabilities.language behavior for Android and iOS
      • [iOS] Launch image issues on iPad Pro
      • [Android] Error #3672: Buffer creation failed when using drawToBitmapData (Context3D) while using VideoTexture (AIR-4198290)
      • [Android] No data from "android.intent.action.SEND" Intent on Android (AIR-4197491)
      • Rotate Image Camera IMAGE Mobile Android/IOS (AIR-4167837)
      • [iOS] Interfaces don't function on iOS when shared between swf's (AIR-4194914)
      • [iOS] Apps created using Flex in AOT mode crashes (AIR-4198266)
      • [iOS] Missing entry for IpadPro10.5Inch - therefore incorrect screen size returned (AIR-4198511)

       

       

      Known Issues

       

      • GESTURE_PAN event is not triggered on Mac.( AIR-4198492)
      • [Android] Stage shift offset error on StageText focus (AIR-4198421)
      • [Android] Camera miniature display at top-left corner when StageVideo video playback (AIR-4130641)
      • Flash Builder quits unexpectedly on High Sierra when "Export release build" is selected from the Project menu.
      • [Android] unable to load files from File.desktopDirectory on Android 7 and above (AIR-4198491)

       

       

      Download Locations:

       

      AIR runtime for Windows: 28.0.0.124 Runtime Download

      AIR runtime for Macintosh: 28.0.0.128 Runtime Download

       

      AIR SDK & Compiler for Windows: 28.0.0.124 SDK & Compiler Download

      AIR SDK & Compiler for Macintosh: 28.0.0.128 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 27 SDK and ActionScript Compiler 2.0 in a single SDK called “Adobe AIR 27 SDK & Compiler”.

       

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

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

       

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