4

Android SDK 中是否有任何代码可以让我检查设备是否在英特尔处理器上运行?

谢谢。

4

5 回答 5

1

我认为您应该使用Build.CPU_ABIBuild.CPU_ABI2以某种方式检测正在运行的处理器。只需看看Build给出的类:

从系统属性中提取的有关当前构建的信息。

于 2012-07-19T14:55:48.817 回答
1

据我所知,您真正需要了解处理器的 ISA 的唯一时间是您需要运行本机代码时。因此,一种方法是简单地在您的本机库中添加一个方法,该方法为不同的 ISA(MIPS、ARM、x86)返回不同的值。您只需要一个 JNI 调用即可获得您想要的答案。

于 2012-07-19T14:56:01.817 回答
1

我个人将其用作 hack,但也许您会发现它很有用。思路是用cat解析/proc/cpuinfo,并在上面查找GenuineIntel。我在一个应用程序上使用它。

正如我所说,这似乎是一个 hack,也许一个更有经验的 Android 开发人员可以提出更好的解决方案。

private boolean isAnIntel() {
   String[] args = {"/system/bin/cat", "/proc/cpuinfo"};
   cmd = new ProcessBuilder(args);

   Process process = cmd.start();
   InputStream in = process.getInputStream();
   byte[] re = new byte[1024];
   while(in.read(re) != -1){
    result = result + new String(re);
   }
   in.close();
   return result.indexOf("GenuineIntel") > 0;
}
于 2012-07-19T15:05:16.110 回答
0

不要忘记 android 是 LINUX 所有 CPU 信息都在文件“/proc/cpuinfo”上 如果处理器是 intel,那么该文件中 vendor_id 的值将是 GenuineIntel。(vendor_id : GenuineIntel)

于 2012-07-19T14:59:05.697 回答
0

在英特尔博客上有文章https://software.intel.com/en-us/blogs/2014/12/16/how-to-identify-the-image-is-32-bit-or-64-bit-他们建议使用自 Android 5.0 以来更改 API的ro.product.cpu.abi属性或再次使用的用户空间Build

CPU_ABI
CPU_ABI2
SUPPORTED_32_BIT_ABIS
SUPPORTED_64_BIT_ABIS
SUPPORTED_ABIS
于 2015-03-25T04:30:49.820 回答