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

时间:2015-09-08 08:31:54

标签: android processor

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

6 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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 :(得分:2)

Firdt连接设备ato系统, 在Windows上在命令提示符下键入此命令

adb shell cat  /proc/cpuinfo | findstr arc

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

  adb shell cat  /proc/cpuinfo | grep arc

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

contain 64表示系统类型为64bit

的第一行

答案 3 :(得分:1)

我找到了API,并按应用程序进程进行了区分。

Process.is64Bit()

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

但是,如果您仅打包手臂共享库,则x86设备无法安装您的应用。

因此该方法可行。

如果您打包x86共享库,则上面的答案SUPPORTED_ABIS是可行的。

答案 4 :(得分:1)

如果您使用的是亚行

adb shell cat /proc/cpuinfo | grep rch

大多数输出​​:

架构7-> 32位

架构8-> 64位

  
      
  • 这是 @Naval Kishor Jha

  • 的扩展答案。   
  • 在6个模型中进行了测试

  •   
  • 无需root

  •   

答案 5 :(得分: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位。