2015-05-20 203 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