Welcome to the developer release notes for Adobe AIR 2.5. This update includes a new mobile platform support for Android, and bug fixes that improve the security, stability, performance, and compatibility of AIR.
|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|
|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 10.4, 10.5 or Mac OS 10.6 (Snow Leopard)||Fedora Core 12, Ubuntu 9.10, openSUSE 11.2||Android 2.2 (FroYo)|
|RAM||Minimum: 512MB RAM; Recommended: 1GB RAM||Minimum: 512MB RAM; Recommended: 1GB RAM||1 GB RAM||256MB RAM|
Note: Windows 2000 and Mac PowerPC are not supported as of AIR 2. Users can install and run AIR 1.5 applications, but will not be able to install or update to AIR 2 or later releases. Mac OS 10.4 running on an Intel processor is supported for running AIR 2 applications, but is not supported as development environment with the AIR SDK, version 2 or later.
|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 to run AIR 2 on Linux
A list of libraries required to run AIR 2 on Linux are listed in the following Adobe Knowledge Base (KB) article: http://kb2.adobe.com/cps/838/cpsid_83888.html
Adobe AIR 2.5 installation and runtime user experience supports the following languages:
- Chinese Simplified
- Chinese Traditional
- Brazilian Portuguese
- The version of WebKit in AIR 2.5 is based on the version shipped with Safari 4.0.3.
- The version of Flash Player included in AIR 2.5 is 10.1.82.76.
StageWebView allows developers to render HTML content inside mobile AIR applications using the native web browser provided by the platform. To support simulation of mobile applications, the new StageWebView API is also implemented in the desktop profiles using AIR's WebKit. This capability is also currently enabled for the desktop profiles of AIR as well.
CSS shadow support (-webkit-box-shadow and -text-shadow) allows you to create shadow effects to both text and HTML borders without the need of creating graphics.
CSS font-face support is enabled in this version of AIR, with support for OpenType and TrueType fonts. WOFF and SVG fonts are not currently supported.
AIR 2.5 supports hardware decoding of H.264 video on Windows desktop, notebook and netbook systems. With supported hardware and driver combination running on Windows XP, Windows Vista and Windows 7, AIR applications can now use the GPU to decode video and run with a lot less CPU impact. For example, our internal testing with the NVIDIA Ion netbook shows that a 1080p video utilizing 65-70% CPU before can now run perfectly smooth with GPU acceleration and an average of 19% CPU utilization.
Supported hardware for this feature includes some recent NVIDIA, AMD/ATI, Intel graphics cards and some Broadcom video decoders.
The -screensize argument can be used to specify the simulated screen size to use while using ADL with an application running under the mobileDevice profile. For information on using ths argument, see the AIR Debug Launcher topic in the Building Adobe AIR Applications guide.
AIR for Android conforms to the AIR mobile device profile. Not all APIs that are supported on the desktop are supported on mobile devices. For a list of APIs that are not supported see Device profiles.
Notes:The FileReference class only allows selection of audio, video, and image files. Arbitrary file selection is not allowed.In AIR for Android, you can use the Loader class to load a SWF file and execute its code. (However, ActionScript 2.0 is not supported.) AIR applications for the iPhone cannot execute code in loaded SWF content; AIR for Android does not include this restriction.
Application developers must specify any required Android permissions in the application descriptor of the AIR application. The Android operating system protects features that have security or privacy implications with a permission system. If a permission required to access a feature is not specified, attempts to use that feature will fail. Also, Android displays the specified permissions to the user before installing your application.
To specify Android permissions, add an <android> tag under the <application> tag:
<android> <manifestAdditions> <![CDATA[ <manifest> <uses-permission android:name="android.permission.PERMISSION_NAME" /> </manifest> ]]> </manifestAdditions> </android>
Replace PERMISSION_NAME with the name of the required permission. Add an additional <uses-permission> tag for each required permission
The following permissions are relevant to the features available to AIR applications on Android:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
NetworkInfo class is supported on Android. It can be used to find network interfaces using the method NetworkInfo.networkInfo.findInterfaces().
However NetworkInterface.mtu is returned as -1 on Android.
In order to access network information, you must specify the following android tag under <application> tag in application descriptor.
<android> <manifestAdditions> <![CDATA[ <manifest> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> </manifest> ]]> </manifestAdditions> </android>
By using this feature an application can be made invokable from browser or native android application. When the application is invoked from browser/android-app, an InvokeEvent is dispatched to the application.
For making an application invokable from browser, add this in your application descriptor (as child of application element):
<android> <manifestAdditions> <![CDATA[ <manifest> <application> <activity> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="testapp"/> </intent-filter> </activity> </application> </manifest> ]]> </manifestAdditions> </android>
<a href="testapp://">click here to launch air test app from browser</a>
Clicking on this link will launch your application.
If you want to pass additional arguments to your application from browser, use something like this:
<a href="testapp://arg1=value&secondArgument=someValue">click here to launch air test app from browser</a>
Once your application gets launched, fetch the arguments property of received InvokeEvent. This will contain the complete URI (testapp://arg1=value&secondArgument=someValue) and you can parse it to extract the arguments.
This feature allows you to access a phone's camera application. Once the user takes a picture or video the saved media is saved to camera roll and returned to ActionScript through a MediaEvent. Note tht the video format returned by the camera application may not be a format that can be played in an AIR application.
The ActionScript Camera class is now supported on some mobile devices. Use the Camera.isSupported property to test whether the Camera class is available on a specific device at run time. For more information, see flash.media.Camera.
Note the following in AIR for Android:
1. Only one camera on device is supported.
2. The hardware orientation of the camera is landscape, thus the video object (when attached to camera) will show upright video only in landscape mode. Camera apps should use landscape orientation.
3. The Camera object does not capture frames when the app is in background. Frame capture resumes automatically when app comes back to foreground.
The ActionScript Microphone class is now supported on some mobile devices. Use the Microphone.isSupported property to test whether the Microphone class is available on a specific device at run time. For more information, see flash.media.Microphone.
The new StageWebView API allows developers to embed HTML content inside mobile AIR applications using the native web browser provided by the platform. For more information, see flash.media.StageWebView
AIR on Android supports hardware acceleration which enables fast rendering by offloading some of the rendering tasks to the GPU. The GPU rendering mode used in AIR for Android apps is significantly different than the mode used in AIR 2.0.1 (Packager for iPhone). A larger class of AIR applications should be able to take advantage of GPU acceleration in AIR 2.5. See the GPU topic in Optimizing Performance for the Flash Platform for more information.
The AIR Developer Tool (ADT) supports new target options for building Android application packages (APK files):
- Target apk: Creates a release APK package suitable for distribution. (Packages created with this target cannot be installed on an Android emulator.)
- Target apk-emulator: Creates a release-mode APK package for installation on an Android emulator.
- Target apk-debug: Creates a debug-mode APK package that can be installed on both Android emulators and devices.
You can register for Keyboard events on the NativeApplication object to detect when the user presses the device soft keys, "BACK", "MENU" and "SEARCH". Use the following key codes to detect which key is pressed.
- Back key: Keyboard.BACK
- Menu key: Keyboard.MENU
- Search key: Keyboard.SEARCH
Note that you can call the event preventDefault() method when the Back key is pressed to prevent the Back key's default behavior of returning to the previous application. The Menu and Search keys do not have default behavior.
A keyboard event is not dispatched for the Home soft key.
AIR 2.5 supports a 36x36-pixel icon to suit low-density Android screens. Previous versions of AIR already support 48x48- and 72x72-pixel icons (which you can use for medium- and high-density screens respectively). If you don't provide a matching icon size for a particular screen density (e.g: 72x72 for high-density android screens or 48x48 for medium-density screens), then the application uses the icon that is largest and closest to the target icon size.
The ADT -certificate command allows you to specify the number of years that the created certificate is valid. The argument for this is -validityPeriod <years>. By default, a certificate is created with a validity of 5 years. However, the Android Market requires that submitted Apps be signed with a certificate valid until at least 2033. You can use the -validtyPeriod argument to create self-signed certificates that satisfy this requirement. For more information, see the Creating a self-signed certificate topic in Building Adobe AIR Applications.
The Geolocation class provides location information to the AIR applications. In Android applications, you must specify the following permissions in the application descriptor to use Geolocation:
- <android> <manifestAdditions> <![CDATA[ <manifest> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> </manifest> ]]> </manifestAdditions> </android>
For more information about the Geolocation class, see Geolocation.
You can use the systemIdleMode property of the NativeApplication object to prevent a device from going into its power-saving modes, such as screen dimming or going to slep. In Android applications, you must specify both the following permissions in the application descriptor to prevent screen dimming:
<android> <manifestAdditions> <![CDATA[ <manifest> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> </manifest> ]]> </manifestAdditions> </android>
For more information about the systemIdleMode property, see NativeApplication.systemIdleMode.
You can use URIs with the sms: and tel: URI schemes with navigateToURL() in order to open the device text message and phone dialer application.
The "sms:" and "tel:" URI schemes can only be used by content running in the application security sandbox. If a URI using an sms: or tel: scheme is invoked from any other sandbox, a security exception is thrown.
The feature lets the user to connect to an SSL site for which the validation of server certificate fails using Android cert store, by explicitly asking the user for permission to connect. Certificate can be trusted for the session only.
After the user selects text in a text field, the application shows a menu for text operations.
Long press on the text field also shows the menu for text operations like cut, copy, paste, Input Method etc
To allow a user to interact with text fields in full-screen mode, full-screen mode must be set using FULL_SCREEN_INTERACTIVE.
Note: Please avoid using Spark text fields, there are many known issues with it.
Using this feature, your application can allow the user to browse for an image from the phone's media library.
On devices with accelerometer support, AIR applications can detect screen orientation changes. Three new properties are available on the Stage class:
The deviceOrientation property returns the current device orientation. The Stage object dispatches an orientationChange event when the orientation of the Stage changes. The Stage can reorient due to device rotation, or opening and closing of the hardware keyboard. Note that an ORIENTATION_CHANGING event is not dispatched by AIR applications on Android.
For details, see the Screen Orientation topic in the ActionScript 3.0 Developer's Guide.
You must update your application descriptor file to the 2.5 namespace in order to access the new AIR 2.5 APIs and behavior. If your application does not require the new AIR 2.5 APIs and behavior, you are not required to update the namespace. However, we recommend all users start using the AIR 2.5 namespace even if you are not yet taking advantage of the new 2.5 capabilities. To update the namespace, change the xmlns attribute in your application descriptor to:
The <version> tag in the AIR application descriptor is not allowed for namespaces 2.5 & above. Instead two new tags have been introduced: <versionNumber> and <versionLabel>.
<versionNumber> is mandatory. Use the format <0-999>.<0-999>.<0-999> to specify a version number. For example, the following are all legal settings:
The version number is evaluated for application updates. An updated version of the application must have a version number value higher than the previous versions.
<versionLabel> is optional. The version label is shown to users whenever the application version is displayed. If not specified, the value the version number is displayed.
Note: <version> tag must still be used for namespaces below 2.5.
The updateDescriptor.xml file must also be updated to the 2.5 namespace. If an application is updated from 2.0 to 2.5 namespace, you must maintain two updateDescriptor.xml files. One update descriptor must use namespace 1.0 and is for for users who have not updated to the 2.5 namespace version of the application. The second update descriptor must use namespace 2.5 and is for users who have updated to a 2.5 namespace version of application.
Updating to an AIR 2.5 version (or later) of an application from an application created in a version of AIR earlier than 2.5 requires an intermediate update step. Consider the following scenario:
- application version 1 was packaged with AIR 2 and uses the 2.0 namespace
- application version 2 was packaged with AIR 2.5 and uses the 2.5 namespace
In this case, in order to be able to update from version 1 to version 2, an intermediary update step must be added as follows
- application version 1, packaged with AIR 2 and using the 2.0 namespace gets updated to:
- application version 1.5, packaged with AIR 2.5 and using the 2.0 namespace. This version of the application must include the version of the Application Updater SWC/SWF included with the AIR 2.5 SDK. This gets updated to:
- application version 2.0, packaged with AIR 2.5 and using the 2.5 namespace
Please refer to the following tech note for installer troubleshooting:
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
Adobe AIR 2.5 includes security improvements described in Security Bulletin APSB10-22.
- In AIR 2.5, navigateToURL() is now able to bring Firefox window to the front on Windows platforms when the window is maximized and is obscured by another window on top of it. However, please be aware that in order for this to work, the application SWF must be compiled and published as Flash Player 10 format, and that the AIR application descriptor must use the 2.5 namespace. (1609175)
- Pressing command+D works incorrectly in Mac File browsers (1835265)
- HTMLLoader crash when opening a PDF while user hasn't accepted Acrobat User License. This will be fixed when upcoming version of Acrobat/Reader released. (2605061)
- Pressing a key doesn't dispatch key down events, until you touch/click the GUI of an application. The workaround is to set the focus on the stage. (2691068)
- Nothing gets displayed when accessing a resource over HTTPS that has an untrusted certificate on Windows OS (2699857)
- SQL error is thrown when using the SELECT *, column, ... is used, however, data is still returned. (2713528)
- @font-face is Intermittently working on MAC 10.4 (2714450)
- Cannot load font used in CSS @font-face declaration if the font is loaded via HTTPS with invalid certificates on Windows OS (2715717)
- Systemtray icon transparency not working in Ubuntu10.04
- When loading an HTTPS (SSL) URL that requires a client certificate on Windows, the user may be prompted to choose the client cert for *each load* instead of the first load only. The suggested workaround from Microsoft can be found here: http://support.microsoft.com/?id=330338 (2331039)
- CameraUI - launch(MediaType.IMAGE) will fail with ioError if the phone is connected to a computer with USB storage turned on.
- CameraUI - Launching the camera user interface moves the AIR application to the background and makes it vulnerable to termination when Android runs low on resources. The same behavior is seen in native applications.
- CameraUI - AIR supports only low resolution video recording using CameraUI.
- H264 1080p video crashes AIR when trying to go into fullscreen mode (2651229).
- CPU-utilization for H264 baseline 320x240, 480x320 and 640x480 videos needs improvement (2649196).
- Higher resolution H264 baseline videos like 480x320 and 640x480 (either profile 3.0 or 3.1) have low FPS performance (2649193).
- When an audio file is playing and the user interacts with the phone the sound breaks and then continue (2645314).
- Using filters with hardware acceleration enabled causes incorrect rendering or crash in some cases (2639731).
- Setting focus on a TextField object doesn't result in the virtual keyboard being displayed (2622356).
- Force Stop deletes local shared objects (2623126).
- Spark/TLF based text fields are not supported.
- H264 Seeking doesn't work (2664189).
- Android app can't load TLF Runtime Shared Library (RSL) (2606237).
- StageWebView - Complete event triggered on redirect (2651500).
- navigateToURL() does not launch URIs using custom URI schemes (2661688).
- App doesn't get throttled when device screen is locked (2611491).
- Setting focus on TextField doesn't pop up keyboard (2622356).
- File.userDirectory.exists reports true even if the sdcard is not present in the device (2719879, 2720750).
- StageWebView - Can't load local image file (2705471).
- App does not allow phone to enter a power saving mode when the video being played is paused (2615888).
- Saving a very large bitmap data (4000x2000 size) using CameraRoll.addBitmapData() causes crash (2712034)
- The max value returned by maxTouchPoints is 2.
- GPU rendering is disabled on HTC Incredible (2712261).
- DisplayObject.transform.getRelativeMatrix3D(root) returns incorrect Matrix3D.position (2724789).
- Additive blend mode, combined with alpha of 0.5, renders erroneously in GPU mode (2721923).
- The alpha value of a parent Sprite is not inherited by non-cached child sprites when the parent has its cachAsBitmapMatrix property set (2711116).
- A masked child Sprite of a parent Spite that has cacheAsBitmapMatrix set is not draggable in CPU rendering mode and is not rendered at all in GPU rendering mode (2711091).
- Video doesn't loop back to the beginning (2683323).
- Redraw regions are displayed incorrectly in GPU rendering mode (2687065).
- In using GPU rendering mode, some items are not visible (2687081).
- Touch events are reported at the wrong screen location (2685531).
- If a RESIZE event is registered with the stage upon application startup, it will be dispatched only when stage.scaleMode is set to StageScaleMode.NO_SCALE.
- Orientation change event is not dispatched (however application stage will rotate correctly) whenever application rotates "from upSideDown" or "to upSideDown".
- Runtime error when using SwiftKey custom Android keyboard with any AIR application (2729775).