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 位版本。
我有一些使用本机组件的库,这些库是使用 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 位版本。