Welcome to the developer release notes for Adobe AIR 2.6. This update includes enhanced mobile platform support for Android and iOS, and bug fixes related to security, stability, performance, and device compatibility.
Release notes for Adobe AIR 2.6 for developers
|Processor||Minimum: Intel® Pentium® III 1GHz or faster processor Recommended: Pentium 4 2GHz or faster||Intel Core™ Duo 1.83GHz or faster processor.||Minimum: Intel® Pentium® III 1GHz or faster processor Recommended: Pentium 4 2GHz or faster||ARMv7 processor with Vector FPU Minimum 550Mhz OpenGL ES2.0 H.264 & AAC H/W Decoders||iPod Touch 3rd & 4th generation iPhone 3GS and iPhone 4 iPad|
|Operating System||Microsoft® Windows® XP Home, Professional, or Tablet PC Edition with Service Pack 2 or 3 (including 64 bit editions), Windows Server® 2003, Windows Vista® Home Premium, Business, Ultimate, or Enterprise (including 64-bit editions) with Service Pack 1, or Windows 7 (including 64 bit editions)||Mac OS X 10.4, 10.5 and 10.6||Fedora Core 13, Ubuntu 10.10, openSUSE 11.3||Google Android™ 2.2, 2.3 and 3.0||OS 4 and higher|
|RAM||Minimum: 512MB RAM; Recommended: 1GB RAM||Minimum: 512MB RAM; Recommended: 1GB RAM||1 GB RAM||256MB RAM|
|Supported desktop environments||GNOME and KDE|
|Package management systems||RPM or Debian|
|Minimum GTK+ version||2.6|
|Window managers||Metacity (default for GNOME) and KWin (default for KDE)|
|Transparency||Support for transparency in AIR applications requires a compositing window manager and additional X server extensions. The following are supported: Compositing window managers: Beryl, Compiz, Compiz-fusion X server extensions: Composite, Render, Shape|
|Flash Player||Seamless (badge) installation from the web requires Flash Player 10.0.15.3 or later|
Libraries required AIR 2.6 on Linux
A list of libraries required to run AIR 2.6 on Linux are listed in the following Adobe Knowledge Base (KB) article: http://kb2.adobe.com/cps/838/cpsid_83888.html
Adobe AIR 2.6 installation and runtime user experience supports the following languages:
- Chinese Simplified
- Chinese Traditional
- Brazilian Portuguese
- The version of WebKit in AIR 2.6 is based on the version shipped with Safari 4.0.3.
- The version of Flash Player included in AIR 2.6 is 10.2.159.1.
What's new in AIR 2.6
You must update your application descriptor file to the 2.6 namespace in order to access the new AIR 2.6 APIs and behavior. If your application does not require the new AIR 2.6 APIs and behavior, you are not required to update the namespace. However, we recommend all users start using the AIR 2.6 namespace even if you are not yet taking advantage of the new 2.6 capabilities. To update the namespace, change the xmlns attribute in your application descriptor to:
AIR 2.6 supports packaging applications for iOS 4. iOS 3 is not supported.
- iOS support: 4.0 and above
- iOS Hardware Support:
- iPod Touch 3rd gen and iPod Touch 4th gen
- iPhone 3GS and iPhone 4
The PFI command-line tool is no longer used to package iOS applications. iOS applications (IPA files) can now be packaged using the ADT command-line tool, which is located in the bin folder of the AIR 2.6 SDK. The command-line syntax for packaging IPA files is same as before.
AIR 2.6 changes the way GPU rendering works on iPhone. The new rendering works the same as GPU mode on AIR 2.5 for Android. GPU mode is still enabled by specifying <renderMode>gpu</renderMode> in the application descriptor.
AIR applications on iOS 4 continue to run even when moved to the background. The AIR application is paused when the application enters the background and then unpaused when the application is brought back to the foreground. Prior to pausing the application, the flash.desktop.NativeApplication object dispatches a DEACTIVATE event. After it is unpaused, the flash.desktop.NativeApplication dispatches an ACTIVATE event.
It is now possible to capture audio from a microphone on a supported iOS device using the flash.media.Microphone class.
It is now possible to build an application that can browse for an image in the device camera roll using the flash.media.CameraRoll class.
It is now possible to capture a still image or video using the default camera application on the device using the flash.media.CameraUI class.
It is now possible for an application to access video from the device camera using the flash.media.Camera class. Both the front-facing and rear-facing camera can be accessed, but you can only use video from a single camera at a time.
It is now possible to use the higher resolution of iPhone and iPod devices with a Retina display in AIR Applications. To access the full 960x640 resolution, add the <requestedDisplayResolution> element to your application descriptor, setting the value to high.
In high-resolution mode, you can address each pixel on a high-resolution display individually. In the standard mode, the device screen will appear to your application as a standard resolution screen. Drawing a single pixel in standard mode will set the color of four pixels on the high-resolution screen.
The default setting is standard. If an application is run on a device without a Retina display, then the stage appears as 480x320 pixels regardless of the <requestedDisplayResolution> setting.
<iPhone> <InfoAdditions><![CDATA[...]]></InfoAdditions> <requestedDisplayResolution>high</requestedDisplayResolution> </iPhone>
In addition, you must add an icon of size 114x114 pixels to the application for use on high-resolution devices and add the path to the icon in the application descriptor:
<icon> <icon114x114>icons/icon114.png</icon114x114> </icon>
For testing on the desktop, you can use the predefined value "iPhoneRetina" with the adl -screensize switch.
It is now possible to display HTML content in an application using the flash.media.StageWebView class.
There are a few differences in StageWebView behavior between iOS and Android devices:
- On iOS, focus cannot be set programatically (the assignFocus() method doesn't do anything on iOS). A StageWebView instance dispatches focusIn and focusOut events with the direction property of FocusEvent set to "none". When user tap inside the StageWebView, the focusIn event is dispatched. When user touches outside the StageWebView the focusOut event is dispatched.
- LocationChangeEvent event for redirect:
- On iOS, locationChanging and locationChange events are dispatched for every redirect (Note: On the first loaded page, only locationChange is dispatched)
- On Android, a locationChanging event is dispatched for every redirect. locationChange is dispached only for the last redirect (Note: On the first loaded page, locationChange is not dispatched)
- On Desktop, a locationChanging event is dispatched for every redirect. locationChange is dispached only for the last redirect (Note: On the first loaded page, only locationChange is dispatched)
- Rendering of pages inside StageWebView
- On iOS, the page loaded is scaled to fit the StageWebView view port
- On Android, the page is rendered without being scaled to fit the view port
- SWF in html is not supported on StageWebView for iOS
It is now possible to capture a bitmap representation of the content currently being rendered in a StageWebView view port using the drawViewPortToBitmapData() method.
This method can only be called by applications using the 2.6 application namespace and compiled for SWF version 11.
Important: Unless the stage property of the StageWebView is set, its contents will not be saved to the BitmapData object when calling drawViewPortToBitmapData(). Also, rendering HTML content that uses plugins (e.g. SWF, PDF) is currently not supported and the behavior will be platform dependent.
On iOS devices with high-resolution screens (iPhone 4, iPod Touch 4G, iPad), you must set the <requestedDisplayResolution>high</requestedDisplayResolution> element in the application descriptor for the captured bitmap to have the same fidelity as the rendering in the StageWebView object.
It is now possible to detect when a soft keyboard is open or closed and to open a soft keyboard programatically.
This feature can only be used by applications using the 2.6 application namespace and compiled for SWF version 11.
It is now possible to disable the default behavior that adjusts the display to keep text fields in view when the soft keyboard opens. By adding the <softKeyboardBehavior>none</softKeyboardBehavior> element to the application descriptor, you can turn off the default behavior and provide your own logic for adjusting the display.
The Android USB drivers are in the install folder of the Windows AIR SDK. When you connect your Android devices to your machine, follow Microsoft's instructions to install the USB drivers. Some Android devices are not in the device support list. In these cases, you should contact your device manufacturer for the instructions to install the appropriate USB drivers.
It is now possible to debug an application running on an Android device via a USB cable.
Developer work flow using IDE
To debug a Flex Mobile application launch Flash Builder (pre-release build)
- First step is to enable device debugging on device and connect it to the USB port.
- Go to Run->debug Configuration
- After debug Configuration window gets popped up ,select the project to be debug
- Select On device radio button under Launch method and then click debug button
Application will get launch on the device and debugging session will start.
Text fields on Android now have two interaction modes. In the normal mode, the text field interaction is optimized for scrolling. In selection mode, the interaction is optimized for selecting text. A user can change mode by opening a context menu with a long press on the text field. The TextField object dispatches a textInteractionModeChange event when the mode changes.
It is now possible to specifie an alternate URL for downloading and installing the AIR runtime on Android devices. If not specified, an AIR application will redirect the user to the AIR runtime on the Android Market if the runtime is not already installed.
If your application is distributed through an alternate marketplace (other than the Android Market administered by Google), then you might need to specify the URL for downloading the AIR runtime from that market. Some alternate markets do not allow applications to require a download from outside the market. This option is only supported for Android packages.
Currently the following market URL is supported:
Amazon market: http://www.amazon.com/gp/mas/dl/android/com.adobe.air
Example (the URL used below is just an example of an appstore):
adt -package -target apk -airDownloadURL "http://appstore.zzz.com/get/com.adobe.air" -storetype pkcs12 -keystore temp.p12 -storepass <password> HelloWorld.apk HelloWorld-app.xml HelloWorld.swf
This feature adds functionality to the NativeWindow class that allows developers to write applications that need to keep one or more windows above another window. A good example of such an application is an editor application which needs to present floating toolbar/palette in addition to the document window. Prior to this feature, application developers had to attempt to manage the z-order of the windows in their own code using alwaysOnTop, orderInFrontOf, orderInBackOf APIs.
Until the AIR 2.6 release the NativeMenu class had two events (DISPLAYING and SELECT) that were dispatched when the user was interacting with the menu. In the AIR 2.6 release a third event has been added, named PREPARING, with the purpose of helping the developer in the use case where the user is interacting with the menu using the keyboard shortcuts.
Before this event, if the developers wanted to programmatically update the state of the menu they had to use the DISPLAYING event. This was the correct behavior for most of the cases, where the menu was actually displayed, but for the cases where the users were interacting with the menu through the keyboard shortcuts this was not consistent with the event name.
Along with this problem there was another issue that made the DISPLAYING event to not function consistently across platforms. The problem is that when the user was using the keyboard shortcuts to interact with the menu the event was dispatched on Mac OS but not on Windows.
From now on for the cases where the menu will be accessed using the keyboard shortcuts the PREPARING event will be dispatched and the DISPLAYING event will only be dispatched if the menu will actually be displayed.
This change has been versioned to the 2.6 namespace, meaning all the AIR applications that use the new 2.6 namespace will be have access to the new functionality. The changes will not impact the AIR applications that use a namespace smaller than 2.6.
A new property has been added to the LoaderContext object which allows a client to specify the policy for how the Loader's load operation is to handle the decode of a loaded image. The client may specify that they want the image decoded immediately, or the decode may be deferred until the image data is needed (e.g. it is drawn, GetPixel is called, etc.)
imageDecodingPolicy may be set to the values specified by the new ImageDecodingPolicy class:
- ON_DEMAND – Decode the image data when needed
- ON_LOAD – Decode the image data immediately following the load of the image.
When ON_LOAD is specified, the COMPLETE event will not be sent for the load() until the decode has completed. The decode operation will happen asynchronously as part of the load operation.
The default policy is ON_DEMAND, which was the previous default behavior for load().
The requestedContentParent property is now available on the LoaderContext class. It is only available to players SWF version 11 or higher. When this property is set to non-null, the Loader will attempt to add the content to the specified parent when loading is complete. LoaderContext with requestedContentParent property set to a Loader will generate an IllegalOperationError with code 2914. The call may also fail with “SecurityErrorEvent with code 2047” if the parent’s security context does not have access to the content’s security content. If the attempt fails, Loader loading the content is added as the parent.
The parameters property is now available on the LoaderContext class. It is only available to players swf version 11 or higher. When this property is set to non-null, the LoaderInfo.parameters property for the loaded content (which is the same as the Loader's contentLoaderInfo.parameters) will be set to a copy of this Object. Effectively this is a way to forward parameters (or flashvars) from loading content to loaded content.
The parameters property can only take string values. Otherwise an error will be thrown with error code 2196.
It is now possible to set the network timeout period when using HTTP connections with a NetConnection object. Note that on Linux, the timeout is two seconds longer than the time specified.
Vector printing is now supported on Linux. Note that any printer page using a device font will be rasterized when printed on Linux regardless of whether vector or bitmap printing is requested.
Changes in AIR 2.6
Following changes have been made to Screen Orientation APIs in 2.6 version of Runtime.
- supportedOrientations property is added to stage.
- existing autoOrients property is writable now.
- setOrientation method is restored, this method was marked as deprecated in AIR 2.5.
- orientation property is restored, this property was marked as deprecated in AIR 2.5.
- ORIENTATION_CHANGING event is restored, this event was marked as deprecated in AIR 2.5.
The swf is required to be compiled with the flag "-target-player=11" to make use of supportedOrientations API.
The following additional fixes have been included in AIR Android 220.127.116.115:
- AAC audio will now decode and play back correctly on Android 2.3 (Gingerbread) devices.
- Ghosting and green artifact issue now fixed on Android 2.2 devices with the NVIDIA Tegra2.
Installing/uninstalling Adobe AIR and installing AIR applications
Please refer to the following tech note for installer troubleshooting:
After reviewing the installation tech note, if you still encounter problems please visit our installation forum to ask questions and review other solutions.
AIR Installation Forum: http://forums.adobe.com/community/air/installation
Tips and tricks
The Adobe AIR forums are a great source for education and troubleshooting. You can interact with AIR community experts and Adobe employees on development topics, discuss and report problems and bugs found and solve troublesome installation issues.
Please visit us at: http://forums.adobe.com/community/air
Adobe Community Help is Adobe's next generation help experience. It's an AIR application that provides the following features:
- Access up-to-date definitive reference content online and offline
- Find the most relevant content contributed by experts from the Adobe community, on and off Adobe.com
- Comment on, rate, and contribute to content in the Adobe community
- Download Help content directly to your desktop for offline use
- Find related content with dynamic search and navigation tools
- Enjoy content updates and feature enhancements without reinstalling the AIR app
Community Help is installed by default in Creative Suite CS5 and Flash Builder 4. If you're using the AIR SDK separate from those tools, you can install Community Help yourself here: Install Adobe Community Help.
You can find links to all of the AIR documentation on the Adobe Developer Connection.
The AIR Help and Support page is a search portal for AIR information from Adobe and the AIR developer community. You'll also find great new articles and tutorials and links to current support issues.
In AIR 2 and later versions, installation logs for the runtime and for individual applications are created by default. The file is named "Install.log" on Linux and Windows. The file is named "system.log" on Mac OS. This log file is cumulative, meaning that a new log is appended at the end of the existing log file whenever an attempt, successful or unsuccessful, is made to install or update the AIR runtime or an AIR application. The size of the log file is limited to 0.5MB and the file is truncated when it becomes too large.
The location of this file differs from platform to platform:
- On Windows XP: C:\Documents and Settings\<username>\Local Settings\Application Data\Adobe\AIR\logs\Install.log
- On Windows Vista/ Windows 7: C:\Users\<username>\Appdata\Local\Adobe\AIR\logs\Install.log
- On Mac OS X: /private/var/log/system.log (console application)
- On Linux: /home/<username>/.appdata/Adobe/AIR/Logs/Install.log
- There is a known issue for iOS to use embedded font which is not supported in this version of the packager. Please use device font as a workaround. (2580892)
- Packaging ipa file for iOS with folder name containing locale specific characters may cause Java error or ADT crash. Workaround is not to use locale specific characters for folder/file name when packaging ipa file. (2598582)
- Audio may stutter when app is in background on Android. This is known limitation and it will need to be resolved in future version. (2736274)
- If an application create dynamic contents for sub-context menu on Mac OS 10.6, the application may crash. This is caused by Mac 10.6 OS new behavior. Please do not create dynamic menu contents for sub-context menu on Mac OS 10.6. (2740591)
- There is no way to cause AIR application to exit when user press menu button. It's known behavior that calling NativeApplication.nativeApplication.exit(0) does nothing. To avoid this issue, please add UIApplicationExitsOnSuspend=YES to the iOS section of its applicati.xml. (2763470)
- There may be both front and rear-facing camera on some iOS device. However you can only capture video from one camera at a time. (2765218)
- When max out the sound channels on iOS device, it does not play audio. This is a known iOS limitation on sound channels. (2765242)
- StageWebView history is in an inconsistent state if examined on the LocationChangeEvent.LOCATION_CHANGE event on desktop. When reading the value of the isHistoryBackEnabled property on the first LocationChangeEvent.LOCATION_CHANGE event, the property is false instead of true. To make sure the isHistoryBackEnabled has the correct value, read it on the Event.COMPLETE event rather than on the LocationChangeEvent.LOCATION_CHANGE event. (2780671)
- If encountering packaging issues when using large .swfs resulting in java runtime errors on Windows machine, please try one of the followings. a. Increase the vm memory size by adding the following command line option to ADT: "-Xmx1024" or higher (recommended 1024 as minimum). b. Break .swf into smaller module .swfs c. Compile on Mac OSX. (2786860) (2788649)
- Using AIR SDK require minimum 2GB of memory. There is some known issue to use ADT to compile swf into IPA on machine with smaller amount of memory size. (2786873)
- When positioning a StageWebView outside the visible area of the stage on Android and iOS, calling drawViewPortToBitmapData() can return a blank image. This happens if the StageWebView is positioned at the edge of the stage. A simple workaround is to move the StageWebView one pixel outside the visible area of the stage. e.g. webView.x = stage.stageWidth + 1 (2788590)
- For any multitouch enabled Android device, we return 2 as the maximum number of touch points. However touch events are generated for all the touch points. This is a design limitation. (2796344)
- AIR iOS and Android mouseX and mouseY behavior are now consistent in that mouseMove events are fired after the touchUp event, and the mouseMove event sends the mouseX and mouseY coordinates to an offscreen location. (2800954)
- Email URLs that are passed to URLRequest might be decoded differently depending on the platform. On iOS, the address is not URL decoded. i.e.: "First%2DLast@company.com" instead of "First+Last@company.com". (2802988)
- On some Android devices, if you enable GPU acceleration, textfields that use the cacheAsBitmap property may appear to be distorted. Use the cacheAsBitmapMatrix property in order to work around this issue by specifying a scaling factor of at least 2 in order to cache a higher-resolution bitmap of the text field. (2805094)
- Loading a page with flash plugin doesn't render inside StageWebView on Android 3.0. To work around please add android hardwareAccelerated attribute to the android section in the application descriptor (2806662)
- You cannot install IPA files to the device via Apple's iPhone Configuration Utility on WIN, got error "Could not install application on device. Error kAMDReceiveMessageError". Workaround is to install IPA with iTunes on Windows or iTunes/iPhone Configuration Utility on Mac OS (2810687)
- Aborting a load operation on a Loader object is usually done by calling the close() method. However, when the load was made using a FilePromise (using the loadFilePromise() method), the load operation should be canceled using the unload() method. Calling close() will throw a runtime error in this case. (2811060)
- Trying to restrict the orientation at launch time in iOS using preventDefault() for a StageOrientationEvent will not work properly. Use the appropriate <aspectRatio>Portrait/Landscape</aspectRatio> and <autoOrients>false</autoOrients> (2814955)
- FullScreenSourceRect is currently not supported in this release for iOS. (2815625)
- Developer need to use Apple's Application Uploader available on Mac only to upload applications to the Apple appstore. There is no Windows version of the Application Uploader.
- Socket connections do not work on iOS when the application is placed in the background. (2884146)