Recently, with AIR 14, we announced x86 support for AIR applications. In this article, we explain how should developers manage the binary upload on Google Play Store for ARM and x86 binaries. Android devices are available with three kind of architectures – ARM, x86 and devices which support both x86 and ARM architectures (Eg: Samsung Galaxy Tab 3 10.1). AIR SDK (184.108.40.206 beta onwards) allows developers to create separate APK files for ARM and x86 architectures. And Google Play Developer console provides CPU architecture (ABI) as a filter criteria to support multiple APKs for the same application. The way Adobe AIR developers should make use of this filter criteria would depend on the packaging mode – captive or shared.
For Apps packaged with Captive mode
Please take a look at the following documentation. AIR developers should follow the same guidelines, as are mentioned for native applications.
Assigning a higher versionNumber (in application descriptor) for the x86 version of apk would ensure that the Google Play serves x86 binary to devices with both x86 and ARM support, thereby resulting in better performance.
For Apps packaged with Shared mode
After the recent release of x86 support in AIR, Play Store will have two different binaries for AIR Runtime app– one for ARM devices, and another for x86 devices. For devices which can run both, ARM binary version would be preferred because that used to get downloaded even before we introduced x86 support. And we plan to continue with the same preference to ensure that shared apps dependent on AIR runtime aren’t affected. To align with AIR Runtime app, applications packaged in shared mode should also keep their x86 based binary with lower versionNumber. With this approach, if you face any performance related issues on devices which support both the processors, then you can opt for captive mode of packaging.
The table below summarizes what version gets downloaded on device with different processors type.
|ARM Device||x86 Device||Device supporting both x86 and ARM|
|Runtime.apk||ARM version||x86 version||ARM version|
|Captive App||ARM version||x86 version||x86 version|
|Shared App||ARM version||x86 version||ARM version|