Q: What is HARMAN doing with Adobe AIR?
HARMAN and Adobe have had a long relationship around the Flash Player and AIR technologies, and with Adobe discontinuing the support for Flash Player and AIR at the end of 2020, HARMAN have entered into an agreement with them that allows us to take on the support and maintenance of the AIR runtime and SDK. Since HARMAN don’t have any related revenue from the sale of tools such as Adobe Animate or Adobe Flash Builder, HARMAN are offering the AIR SDK as a commercially licensed software package but with a free tier to support hobbyists and very low-income individuals or companies. HARMAN hope to continue to support and develop the AIR software to ensure that this remains a useful and competitive framework for rapid cross-platform application development.
Q: What support does HARMAN provide vs what Adobe provides?
Adobe’s support for AIR finished at the end of 2020. HARMAN have released “version 33” and the latest version supports the same platforms as Adobe had i.e. Android, iOS, Windows and MacOS, plus now adding support for some Linux computers. HARMAN will also be fixing bugs within the runtimes and framework, and adding new features based upon the requirements of the AIR community.
Q: What are HARMAN’s long term plans?
The long term goal will be to expand the usage of AIR, to allow this to be used by more developers. To achieve this HARMAN will initially focus on ensuring that the runtimes are maintained with the necessary OS updates and with bug-fixes as well as adding in new features to make this platform more attractive to new developers. The expectation is that the changes to be made - in terms of the priorities for bug fixes and new features - will be driven by the AIR developer community, thus improving the functionality and maturity of the runtime and SDK; each release should therefore deliver real benefits to the community in terms of an application's stability, performance or functionality. HARMAN - and the AIR community, notably Distriqt - have also set up a developer portal at https://airsdk.dev that provides information and tutorials about AIR and can be maintained independently of HARMAN, providing a forum for the ecosystem to add their own content and promote their applications and games.
Q: Why do I have to pay for this now?
In order for AIR to be maintained by HARMAN, the work needs to be funded directly – in the past, Adobe provided AIR and Flash Player for free because of the income they received from commercial tools such as Adobe Flash Professional/Adobe Animate. HARMAN explored a number of commercial models but the overwhelming feedback from the AIR community was that a subscription license to use the SDK tools would be the most appropriate option, rather than anything relating to the distribution of applications to end users. HARMAN have therefore put in place a set of annual license fees that apply to individuals or companies with various income levels, with a free tier for low-income individuals or companies, and are aiming to ensure that the SDK is therefore affordable to companies whilst raising enough funds to allow HARMAN to maintain a sufficient development team.
Q: What operating systems can we use when developing AIR applications?
Developers can use desktop platforms for their development, including macOS, Windows and Linux. Using these, it is possible to build applications for the host platform or to create platform-agnostic '.air' installers that use the shared AIR runtime. HARMAN will continue to maintain the SDK to support future iterations of these operating systems.
Q: What platforms does AIR support?
As well as the desktop platforms, Android and iOS are also supported (currently iPhoneOS specifically, although if there becomes a need to have a separate iPadOS version then this can be provided). Android packages can be generated from any AIR SDK, but to create an iOS application developers will need to be running the AIR SDK on a Windows or macOS device.
Q: Does AIR support 64-bit Android targets?
Yes, both 64-bit ARM and x86_64 targets are supported, and AIR also now supports the Android App Bundle that stores support for all 4 platforms into a single package, which is required for uploading new applications to the Play Store.
Q: Can we get AIR on Linux platforms?
HARMAN are now supporting the latest AIR releases on Linux x86_64 and ARM64. Due to the work involved here, support is restricted to developers who have purchased a commercial license for AIR SDK (i.e. not the 'free tier' users). There is no 'shared runtime' available for Linux though, so .air files cannot be installed, and 'native' installation packages cannot be created with the AIR SDK. Applications needing distribution should be created as a 'bundle' with the captive runtime and then packaged for deployment using appropriate native Linux tools.
Q: Can we get AIR to build for a browser target?
This has been a request from a number of companies, to provide a WebAssembly target for AIR applications. We have some commercial and licensing challenges to work through for this but have been discussing the development with Adobe and with third parties who have expertise in this field.
Q: How do we get the latest release of AIR SDK?
Please check out our Downloads page where the latest version can be downloaded upon accepting the terms and conditions which includes the pricing levels for subscriptions. We are continuing with Adobe’s practise of providing different SDK packages for Flex developers and for non-Flex AIR developers: the Flex version has fewer of the tools so that the original Flex compiler will still be used, rather than the newer ActionScript compiler that was introduced for AIR. Specific versions of AIR SDK can be obtained by visiting the 'Release Notes' page.
Q: What support will HARMAN provide for us?
HARMAN will provide bug fixing services within the limitations that we have around the team’s bandwidth. HARMAN will triage the various issues that are reported and will give priority to problems that are considered critical such as crashes and behaviour that doesn’t have workarounds. Enterprise customers will be given preferential treatment for support and we welcome emails to discuss issues; generic bugs can also be reported via the GitHub area originally set up by Daniel at Gamua and now migrated to: https://github.com/airsdk/Adobe-Runtime-Support/issues
Q: Why is a splash screen appearing in my app?
HARMAN’s version of the AIR SDK injects a splash screen into applications that are packaged by people who do not have an active paid subscription for the AIR SDK. This is partly to raise awareness of the use/prevalence of Adobe AIR, and should appear for a brief time during initial application start-up.
Q: How do I remove the splash screen?
To remove a splash screen you need to be a paid subscriber of the AIR SDK, at which point HARMAN will supply a license file for the SDK. When this is correctly in place, any AIR application that is then packaged will not display the splash screen during start-up. Please note that it is not possible for us to change the behaviour of APK packages that have already been generated.
Q: How do I build a 64-bit APK?
Using the AIR Developer Tool (ADT) you can generate APK files for the various AIR target platforms. For 64-bit ARM platforms, there is now an “armv8” architecture that can be requested via “-arch armv8” to be added to the command line after the APK target details. This will result in an APK file that includes the “lib/arm64-v8a” subfolder with AIR’s native code under here. If you’re using an IDE to create your APK files, you will need to find the appropriate instructions for these within the AIR release notes. There is a configuration file in the SDK’s “lib” folder, called adt.cfg, that can override whatever options are being used by the various tools which can be used to ensure you have full control over the architecture being packaged.
Q: How do I upload my app to the Play Store?
For people who currently just upload a single APK file – containing the 32-bit ARM version of AIR – you will now need to also upload an APK with the 64-bit ARM version. New applications will need to also have two APKs for the two ARM architectures. Both APK files need to have the same Application – however, due to the Play Store mechanisms, they will need to have different version codes. The Play Store works out the most appropriate version to provide to a user’s device based on the capabilities of that device: 64-bit Android can actually run both 32-bit and 64-bit applications hence the 64-bit APK needs to have a higher version code in order to be chosen over the 32-bit APK file. If you have the version codes the wrong way round you will see an error about the 64-bit APK being completely shadowed by the 32-bit one.
Q: Why do I need multiple APKs?
When multiple-architecture support was added to AIR, it would have been possible to include both ARM and x86 versions of AIR within a single APK file, however these would all need to be downloaded to every user’s device prior to installation which is significant overhead. Due to requests from developers to limit the size of the APKs, Adobe elected to create different APKs for the different architectures, hence the introduction of the “-arch” argument to ADT. With the addition of the armv8 architecture, this pattern continues. Google have since introduced an “Android App Bundle” format which can simplify the deployment (where the Play Store then generates an appropriate APK to be downloaded to the end user’s device) and HARMAN have now completed the support for building this using ADT, via the '-target aab' option.
Q: The Play Store says my app is not 64-bit compliant.
The most likely issue for this error is that the APK file doesn’t contain the 64-bit version of AIR. When using an IDE such as Adobe Animate, until this provides a specific “ARMv8” option for publishing an APK file, it is necessary to override the commands being used by the IDE to package the application as 32-bit. There is a configuration file within the “lib” folder of the SDK that can be used to do this, so please check whether the configuration file is properly in place and has the correct settings. Further information is available in the release notes.
Q: Flash Builder is showing an error when building my app.
There are a number of issues that have been found with Flash Builder compatibility: the main one is that the Java Runtime Environment within Flash Builder’s folders needs to be updated – this can be copied from a Java 8 Development Kit. There are also some issues with a comparison function that can result in ‘internal compiler error’ messages, where the Flash Builder subfolder named “p2” needs to be deleted. A few other issues may occur, please see links in the release notes.
Q: I use ANEs – do I need to have a 64-bit version of these?
Yes: there needs to be an appropriate platform supported in the ANE for the architecture that you’re packaging. So when packaging “armv7” you need “Android-ARM”, for “armv8” you need “Android-ARM64”, and for “x86” you need “Android-X86”. If you don’t have an appropriate ANE, there should be a warning message output by ADT when packaging up an APK that notifies you that it will use the default (AS3-only) platform functionality.
Q: How do I create an AIR Native Extension that supports 64-bit Android?
ADT has been updated to also support the “Android-ARM64” platform for ANE packages. The format is the same as for Android-ARM or Android-X86. If the ANE is using Java, then the same classes/jar file could be used for all of the different Android platforms, but if this is using C/C++ code compiled into a .so file, this will need to be compiled using the Android NDK for the ARMv8 (aarch64) architecture.
Q: What if my ANE is no longer supported by the developer?
This is a problem that a number of people have reported. Whilst it might be possible to hack an existing Java-based ANE so that it additionally supports Android-ARM64, it is not possible with ANEs that are C/C++ based, and it is probably always worth getting your ANEs from another vendor who is continuing to support their extensions.
Q: I’ve got a website that needs Flash Player, how can I continue with this beyond 2020?
There are a few options for Flash-based web applications, particularly when using Flex. HARMAN provides software services to support migration of content away from Flash/Flex using a variety of tools and technologies, including Haxe, Apache Royale, Angular, OpenUI5, and many other JavaScript frameworks. If the application can be deployed outside of the browser, then it is often simpler to reuse the Flash-based technologies: either migrating the app to use AIR, or if it’s a website that uses a lot of HTML/JS code, then HARMAN have the option to provide a “packaged browser” solution where we wrap up a browser engine (such as Chromium) along with a customised version of the Flash Player, such that the package is a separate installable app that is purely intended to load and run the web application. For any more information about these options, please contact us at adobe.support@harman.com
Q: Can I distribute Flash Player or AIR application on embedded and closed devices?
The Flash Player EULA from Adobe, and the AIR SDK license agreement from Adobe and from HARMAN, both have some restrictions about the uses and deployment of the software. However, HARMAN have for many years been a reseller and integration partner for Adobe to ensure Flash Player and AIR can work on embedded devices and in situations that do not comply with the restrictions in the standard/free agreements. If you are deploying the software into closed or embedded environments, please contact us at adobe.support@harman.com to discuss the separate runtime licensing agreements that we offer.