Earlier this week Google announced important changes to the Google Play requirements: target API level 26 (Android 8.0 Oreo) or higher will be required for new submissions starting August 2018, and all submissions starting November 2018. 64-bit support becomes mandatory for submissions in August 2019. In this blog post we would like to help you prepare for these changes and cover our plans to support the requirements.
We suggest you set Target API Level in the Player Settings to “Automatic”. This means the build process will set targetSdkVersion in your manifest to the latest SDK Platform you have installed within your Android SDK. Given that you have SDK Platform 26 (Android 8.0 Oreo) installed, you will fulfil the new requirements. To make it even easier for you, we will show you an SDK update prompt in the Editor if it’s missing, and you can let Unity update the Android SDK for you. After that you’re fully prepared for the new requirements.
If you want to control the target API level yourself, you can select the desired value in the Target API Level dropdown. We will be adding the latest API levels to the list for all currently supported Unity versions shortly. In any case, please make sure to thoroughly test your application after updating the target API level.
We are also happy to share that our native 64-bit support for Android is in its final development stage and is being tested internally. We aim to make it public in Unity 2018.2 as a preview and expecting it to mature in time for full release in 2018.3 (which is expected to ship in Q4 2018), well before the requirement is enforced by Google Play.
Initially, Unity Android ARM 64-bit support will only support IL2CPP scripting backend. IL2CPP technology offers C++ class performance for your scripts and can make your applications start-up time twice as fast. If you are publishing your games to Google Play and still using Mono scripting backend, we strongly recommend you consider moving to IL2CPP instead.
Mono on Android is based on Just In Time (JIT) compilation, which means code gets converted from .NET IL code to machine code right on the Android device, while IL2CPP is based on Ahead Of Time (AOT) compilation, when all the code is converted to machine code (through intermediate form of C++ code) on developer’s machine. AOT allows you to have faster startup times and better overall performance, because most of the expensive optimizations are done on a desktop machine, rather than on a mobile device. More information on IL2CPP can be found on the dedicated Unity Manual page.
If you’re using custom native plugins, you should modify your build scripts to include ARM64 architecture. If you rely on third party native plugins, reach out to your plugin provider for ARM64 support.
We’re happy to discuss this news on our dedicated forum thread.