Copy link to clipboard
Copied
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/ .
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/swift/iphoneos for iOS
<dynamic_swift_framework>
For Xcode 9 and Swift 4 support, AS Developers also need to add 3 more swift dependencies as below from iphoneos folder from Xcode.
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.
Select File -> New Project -> Single View App (iOS). Fill Product Name, Organization Name and Organization Identifier (no specific names required)
Save the project
Click Assets.xcassets -> AppIcon -> Drag and drop App store icon of size 1024 * 1024 (1024pt, 1x)
Drag and drop iPad App icon of size 76x76 (76pt, 1x) & 152x152 (76pt, 2x)
Drag and drop iPad Pro App icon of size 167x167 (83.5pt, 2x)
Drag and drop iPhone App icon of size 120x120 (60pt, 2x)
Drag and drop iPhone App icon of size 180x180 (60pt, 3x)
In the drop-down select Generic iOS Device as the build target
Build the project ( Product -> Build)
Right-click on your ‘.app’ -> Show in finder
Right-click on your ‘.app’ -> Show package contents
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.
Tool | Version |
Android SDK Platform | 25 ver 3 (Android 7.1.1) |
Android SDK build tools | 26.0.1 |
Android SDK tools | 26.0.2 |
Android SDK platform tools | 26.0.0 |
Android NDK | 15.1.4119039 |
Android Support Repository | 47.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
>
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:
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.
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/AudioDeviceManager.h...
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+
"\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]
}
}
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>Fixed Issues
Known Issues
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