Android JNI:32 位与 64 位设备的兼容性?

Android JNI: 32-bit compatability with 64-bit devices?

我有一些使用本机组件的库,这些库是使用 NDK 为 32 位 Arm 架构构建的。

现在我们在现代设备上有 64 位处理器,所以我想知道这些库是否可以工作。在我的情况下,我没有本地库的源代码文件,只有 SO 文件,我无法为 64 位构建它们。

那么 32 位库 运行 会在 64 位处理器上运行吗?或者我必须重新构建它们?

**

编辑

** 在我的场景中,我有以下内容:

1- 我手动分发了 APK,还没有发布到 Google Play。

2- 该项目有两个本机库,一个支持 64 位和 32 位,另一个仅支持 32 位。

有没有一种方法可以让应用程序在 64 位设备上运行而无需发布到 Google Play?我可以删除 64 位库以强制包管理器加载 32 位库吗?

32 位库在 64 位处理器上工作得很好。

只要库以 right/official 方式安装(即,不是从 APK 中的某些非标准部分手动下载或提取,而是在 APK 中正确打包),包管理器就会检测到进程使用32位库,进程应该以32位模式启动。否则,进程将以 64 位模式启动,之后将无法加载 32 位库。 (如果您的 APK 包含一些 .so 文件,但不是全部,在 64 位模式下,它只会安装它们,并且该过程将在 64 位模式下启动。因此,除非所有 .so 文件都可用于特定的 ABI,不包括其中任何一个)。

因此,如果您拥有其中一个本机库的 64 位版本,只需删除它并仅发布 32 位版本,直到您拥有所有这些库的 64 位版本。