如何查找 apk 是 32 位还是 64 位
How to find if apk is 32-bit or 64-bit
给定一个 APK,我们如何确定它是 32 位应用程序还是 64 位应用程序?我观察到一个应用无法在 64 位 android OS 上 运行。我想它是一个 32 位应用程序。
APK 是 ZIP。您可以打开它并检查目录 lib
以查看支持哪些体系结构。如果没有目录lib
,支持所有架构
64 位 Android 向后兼容,可以 运行 32 位应用程序。另一方面,英特尔 Android(32 位和 64 位)与 ARM Android 的兼容性非常有限(英特尔提供了一个名为 libhoudini
的二进制转换器,但根据我的经验,它仅适用于非常简单的代码),并且 ARM Android 与 Intel Android 完全不兼容。这仅影响在 lib
中具有 NDK 代码的应用程序,纯 Java 应用程序可以在两者上都是 运行。
没有 JNI 的应用程序
如果您不使用 JNI,您的 APK 将不包含任何 .so
文件。
带有 JNI 的应用程序
解压缩 APK,例如unzip tensorflow-lite.aar -d tensorflow-lite
查看内部 /jni
,并观察其中的目录:
我解压缩的 APK/AAR 似乎包含所有 4 个 JNI ABI 的 .so
个文件。这很好,因为我为所有平台构建了 tensorflow lite 库。
给定一个 APK,我们如何确定它是 32 位应用程序还是 64 位应用程序?我观察到一个应用无法在 64 位 android OS 上 运行。我想它是一个 32 位应用程序。
APK 是 ZIP。您可以打开它并检查目录 lib
以查看支持哪些体系结构。如果没有目录lib
,支持所有架构
64 位 Android 向后兼容,可以 运行 32 位应用程序。另一方面,英特尔 Android(32 位和 64 位)与 ARM Android 的兼容性非常有限(英特尔提供了一个名为 libhoudini
的二进制转换器,但根据我的经验,它仅适用于非常简单的代码),并且 ARM Android 与 Intel Android 完全不兼容。这仅影响在 lib
中具有 NDK 代码的应用程序,纯 Java 应用程序可以在两者上都是 运行。
没有 JNI 的应用程序
如果您不使用 JNI,您的 APK 将不包含任何 .so
文件。
带有 JNI 的应用程序
解压缩 APK,例如unzip tensorflow-lite.aar -d tensorflow-lite
查看内部 /jni
,并观察其中的目录:
我解压缩的 APK/AAR 似乎包含所有 4 个 JNI ABI 的 .so
个文件。这很好,因为我为所有平台构建了 tensorflow lite 库。