Mobile Development 13 min read

How to Ensure Your Android App Supports 64‑Bit ABI and Pass Store Requirements

This guide explains why Android apps must adopt 64‑bit architectures, outlines market mandates, describes the ABI landscape, shows how to detect missing 64‑bit native libraries with Gradle scripts or the EasyPrivacy plugin, and provides step‑by‑step instructions for updating build configurations, testing, and publishing compliant APKs or App Bundles.

BaiPing Technology
BaiPing Technology
BaiPing Technology
How to Ensure Your Android App Supports 64‑Bit ABI and Pass Store Requirements

Introduction

With recent smartphone hardware moving to 64‑bit CPUs, the main difference between 32‑bit and 64‑bit is memory addressing: 32‑bit supports up to 4 GB, while 64‑bit can address up to 128 GB. Major app stores now require 64‑bit support.

Google Play: Since 1 August 2019, all apps published on Google Play must support a 64‑bit architecture.

Chinese stores: Xiaomi, OPPO, Vivo, and others have issued notices requiring 64‑bit APKs for new and updated apps, with deadlines in December 2021, August 2022, and the end of 2023. Huawei AppGallery also stopped accepting 32‑bit‑only packages from February 2022.

Android ABI Overview

Different Android devices use different CPUs, each with its own Application Binary Interface (ABI). Common ABIs are:

armeabi‑v7a : 32‑bit ARM, gradually deprecated.

arm64‑v8a : 64‑bit ARM (AArch64), currently mainstream.

x86 : 32‑bit Intel, usually for emulators.

x86_64 : 64‑bit Intel, also for emulators.

ARM64 can run 32‑bit ARM libraries, but not vice‑versa. When an app includes both 32‑ and 64‑bit libraries, two Zygote processes (one 32‑bit, one 64‑bit) run, and the primary ABI is chosen at install time.

64‑bit systems can use more than 4 GB of RAM per thread and typically deliver at least a 20 % performance boost, which is crucial for large games, video processing, and high‑resolution media.

Checking 64‑Bit Support in Your APK

Use Android Studio’s APK Analyzer to inspect the lib folder. If only armeabi or armeabi‑v7a directories are present, the APK lacks 64‑bit support. Presence of arm64‑v8a or x86_64 indicates 64‑bit native libraries.

APK lib folder showing missing 64‑bit libraries
APK lib folder showing missing 64‑bit libraries

Detecting Missing 64‑Bit .so Files with Gradle

You can create a Gradle task that scans the merged native libraries during the build. The following script demonstrates how to locate .so files and report which ABIs are present:

void apply(Project project) {<br/>    project.afterEvaluate {<br/>        // Find the merge[Variant]NativeLibs task<br/>        Task mergeNativeTask = null;<br/>        for (Task task : project.getTasks()) {<br/>            if (task.name.startsWith("merge") && task.name.endsWith("NativeLibs")) {<br/>                mergeNativeTask = task;<br/>                break;<br/>            }<br/>        }<br/>        if (mergeNativeTask == null) return;<br/><br/>        // Create detection task<br/>        project.getTasks().create("support 64-bit abi") {<br/>            group "privacy"<br/>            dependsOn mergeNativeTask<br/>            doFirst {<br/>                println "EasyPrivacy => Support 64-bit abi start."<br/>                SoFileList soList = new SoFileList();<br/>                mergeNativeTask.inputs.files.each { file -><br/>                    findSoFile(file, soList);<br/>                }<br/>                soList.printlnResult();<br/>            }<br/>        }<br/>    }<br/>}<br/><br/>void findSoFile(File file, SoFileList soList) {<br/>    if (file == null) return;<br/>    if (file.isDirectory()) {<br/>        file.listFiles().each { findSoFile(it, soList) }<br/>    } else if (file.absolutePath.endsWith(".so")) {<br/>        SoFile so = generateSoInfo(file);<br/>        if (so.soPath.contains("armeabi-v7a")) soList.armeabiv_v7a.add(so);<br/>        else if (so.soPath.contains("armeabi")) soList.arm…

The script classifies each .so file by its ABI folder name (e.g., armeabi‑v7a, arm64‑v8a, x86, x86_64) and prints a summary.

EasyPrivacy detection results
EasyPrivacy detection results

Modifying Build Configuration for 64‑Bit

Update the ndk block in build.gradle to include both 32‑ and 64‑bit ABIs:

ndk {<br/>    abiFilters "armeabi-v7a", "arm64-v8a"<br/>}

Rebuild the project; the arm64‑v8a folder should now appear in the APK.

APK with both 32‑bit and 64‑bit libraries
APK with both 32‑bit and 64‑bit libraries

After adding the 64‑bit version of third‑party libraries (e.g., gsyVideoPlayer-arm64), run the detection task again to verify that all required .so files are present.

Detection after adding arm64 libraries
Detection after adding arm64 libraries

Packaging Strategies

Bundling both 32‑ and 64‑bit libraries in a single APK increases size. For Google Play, use Android App Bundle to let the store deliver optimized splits. In Chinese markets that do not yet support bundles, generate separate APKs for each ABI using the splits DSL:

splits {<br/>    abi {<br/>        enable true<br/>        reset()<br/>        include 'armeabi-v7a', 'arm64-v8a'<br/>        universalApk false<br/>    }<br/>}

Run assembleRelease to produce the ABI‑specific packages.

Different ABI APKs
Different ABI APKs

Testing on Real Devices

Check the device’s CPU ABI via ADB:

adb shell getprop ro.product.cpu.abi<br/># output e.g. arm64-v8a

If the output is arm64-v8a, the device is 64‑bit. Perform functional testing on both 32‑bit and 64‑bit devices before uploading the final packages to the app stores.

Conclusion

Adopting 64‑bit support is now the mainstream requirement for Android apps. It satisfies store policies, improves performance on modern devices, and future‑proofs your application against upcoming restrictions.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

AndroidAPKGradle64-bitabiApp Bundlenative libraries
BaiPing Technology
Written by

BaiPing Technology

Official account of the BaiPing app technology team. Dedicated to enhancing human productivity through technology. | DRINK FOR FUN!

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.