如何查找 apk 是 32 位还是 64 位

How to find if apk is 32-bit or 64-bit

给定一个 APK,我们如何确定它是 32 位应用程序还是 64 位应用程序?我观察到一个应用无法在 64 位 android OS 上 运行。我想它是一个 32 位应用程序。

A​​PK 是 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 库。