Google details the upcoming 64-bit requirement for Android apps on the Play Store:

Starting August 1, 2019, your apps published on Google Play will need to support 64-bit architectures. 64-bit CPUs deliver faster, richer experiences for your users. Adding a 64-bit version of your app provides performance improvements, makes way for future innovation, and sets you up for devices with 64-bit-only hardware.

How to analyze your app compatible with 64- bit devices:

If you want to check your app supports the 64-bit first you analyze your apk file and then find the following native libraries folders based on ABI(Application Binary Interface) such as

For the 32-bit libraries folder

lib/armeabi-v7a (ARM platform)

lib/x86 (x86 platform)

For the 64-bit libraries folder

lib/arm64-v8a (ARM platform)

lib/x86_64 (x86 Platform)

so if you not find any .so file in the above folder then there are no changes required and your app is compatible with 64-bit.

If you are getting the .so file in the above folder then we need to update our app compatible to 64- bit.

if you are getting both 32- bit and 64-bit libraries so you do not need to required any changes.

if you not getting any 64-bit libraries folders so we need to update our third party (native libraries ) with those folders and further analyze the apk form the apk tool analyzer.

  1. https://android-developers.googleblog.com/2017/12/improving-app-security-and-performance.html

2. https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html

3. https://developer.android.com/ndk/guides/abis

4. https://www.b4x.com/android/forum/threads/support-for-abifilters-or-packagingoptions-when-compiling.89700/

5. https://developer.android.com/distribute/best-practices/develop/64-bit#assess-your-app

6. https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.NdkOptions.html

7. https://medium.com/mindorks/how-i-decreased-my-app-size-to-70-using-apk-analyser-4a6f79512072

8.https://gist.github.com/gogeta95/528bf0fca9d7b306e82a47c5d355c4c8#file-build-gradle

9. https://corbt.com/posts/2015/09/18/mixing-32-and-64bit-dependencies-in-android.html

10. https://9to5google.com/2019/01/15/android-app-64-bit-requirement/

11. https://developer.android.com/ndk/guides/application_mk

12. https://medium.com/@mujtahidah/build-document-scanner-android-studio-50cc0c9d297f

13. https://android.googlesource.com/platform/ndk/+/97f5b9de8f353ad15d5edd7cc77974d6fefe2caa%5E%5E!/

14. http://web.guohuiwang.com/technical-notes/androidndk1

15. https://android.googlesource.com/platform/ndk/+/android-4.2_r1/docs/CPU-ARCH-ABIS.html

16. https://androidbycode.wordpress.com/tag/abi/

17. https://software.intel.com/en-us/android/articles/how-to-develop-and-evaluate-64-bit-android-apps-on-intel-x86-platforms

18. https://proandroiddev.com/reducing-apk-size-by-using-abi-filters-and-apk-split-74a68a885f4e

19.https://android.jlelse.eu/controlling-apk-size-when-using-native-libraries-45c6c0e5b70a

20. https://medium.com/androiddevelopers/smallerapk-part-4-multi-apk-through-abi-and-density-splits-477083989006

if you won't make the apk with the latest CPU architecture you need to configure you gradile file with the ndk filters.

defaultConfig {

applicationId “my.test.64bitapp”

minSdkVersion 15

targetSdkVersion 26

versionCode 42

versionName “1.0.2”

multiDexEnabled true

vectorDrawables.useSupportLibrary = true

ndk.abiFilters ‘armeabi-v7a’, ‘arm64-v8a’, ‘x86’ ,’x86_64'

}

OR

defaultConfig {

applicationId “com.swypmedia”

minSdkVersion 16

targetSdkVersion 26

versionCode 2

versionName “2.0.2”

ndk {

abiFilters ‘armeabi-v7a’, ‘arm64-v8a’, ‘x86’ ,’x86_64'

}

}

APP_ABI := arm64-v8a # Target only arm64-v8a

APP_ABI := all # Target all ABIs, including those that are deprecated.

APP_ABI := armeabi-v7a x86_64 # Target only armeabi-v7a and x86_64.

Split the Multiple Apk on the basis of ABI

splits {
// Configures multiple APKs based on ABI.
abi {

// Enables building multiple APKs per ABI.
enable true

// By default all ABIs are included, so use reset() and include
// to specify that we only want APKs for x86, armeabi-v7a, and mips.

// Resets the list of ABIs that Gradle should create APKs for to none.
reset()

// Specifies a list of ABIs that Gradle should create APKs for.
include “mips”, “x86”, “x86_64”, “arm64-v8a”, “armeabi-v7a”

// Specifies that we do not want to generate a universal APK
// that includes all ABIs.
//universalApk true //generate an additional APK that contains all the ABIs
universalApk false
}
}
// map for the version code
project.ext.versionCodes = [‘armeabi’: 1, ‘armeabi-v7a’: 2, ‘arm64-v8a’: 3, ‘mips’: 5, ‘mips64’: 6, ‘x86’: 7, ‘x86_64’: 8]

android.applicationVariants.all { variant ->
// assign different version code for each output
variant.outputs.each { output ->
output.versionCodeOverride =
project.ext.versionCodes.get(output.getFilter(com.android.build.OutputFile.ABI), 0) * 1000000 + android.defaultConfig.versionCode
}
}

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store