如何强制 Android 应用程序使用 32 位或 64 位库

How to force Android application to use either 32bit or 64 bit libraries

在具有 64 位 ARM 的 Android 设备上,将有许多库的两个变体,32 位和 64 位,并且它们的性能可能不同。我想知道是否有办法强制应用程序使用 32 位或 64 位库。

https://source.android.com/source/64-bit-builds.html

在你身上试试这个Android.mk

LOCAL_MULTILIB := 32 // or 64

安装apk时可以指定ABI

adb install --abi <path to apk>

如果是 ARM 设备,

要运行 在 32 位模式下安装,

adb install --abi armeabi-v7a <path to apk>

要 运行 在 64 位模式下安装,

adb install --abi arm64-v8a <path to apk>

  1. 如果您的 apk 是用纯 java(没有 jni)编写的,在 64-bit-primiary/32-bit-secondary Android OS 上,您的应用将始终默认情况下 运行 在 64 位模式下,但如果您希望您的应用程序在 32 位模式下 运行,您可以创建一个虚拟 *.so 文件并将其放在 <your apk name>/libs/armeabi/ 下以强制 AndroidRuntime 为您的应用创建 32 位 VM

  2. 如果你的 apk 的某些功能是用 jni 编写的(<your apk name>/libs/ 文件夹中有任何 *.so 文件),你可以使用以下命令使它成为 运行 在 64 位或 32 位虚拟机中:

    • 在 32 位模式下运行,因为只会安装 32 位本机库

    adb shell install --abi armeabi-v7a <path to your apk>

    • 在 64 位模式下运行,因为只会安装 64 位本机库

    adb shell install --abi arm64-v8a <path to your apk>