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