On a Android device with 64bit ARM, would have two variants of many libraries, 32bit and 64 bit, and their performance could be different. I want to know if there is a way to force the application to use either 32bit or 64bit libraries.
For the unaware, Android currently supports both 32-bit and 64-bit applications. Due to this, developers have to maintain two binaries for their apps and ARM has to offer CPUs that feature legacy 32-bit support.
32-bit applications must link with 32-bit libraries, and 64-bit applications must link with 64-bit libraries. It is not possible to create or execute a 32-bit application using 64-bit libraries. The 32-bit libraries continue to be located in /usr/lib and /usr/ccs/lib .
Nowadays if the developer publishes the app as app-bundle Google only sends those partial APK to your device that match your device platform. Hence if you see an APK file named "armv8" it is 64bit, in case of an armv7[e] it is 32bit.
If your apk is written in pure java (without jni), on 64-bit-primiary/32-bit-secondary Android OS, your app will always run in 64 bit mode by default, but if you want your app to run in 32 bit mode, you can create a dummy *.so
file and put it under <your apk name>/libs/armeabi/
to force AndroidRuntime to create a 32 bit VM for your app
If some function of your apk is written in jni (there's any *.so
file in <your apk name>/libs/
folder), you can use following command to make it run in 64 or 32 bit VM:
adb shell install --abi armeabi-v7a <path to your apk>
adb shell install --abi arm64-v8a <path to your apk>
ABI can be specified when the apk is installed.
adb install --abi <path to apk>
In case ARM device,
To run in 32 bit mode install using,
adb install --abi armeabi-v7a <path to apk>
To run in 64 bit mode install using,
adb install --abi arm64-v8a <path to apk>
https://source.android.com/source/64-bit-builds.html
Try this in you Android.mk
LOCAL_MULTILIB := 32 // or 64
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With