Android 如何确定apk是32位还是64位

Android 如何确定apk是32位还是64位,android,apk,Android,Apk,给定一个APK,我们如何找到它是32位应用程序还是64位应用程序?我观察到一个应用程序无法在64位android操作系统上运行。我猜这是一个32位的应用程序。APK是ZIP。您可以打开它并检查目录lib,查看支持哪些体系结构。如果没有目录lib,则它支持所有体系结构 64位Android向后兼容,可以运行32位应用程序。另一方面,英特尔安卓(32位和64位)与ARM安卓的兼容性非常有限(英特尔提供了一个名为libhoudini的二进制转换器,但根据我的经验,它只适用于非常简单的代码),而且ARM

给定一个APK,我们如何找到它是32位应用程序还是64位应用程序?我观察到一个应用程序无法在64位android操作系统上运行。我猜这是一个32位的应用程序。

APK是ZIP。您可以打开它并检查目录
lib
,查看支持哪些体系结构。如果没有目录
lib
,则它支持所有体系结构


64位Android向后兼容,可以运行32位应用程序。另一方面,英特尔安卓(32位和64位)与ARM安卓的兼容性非常有限(英特尔提供了一个名为
libhoudini
的二进制转换器,但根据我的经验,它只适用于非常简单的代码),而且ARM安卓与英特尔安卓完全不兼容。这只影响在
lib
中使用NDK代码的应用程序,纯Java应用程序可以在这两个应用程序上运行。

没有JNI的应用程序 如果您没有使用JNI,您的APK将不包含任何
.so
文件

使用JNI的应用程序 解压APK,例如
解压tensorflow-lite.aar-d tensorflow-lite

查看
/jni
,并观察其中的目录:

看起来我解压的APK/AAR包含了所有4个JNI-ABI的
。这很好,因为我为所有平台构建了tensorflow lite库


APK不是32位或64位。APK中的NDK二进制文件(
.so
文件)将针对特定的CPU架构进行编译。一般来说,32位二进制文件应该可以在64位CPU上正常工作。确保你的应用程序支持64位设备检查这篇文章“64位Android是向后兼容的,可以运行32位应用程序”-这篇文章是否有文档记录?@Xiao,第3.3.1节:如果支持任何64位ABI,则必须支持等效的32位ABI。因此,我没有“lib”我的应用程序中的目录或“.so”文件。我想它是64位兼容的。有什么事要做吗?Google Play控制台中是否有任何标志可用于将该应用程序标记为64位兼容?我可以忽略谷歌发送的题为“让你的应用为64位需求做好准备”的时事通讯吗?@PabloAlfonso我的,我的APK没有任何lib目录,也没有“.so”。我认为它只适用于使用本机代码的开发人员。这一点非常清楚,我认为“许多应用程序完全是用非本机代码编写的(例如Java编程语言或Kotlin),不需要更改代码。”@Pabloalfons你可以忽略它,谷歌向所有人发送了这个公告,我也没有发布和接收任何应用程序