如何检测android设备是64位还是32位处理器?

问题描述 投票:6回答:5

我正在努力为这个问题找到最佳解决方案。原因是我们的应用程序中的lib无法与64位处理器一起运行,所以我需要在这种情况下将其关闭。我发现在Android 21(lolipop)及更高版本中,我们可以通过使用Build.SUPPORTED_64_BIT_ABIS轻松检测到设备是32位还是64位处理器,如果它返回带有0个元素的String数组,那么......哈!该设备是32位处理器。如何降低Android版本? Build.SUPPORTED_64_BIT_ABIS只支持Android Lolipop版本及更高版本。谢谢和最诚挚的问候,祝你们一切顺利!

android processor
5个回答
5
投票

简单回答:没有必要在Lollipop以下的Android版本上检查这个。这是因为Lollipop引入了对64位架构的平台支持,Lollipop以下的Android版本将无法与64位处理器一起运行。

Android 5.0引入了对64位架构的平台支持 - 由Nexus 9的NVIDIA Tegra K1使用。优化为某些计算工作负载提供了更大的地址空间和更高的性能。使用Java语言编写的应用程序自动运行为64位应用程序 - 无需修改。如果您的应用程序使用本机代码,我们已扩展NDK以支持ARM v8,x86-64和MIPS-64的新ABI。 (Source)


5
投票
 try {
            boolean  isArm64 = false;

            BufferedReader localBufferedReader = new BufferedReader(new FileReader("/proc/cpuinfo"));
            if (localBufferedReader.readLine().contains("aarch64")) {
                isArm64 = true;
            }
            localBufferedReader.close();
        } catch (IOException e) {
        }

要么

final boolean is64bit = Build.SUPPORTED_64_BIT_ABIS.length > 0;

2
投票

首先将设备连接到系统,在Windows命令提示符下输入此命令

adb shell cat  /proc/cpuinfo | findstr arc

在linux或mac基本系统上打开终端并输入此命令

  adb shell cat  /proc/cpuinfo | grep arc

如果contain 32的第一行表示系统类型是32bit

第一行如果contain 64意味着系统类型是64bit


1
投票

我找到了API,通过app进程区分。

Process.is64Bit()

当然,它可以是arm 64或x86-64。

但是,如果您只打包arm共享库,则x86设备无法安装您的应用程序。

所以这个方法很有效。

如果你打包x86共享库,那么上面的答案SUPPORTED_ABIS是可行的。


0
投票

32Bit如果低于5.0,因为android支持64Bit直到5.0。 判断Build.SUPPORTED_ABIS是否支持64以上5.0。

String bits;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    bits = TextUtils.join(", ", Build.SUPPORTED_ABIS).contains("64") ? "64-Bit" : "32-Bit";
} else {
    bits = "32-Bit";
}

您可以使用Dev Tools查看设备是64位还是32位。

© www.soinside.com 2019 - 2024. All rights reserved.