Search Unity

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.

11 评论

订阅评论

评论被关闭。

  1. Will the Cloud build system handle building the matrix of systems we will have to support nowadays? 32 / 64 / ARM / x86. It would be nice to have a blog post on Cloud build.

  2. Unity is a great game development tool!

  3. hi Hury Habets, is unity doing anything specific for android ‘GO’, SDK Platform 27 (oreo 8.1)? As per google it’s ‘lite’ version of Android, for devices with 512MB/1GB ram.

    1. Although not directly related to the topic of the blog post –

      We are closely following the progress made on Android Go. However, Unity currently does not officially support it. Things may change in the future – please stay tuned and follow our blog!

  4. Hey Yury, Thanks for sharing this as its a great post.

    Great

    MEmu

    FMWhatsApp for Android

  5. Thanks for the update. Can you comment on the size increase for including the 64-bit libraries in the APK?
    We are currently building 2 different APKs – x86 and ARM. Maybe we can further split this into ARM32 and ARM64 so that the APK size won’t be affected.

    1. Lior – your concern makes total sense, especially that IL2CPP implies having a native library with user scripts and the runtime. If you want to include all 3 currently supported architectures into the same APK, it means you need to have IL2CPP libraries (and compiled user scripts) for each architecture.

      As you can see from Google’s blog post, using Multiple APK support is the recommended solution. On our side, we are adding checkboxes for each supported architecture in the Player settings, so that you can combine them as you wish. Of course, you will be able to build APKs for ARM 32-bit, ARM 64-bit and x86 separately.

  6. Hello Yury,

    Thanks for such a great post you have shared here.

    Thanks
    9series
    http://9spl.com

  7. Our AVPro Video plugin already comes with arm64 support. We look forward to actually being able to test it though :)

    1. You may want to apply for alpha version access (if you’re not in the group yet) – to have the earliest preview possible.

  8. Fortunately, the IL2CPP stuff seems to be much more mature now since the last time this happened on the Apple side.
    That was a complete mess