[TECH] Preparing for the new Google Play 64bit support policies

Google Play 64bit Support – Explore more about Google Play 64bit support policies that will become effective from August 1, 2019, and learn what needs to be prepared.


[TECH] Preparing for the new Google Play 64bit support policies

Due to the recently modified Google Play policy, new registered apps and app updates since August 1, 2019 will need to come with a 64-bit version.
Please find the necessary information as follows.
[ Get your apps ready for the 64-bit requirement by google ]
Since August 1st, 2019 :
- All new apps and app updates with native code need to provide 64bit versions in addition to 32bit when uploading on Google Play.
- the subject of extended term: Google Play will continue to allow 32bit dedicated updates for existing gaming services that use Unity 5.6 or earlier until August 2021.

From August 1st, 2021 :
- Google Play will stop serving apps that do not have 64-bit versions on 64-bit-enabled devices and herefore those devices will become unavailable in the Play Store. (including games created with Unity 5.6 or earlier version)

- These requirements do not apply for the services below.
An APK or app bundle that explicitly targets Wear OS or Android TV, form factors that currently do not support 64bit code
An APK or app bundle that cannot be distributed to devices that run above Android 9 Pie.
Traditional 64-bit Android system has been operating with 32-bit mode with its 32-bit compatible system, nevertheless the native dynamic library (.so ) for 64-bit is not present.

It seems to be a policy in result of effective operation failure as even 64 bit high-performance devices were able to operate with 32-bit memory system.

From August 1st, 2019, the policy mentioned above are applied to all apps except for services that utilize existing registered engine that is Unity 5.6 or lower.

As a result of these policies, the following items must be met when updating apps or registering new apps in the Play Store since August 1, 2019.
- Apps with native dynamic library in app package must include version 64
If you want to know whether the app you are serving is using the native dynamic library, you can check it the following way:
1. Zip open a APK or AAB file
2. 2. Check if ‘lib’ directory exists. (In the case of AAB, check base/lib.)

If the directory such as 'armeabi-v7a' and 'armeabi' exists at the bottom of the lib and the .so file exists inside, the app can be determined as one that is using the native dynamic.

If 'arm64-v8a' exists at the bottom of lib directory and the files existing at the bottom of directory such as 'armeabi-v7a' and 'armeabi' are in 'arm64-v8a', the relevant app can be determined as one that supports 64bit.

And if no 'lib' folder exists when you conduct the work mentioned above, there is no need to worry about this policy since it can be concluded that your app doesn't use the native dynamic library.

If 'arm64-v8a' folder is present in your app package, the steps below will help you determine whether your app is actually running in 64-bit mode on a 64-bit device.
1. Check whether the connected device is 64bit.
  - The device is 64bit if the final value of progressing adb shell getprop ro.product.cpu.abi is 'arm64-v8a'.

2. Check if the final value of the field is 'arm64-v8a' by adding Build.SUPPORTED_ABIS( above api level 21 ) and Build.CPU_ABI( below api level 21 ), to the source code of the app
If 'arm64-v8a' when running the app, it means that the app is currently supporting 64bit and is already meeting the requirements of this policy.

However, if you found out that your app isn't supporting 64 bit, you'll need to add a native dynamic library that's compiled for 64bit.

This policy had made many app services to prepare 64 bit mode and led to a phenomenon where the capacity of app packages increase as new native dynamic library for 64 bit is added. In response, several app services are also trying to solve the issue by switching to an AAB (Android App Bundle).
google play 64bit timeline
In the case of IL2CPP, the source code developed by users exists in a single form of .dll inside the 'assets' during the as-found MONO mode. On the other side, however, UNITY uses IL2CPP mode to support 64 bit which is provided in the form of a native dynamic library file of libil2cpp.so at the bottom of the 'lib' directory in the package.

The libil2cpp.so file should follow this policy because it is a native dynamic library and it requires both 32 bit 64 bits. You may find out a larger capacity of app package at the time of app build.

Android App Bundle (AAB ) is widely used to address this issue since it shows faster download speeds and reduced size through enabling installation of merely native library as well as resource that are fit to the device being used to download app from the Play Store.

Further technological information about AAB will be covered in the next post.

LIAPP supports stable security features in the 64bit system

LIAPP provides you the best service.