2015-05-20 296 views
2

鉴于一个APK,我们如何找到它是一个32位应用程序或64位应用程序?我正在观察一个应用程序无法在64位Android操作系统上运行。我猜它是一个32位应用程序。如何找到如果apk是32位或64位

+0

APK不是32位或64位。 APK中的NDK二进制文件('.so'文件)将针对特定的CPU架构进行编译。通常,32位二进制文​​件在64位CPU上应该可以正常工作。 – CommonsWare

回答

9

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

64位Android向后兼容,可以运行32位应用程序。另一方面,英特尔Android(32位和64位)与ARM Android的兼容性非常有限(一种名为libhoudini的二进制翻译器已在英特尔上发布,但根据我的经验,它仅适用于非常简单的代码)以及ARM Android与Intel Android完全不兼容。这仅影响lib中的NDK代码的应用程序,纯Java应用程序可以在两者上运行。

+1

是的,只是解压apk文件将得到答案 – Qian

+1

“64位Android向后兼容,可以运行32位应用程序” - 这是记录在某处? – Xiao

+1

@Xiao [Android CDD](https://static.googleusercontent.com/media/source.android.com/cs//compatibility/android-cdd.pdf),第3.3.1节:_MUST支持等效的32位ABI是否支持任何64位ABI_ – StenSoft