Starting August 1, 2019, all new apps published on Google Play need to support 64-bit architectures.

Whether you're porting existing 32-bit code, or writing completely new software, you'll need to understand how to make sure your app is ready to support 64-bit devices.

Advantages of 64-bit

Migrating to 64-bit provides performance and efficiency gains, allows for continuous and future innovation in Arm CPUs, and enables new workloads such as artificial intelligence (AI), machine learning (ML), and immersive mobile gaming.

How am I affected?

The key question you need to answer is: does my application use any native code?

Native code means machine code that has been compiled for a specific processor.

Many apps will not contain any native code. If your app only uses code written in Java, for example, then your app is ready to support 64-bit devices without any changes. The current Android Runtime (ART) will support the application without modification.

Your app makes use of native code if it meets any of the following criteria:

  • Your app makes use of C or C++ code.
  • Your app links with third-party libraries that contain native code.
  • Your app is built by a third-party app builder that uses native libraries.

For more information about assessing whether your app requires modification, see Ensure that your app supports 64-bit devices in the Android Developers documentation.

What do I need to do?

Unity games developers need to use a 64-bit compliant version. Unity provides Upgrade Guides to help you upgrade to a 64-bit compliant version.

Unreal Engine games developers need to enable arm64 support in their project settings. The Porting Unreal® Engine 4 to ARMv8 presentation provides more information about this.

Most code written using Arm Neon intrinsics will compile for 64-bit without change.

However, if an application makes use of native code, developers will at the very least need to recompile for a 64-bit target, and may need to make changes to their source code to port your code to 64-bit.

Some common issues to be aware of when porting code from 32- to 64-bit include:

  • Enable all warnings and errors when re-compiling your code. Take notice of any and all warnings issued by the compiler.
  • Pay close attention to any explicit type casts in your code. Migrating from 32- to 64-bit changes the sizes of underlying types, which can cause problems.
  • Hand-written assembly code will need rewriting.
  • Bit manipulation operations need a bitmask of the correct width.
  • Changes in the sizes of individual elements and in their respective alignment requirements will change the size of many structures, and may impact structure padding.

For a deeper exploration of the issues involved in porting code from 32- to 64-bit, see the Porting to 64-bit Arm whitepaper.

Download whitepaper

Arm resources

The move to 64-bit computing on Android
Blog post from Arm which sets out the reasons behind the move to 64-bit computing on mobile, why it’s important, what the Android ecosystem – especially developers – needs to consider, and what Arm and Google are doing to help.
Porting to Arm 64-bit
An introduction to porting existing code to the A64 instruction set supported by Armv8-A processors.
Whitepaper: 64-bit Computing for Mobile
This paper is intended for the Android application developer or technical decision maker who wishes to learn about why the Arm 64-bit instruction set architecture (AArch64) is an important mobile device building-block for the future.
Migrating to 64-bit Android on Armv8-A
PDF download. This 2015 presentation provides important information for developers that remains relevant today. Topics covered include C coding considerations such as type conversion and pointer arithmetic, porting Neon code, and assembly code migration.
64-bit development on Android
PDF download. This 2015 presentation provides useful information about 64-bit support in Android that remains relevant today. In particular these slides discuss ART and the way ART interacts with native code, and how those affect Application performance, size and execution. The presentation also attempts to answer the critical question: Should I develop for 64-bit and if so, when?

Android resources

Android Developer Site
The official site for Android app developers. Provides the Android SDK tools and API documentation.
AOSP: Understanding 64-bit Builds
Android Open Source Project documentation about building for different target CPU architectures.
NDK: 64-bit ABIs
Android NDK documentation about 64-bit ABI selection.
Android Developers Blog
The latest Android and Google Play news and tips for app and game developers.
Ensure that your app supports 64-bit devices
This Google Play guide explains the steps you need to take to ensure that your 32-bit app is ready to support 64-bit devices.

Video resources

Moving with the Android ecosystem towards a 64-bit r-Evolution
In this in-depth talk from droidcon SF 2018, Arm outlines the technical rationale and benefits of 64-bit, the considerations which must be taken during the transition, as well as hints and tips to ensure a pain-free transition into 64-bit so your apps can avail of the benefits for increased performance.
为应用提供 64 位原生支持 | Android 中文教学视频
本视频向开发者介绍了应用在创建 64 位版本时需要注意的一些事项。