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 29. 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 today, 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. New Features New SoftKeyboard Types for Android & iOS Starting AIR 29, TextField and StageText enable developers to set two more types of soft keyboard. DECIMAL PHONE Use swf-version 40 or greater and namespace 29.0 or greater to access these newly added keypads.Developers can set a softKeyboard property based on the input expected from the user. For example, if the phone input is expected, a device can use SoftKeyboardType.PHONE to display only phone numbers on the soft keyboard. Valid values are defined as constants in the SoftKeyboardType class: Sample Usage: var tfKeyBoard:TextField=new TextField(); keyBoard.softKeyboard=SoftKeyboardType.DECIMAL; //Setting SoftKeyboard type as DECIMAL OR var stKeyBoard:StageText = new StageText(); stKeyBoard.softKeyboardType=SoftKeyboardType.PHONE; //Setting SoftKeyboard type as PHONE Geolocation Permission on iOS Starting AIR 29, developers requesting Geolocation permission on iOS in their applications will have an option to request for WHEN_IN_USE or ALWAYS permission through a new property locationAlwaysUsePermission. The default value of this property is false. Sample Usage: private var geo:Geolocation = new Geolocation(); geo.requestPermission(); //this would request for WHEN_IN_USE permission OR private var geo:Geolocation = new Geolocation(); geo.locationAlwaysUsePermission= true ; //applicable for iOS11 geo.requestPermission(); //this would request for WHEN_IN_USE and ALWAYS permission Note: 1. On iOS 11 and later if you initially request the WHEN_IN_USE permission, you can request the ALWAYS permission at a later time. The OS allows you to do this just once and any subsequent calls of requestPermission() are ignored by the OS. 2. On iOS 10, the OS allows you to request for permission just once. The requested permission WHEN_IN_USE/ALWAYS depends on the cocoa key added in the application descriptor. Hence, the property locationAlwaysUsePermission does not apply to iOS 10 and below. 3. Developers need to add cocoa keys in their application descriptor as per the level of authorization required by their application. For more details please see https://developer.apple.com/documentation/corelocation/choosing_the_authorization_level_for_location_services/requesting_always_authorization Media AutoPlay for Android and iOS With AIR 29, we have made some changes to the feature "Media AutoPlay for iOS & Android" introduced in AIR 21. Now, a new argument has been added to StageWebView constructor mediaPlaybackRequiresUserAction with a default value true. Setting this argument to false will ensure autoplay of the media inside StageWebView. public function StageWebView(useNative: Boolean = false , mediaPlaybackRequiresUserAction: Boolean = true ) For iOS, setting mediaPlaybackRequiresUserAction property after creating StageWebView will be a no-op, and developers can only set media autoplay through StageWebView constructor. For Android, developers can set media autoplay in, either way, using the property mediaPlaybackRequiresUserAction or through the constructor argument. Android SDK Upgrade With AIR 29, Android SDK has been upgraded in the AIR Runtime. Here is the list of version numbers of the tools upgraded in AIR 29. 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. Android Version 8.1 SDK Platform 27 SDK Tool 26.1.1 Android Build Tool 27.0.3 Platform Tool 27.0.1 Android Support Repository 47.0.0 Android Google Repository 58 LLDB 3.0 Android Emulator 27.0.5 Gradle plugin version for Android 3.0.1 Multidex jar 1.0.2 Combined Windows 32-bit and 64-bit AIR SDK With AIR 29 onwards, a combined AIR SDK for packaging 32-bit and 64-bit captive AIR applications is now available for Windows. Deciding the architecture of AIR applications The process of packaging 32-bit and 64-bit using the combined AIR SDK is different for Adobe Flash Builder and Adobe Animate/adt Packaging using Adobe Animate and adt: With Adobe Animate and adt this process is done by adding an extra tag <architecture> in the application XML. The value of this tag could be either “32” for packaging 32-bit captive AIR applications and “64” for packaging 64-bit captive AIR applications. The tag <architecture> must be added under <application> tag. Here is a sample app-xml: <? xml version = "1.0" encoding = "utf-8" standalone = "no" ?> < application xmlns = "http://ns.adobe.com/air/application/29.0" > < id >Sample</ id > < filename >Sample</ filename > < architecture >64</ architecture > < name >Sample</ name > < versionNumber >0.0.0</ versionNumber > < initialWindow > < content >Sample.swf</ content > < autoOrients >false</ autoOrients > < fullScreen >false</ fullScreen > < visible >true</ visible > </ initialWindow > </ application > Packaging using Adobe Flash Builder: With Adobe Flash builder this process can be accomplished by adding a Windows environment variable AIR_WIN_ARCH before launching the Adobe Flash Builder. The value of this variable could be 32 and 64 for packaging 32-bit captive AIR applications and 64-bit captive AIR applications respectively. Setting the tag <architecture> will have no effect when the application is packaged using Adobe Flash Builder. The decision will be completely dependent only on the environment variable’s value. The packaging of shared and native AIR application will not be affected by any of the above-mentioned methods. They will continue to be supported as 32-bit applications on Windows. Also, packaging AIR applications on Mac won’t be affected. Enhanced Profile on AIR Desktop The Enhanced profile will be available on AIR for Windows 8.1+ and Mac OS 10.9+ from AIR 29. This profile has been made available on mobile from AIR 26. It can be used in both requestContext3D and requestContext3DMatchingProfiles methods. AGAL4 can be used with the Enhanced profile. AGAL4 introduces a new opcode “tld” and new Vertex Sampler register “vs” for fetching texture in a vertex shader. ‘tld’ requires a level of detail ( LOD ) value for parameter since GPU does not support the automatic calculation of LOD in the vertex shader. Latest version of AGALMiniAssembler is available here: https://github.com/adobe-flash/graphicscorelib/pull/14/commits/a20d4773459b01e86acceac45240a2b4e88f67e3 Vertex Texture Fetch on AIR Desktop With the introduction of new Stage3D profile i.e. ‘ENHANCED’ on the desktop, Vertex Texture Fetch is now available on AIR Desktop too. Vertex Texture Fetch was made available on mobile from AIR 26. It will be available on Desktop AIR 29 (SWF version 40) onwards. The feature will be supported on Windows 8.1+ and Mac OS 10.9+. The feature is dependent on the availability of Enhanced Profile and hence, it will not be supported on Windows 7. Texture Data will be available in Vertex Shader using AGAL4 and Enhanced profile. AGAL 4 introduces a new opcode “tld” and new Vertex Sampler register “vs” for fetching texture in the vertex shader. ‘tld’ is similar to 'tex' opcode used in the fragment shader. But unlike ‘tex’ opcode, ‘tld’ requires a level of detail ( LOD ) value as a parameter since GPU does not support the automatic calculation of LOD in the vertex shader. tld usage: tld dst, src, sampler dst: a destination register for the sampler texture pixel src: a register containing texture coordinate where the pixel is sampled and containing a level of detail indication as an index of mipmap to use. The XY components of the src register: a texture coordinate where a texture pixel is sampled. The z component will be used for indicating the side of the cube map texture if the vertex texture is a cube map. The w component of the src register: an index of mipmap to use, with a value range from 0 to n-1 where n is the total number of the mipmaps. The zero index indicates a mipmap in the highest resolution. The fractional part of src.w is how much a selected mipmap would be interpolated with the next level of the mipmap in lower resolution based on the mipmap filter (mipnearest or miplinear) passed in the shader or set from the setSamplerStateAt() API. Mipnearest uses nearest-neighbor mipmap, while miplinear uses linearly filtered mipmapping. vertex sampler ‘vs’ tld vt0, va0, vs0<2d,linear,miplinear> The above example code fetches texture pixels from the texture bound to vertex sampler 0 (vs0) to a vertex temporary register 0 (vt0) with a texture coordinate provided in a vertex attribute register 0 (va0) and a sampler state(< 2d, linear, miplinear >) provided in the vertex shader. The LOD value is provided in va0.w in the example. A total number of vertex samplers available is 4. The sum of vertex and fragment samplers is restricted to 16. Please note that tld opcode cannot be used inside fragment sampler. To provide a texture for a vertex sampler in the vertex shader, developers must use existing ActionScript API, SetTextureAt(). SetTextureAT(0, texture); The above example code binds 'texture' to the vertex sampler 0 (vs0). Note that this call would set up 'texture' to the fragment sampler in the same index, which is the fragment sampler 0 (fs0) if there is access to fs0 in the fragment shader. A sampler state of the vertex sampler in the vertex shader code could be overridden with the existing AS API, SetSamplerStateAt: SetSamplerStateAt(0, Context3DWrapMode.CLAMP, Context3DTextureFilter.LINEAR, Context3DMipFilter.MIPNEAREST ); Like the SetTextureAt API, the above call would also set up the state of the fragment sampler in the same index, which is the fragment sampler 0 (fs0), if fs0 is used in the fragment shader. Please note, Anisotropic Filtering is not available for texture sampling used in vertex shaders. Vertex Texture Fetch feature is useful for a number of effects like displacement mapping, water simulation, and explosion mapping etc. Application of HIDPI Scaling to non-client areas Support for HiDPI displays on Windows was introduced in AIR version 23. The feature allowed display of AIR contents to render higher quality on HiDPI displays. The feature 'Application of HIDPI Scaling to non-client areas' is an extension to the earlier support for HiDPI scaling, wherein scaling of non-client areas, upon the dynamic change in the DPI value would be supported on AIR Windows. The feature would cover the scaling of the dialog boxes, file browsers and ‘non-client area’ UI components such as title bar, native menu and Windows icons. The feature will be available from AIR 29 onwards and Windows 10 (Redstone 1) Version 1607 onwards. AIR Desktop - Ability to disable/enable vsync on the fly Till AIR 28, frame buffer rendering rate of the AIR Runtime was synchronized to the display device refresh rate. We have provided an enhancement in AIR 29 where a user will have an extra ability to sync or a-sync the display device rate. The synchronization feature can be toggled with the help of a property added to a stage variable “vsyncEnabled”. The “vsyncEnabled” variable is available to toggle between true and false, if and only if an event “VsyncStateChangeAvailabilityEvent” returns true. On windows 7 machine DisplayContext object, Event.CONTEXT3D_CREATE will be triggered again whenever the vsyncEnabled value is set as true and flickering may be observed.This phenomenon will not be reflected on Windows 8 and above and on Mac machines. AIR Desktop-Increase GPU memory Limits Until AIR 28, maximum GPU memory provided for uploading the Normal and Rectangular textures was 512 MB. With AIR 29 beta, we have enhanced the GPU memory limits to 2048MB. These new limits will be available with the Stage3D profile “Standard_Extended” and "Enhanced". For other profiles, maximum GPU limit will be 512MB. This feature is AIR 64 bit only and will be available for Normal and Rectangular textures. For Cube texture, memory limits will be same as before i.e. 256 MB. AIR Desktop-Increase in Texture Limit (Beta Only) Till AIR 28, maximum texture size supported by AIR is 4096x4096. In AIR 29 (SWF version 40), we have increased the texture limit to 8192x8192 pixels. A new read-only property Context3D::supports8kTexture has been introduced which returns true only if the 8k texture is supported by the hardware. This feature only supports the rendering of Normal and Rectangular textures. Textures such as Cube, Video, Compressed, and Compressed_Alpha will not be supported. The feature is available in AIR 64 for Mac, Windows 8.1 and above. Since 8K textures are quite heavy, it is recommended to upload the textures asynchronously. Fixed Issues AIR apps quit unexpectedly when byte array is attached to domainMemory(AIR-4198585) Flash Builder quits unexpectedly on High Sierra when "Export release build" is selected from the Project menu (Updated BLOG) clipboard.dataForFormat returns null for Custom data in the Clipboard(AIR-4198553). Wireframe feature not working on Directx11(AIR-4198597) Screen turns half black when iOS goes into standby and user resume again for IOS 10+ (AIR-4198539) Bluetooth Headset not working with microphone.getEnhancedMicrophone() on iOS (AIR-4198549) [Android]Incomplete textures are rendered when uploading large textures.(AIR-4198475) Unexpected margin at the top of StageWebView on iOS 11 (AIR-4198537) InvokeEvent.arguments is empty on Android (AIR-4198552) Delay in dispatching TOUCH events on device borders on iOS 11 (AIR-4198551) StageWebView does not load nor display local HTML content (AIR-4198420) Status bar appears when app is in fullscreen and showing soft keyboard on Samsung devices (4189175) Audio stops playing on interruption when SoundMixer.audioPlaybackMode = AudioPlaybackMode.VOICE and SoundMixer.useSpeakerphoneForVoice = false (4189377) NetworkInfo.isSupported returns TRUE on Android even when permissions are missing in application descriptor (AIR-4198485) Stage shift offset error on StageText focus when status bar is hidden on Samsung S8 (AIR-4198421) [iOS] iOS StageWebView viewPort incorrect (y axis shift) (AIR-4198583) Known Issues [Mac]GESTURE_PAN event is not fired.(AIR-4198492) Asynchronous texture upload fails after uploading 5000 texture(AIR-4198527) Download Locations: AIR runtime for Windows: 29.0.0.112 Runtime Download AIR runtime for Macintosh: 29.0.0.112 Runtime Download AIR SDK & Compiler for Windows: 29.0.0.112 SDK & Compiler Download AIR SDK & Compiler for Macintosh: 29.0.0.112 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 29 SDK and ActionScript Compiler 2.0 in a single SDK called “Adobe AIR 29 SDK & Compiler”. AIR SDK (Compatible with Flex) for Windows: 29.0.0.112 SDK Windows Download AIR SDK (Compatible with Flex) for Macintosh: 29.0.0.112 SDK Macintosh Download Previous versions of the AIR runtime and SDK can be found on the Archived AIR SDK and Runtimes page
... View more