4

假设我们有 64 位硬件,带有 64 位 linux 内核和 64 位 android。
因此 Zygote 将作为具有自己的 DVM 实例的 64 位进程运行。

现在假设有一个第三方应用程序包含一个 32 位本机库,该库在运行时使用system.loadlibrary调用加载。

我认为当我们尝试运行这个应用程序时,zygote 将能够启动进程并且 DVM 将能够解释 classes.dex 文件,即使 apk 是为 32 位机器构建的。但是当应用程序尝试加载 32 位本机库时会发生故障,因为设备上的仿生 libc 和其他库都是 64 位的。

这种理解正确吗?

4

1 回答 1

0

据我所知,如果操作系统支持许多 32 位库(64 位系统上的 Java Native Interface 32 位 dll),32 位本机库将在 64 位操作系统上成功运行,并且在 Android 系统中,操作系统架构是 32 位限制(https://android .stackexchange.com/questions/36291/is-android-a-32-bit-or-64-bit-os),因此您需要编译 32 位本机库。

综上所述,32bits 如果在 64bits OS 上运行,则需要 32bits 库。

于 2014-03-24T08:38:24.597 回答