问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Android 如何判断CPU是32位还是64位

发布网友 发布时间:2022-04-20 09:22

我来回答

1个回答

热心网友 时间:2022-06-20 20:15

可以利用三种方式来判断CPU是32位还是64位:1. 读取Android 的system property ("ro.proct.cpu.abilist64")来判断2. 读取"/proc/cpuinfo"文件的第一行来判断3. 读取libc.so文件的ELF头部e_indent[]数组,根据数组第e_indent[4]的取值来判断[java] view plain copy public static final String CPU_ARCHITECTURE_TYPE_32 = "32"; public static final String CPU_ARCHITECTURE_TYPE_64 = "64"; /** ELF文件头 e_indent[]数组文件类标识索引 */ private static final int EI_CLASS = 4; /** ELF文件头 e_indent[EI_CLASS]的取值:ELFCLASS32表示32位目标 */ private static final int ELFCLASS32 = 1; /** ELF文件头 e_indent[EI_CLASS]的取值:ELFCLASS64表示64位目标 */ private static final int ELFCLASS64 = 2; /** The system property key of CPU arch type */ private static final String CPU_ARCHITECTURE_KEY_64 = "ro.proct.cpu.abilist64"; /** The system libc.so file path */ private static final String SYSTEM_LIB_C_PATH = "/system/lib/libc.so"; private static final String SYSTEM_LIB_C_PATH_64 = "/system/lib64/libc.so"; private static final String PROC_CPU_INFO_PATH = "/proc/cpuinfo"; private static boolean LOGENABLE = false; /** * Check if the CPU architecture is x86 */ public static boolean checkIfCPUx86() { //1. Check CPU architecture: arm or x86 if (getSystemProperty("ro.proct.cpu.abi", "arm").contains("x86")) { //The CPU is x86 return true; } else { return false; } } /** * Get the CPU arch type: x32 or x64 */ public static String getArchType(Context context) { if (getSystemProperty(CPU_ARCHITECTURE_KEY_64, "").length() > 0) { if (LOGENABLE) { Log.d("###############getSystemProperty","CPU arch is 64bit"); } return CPU_ARCHITECTURE_TYPE_64; } else if (isCPUInfo64()) { return CPU_ARCHITECTURE_TYPE_64; } else if (isLibc64()) { return CPU_ARCHITECTURE_TYPE_64; } else { if (LOGENABLE) { Log.d("###############getArchType()","return cpu DEFAULT 32bit!"); } return CPU_ARCHITECTURE_TYPE_32; } } private static String getSystemProperty(String key, String defaultValue) { String value = defaultValue; try { Class<?> clazz= Class.forName("android.os.SystemProperties"); Method get = clazz.getMethod("get", String.class, String.class); value = (String)(get.invoke(clazz, key, "")); } catch (Exception e) { if (LOGENABLE) { Log.d("getSystemProperty", "key = " + key + ", error = " + e.getMessage()); } } if (LOGENABLE) { Log.d("getSystemProperty", key + " = " + value); } return value; } /** * Read the first line of "/proc/cpuinfo" file, and check if it is 64 bit. */ private static boolean isCPUInfo64() { File cpuInfo = new File(PROC_CPU_INFO_PATH); if (cpuInfo != null && cpuInfo.exists()) { InputStream inputStream = null; BufferedReader bufferedReader = null; try { inputStream = new FileInputStream(cpuInfo); bufferedReader = new BufferedReader(new InputStreamReader(inputStream), 512); String line = bufferedReader.readLine(); if (line != null && line.length() > 0 && line.toLowerCase(Locale.US).contains("arch64")) { if (LOGENABLE) { Log.d("###############isCPUInfo64()", PROC_CPU_INFO_PATH + " contains is arch64"); } return true; } else { if (LOGENABLE) { Log.d("###############isCPUInfo64()", PROC_CPU_INFO_PATH + " is not arch64"); } } } catch (Throwable t) { if (LOGENABLE) { Log.d("###############isCPUInfo64()","read " + PROC_CPU_INFO_PATH + " error = " + t.toString()); } } finally { try { if (bufferedReader != null) { bufferedReader.close(); } } catch (Exception e) { e.printStackTrace(); } try { if (inputStream != null) { inputStream.close(); } } catch (Exception e) { e.printStackTrace(); } } } return false; } /** * Check if system libc.so is 32 bit or 64 bit */ private static boolean isLibc64() { File libcFile = new File(SYSTEM_LIB_C_PATH); if (libcFile != null && libcFile.exists()) { byte[] header = readELFHeadrIndentArray(libcFile); if (header != null && header[EI_CLASS] == ELFCLASS64) { if (LOGENABLE) { Log.d("###############isLibc64()", SYSTEM_LIB_C_PATH + " is 64bit"); } return true; } } File libcFile64 = new File(SYSTEM_LIB_C_PATH_64); if (libcFile64 != null && libcFile64.exists()) { byte[] header = readELFHeadrIndentArray(libcFile64); if (header != null && header[EI_CLASS] == ELFCLASS64) { if (LOGENABLE) { Log.d("###############isLibc64()", SYSTEM_LIB_C_PATH_64 + " is 64bit"); } return true; } } return false; } /** * ELF文件头格式是固定的:文件开始是一个16字节的byte数组e_indent[16] * e_indent[4]的值可以判断ELF是32位还是64位 */ private static byte[] readELFHeadrIndentArray(File libFile) { if (libFile != null && libFile.exists()) { FileInputStream inputStream = null; try { inputStream = new FileInputStream(libFile); if (inputStream != null) { byte[] tempBuffer = new byte[16]; int count = inputStream.read(tempBuffer, 0, 16); if (count == 16) { return tempBuffer; } else { if (LOGENABLE) { Log.e("readELFHeadrIndentArray", "Error: e_indent lenght should be 16, but actual is " + count); } } } } catch (Throwable t) { if (LOGENABLE) { Log.e("readELFHeadrIndentArray", "Error:" + t.toString()); } } finally { if (inputStream != null) { try { inputStream.close(); } catch (Exception e) { e.printStackTrace(); } } } } return null; }
Android 如何判断CPU是32位还是64位

可以利用三种方式来判断CPU是32位还是64位:1. 读取Android 的system property ("ro.product.cpu.abilist64")来判断2. 读取"/proc/cpuinfo"文件的第一行来判断3. 读取libc.so文件的ELF头部e_indent[]数组,根据数组第e_indent[4]的取值来判断[java] view plain copy public static final String ...

Android 如何判断CPU是32位还是64位

CPU包装盒: 64位CPU的CPU包装盒后面的说明都标有此CPU是64位CPU的字样,而且还可以正面上写的型号推测是不是64的CPU CPU安装到电脑上后,可以在电脑上用CPU-Z等软件测一下是不是64的CPU当然现在64位的CPU还需要64位的操作系统的支持,才能发挥他的功效,还有软件方面,现在大多数的程序都是在基于...

如何查看Android手机CPU类型是armeabi,armeabi-v7a,还是arm64-v8

1.armeabiv-v7a: 第7代及以上的 ARM 处理器.2.arm64-v8a: 第8代、64位ARM处理器,现在很多手机使用X86的手机.红米11.三星 Galaxy S6是其中之一。3.armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。4.x86: 平板、模拟器用得比较多。使用命令:adb shell getprop ro.product.cpu...

Android设备的Architecture架构:arm64-v8a armeabi-v7a

检查应用的32/64位版本查看应用的原生库文件(.so文件)可以确定其架构。ARM架构下,32位在armeabi-v7a,64位在arm64-v8a。x86架构则相反,32位在x86,64位在x86_64。使用APK分析器或直接解压APK文件,查找对应的lib文件夹中的.so文件,以确认应用支持的架构。总结来说,尽管64位设备兼容32位应用,...

64位ARM CPU在android 32位和64位版性能有多大差别?

安卓手机目前没有32位和64位之分,只有安卓平台的版本划分。六十四位的能比三十二位的运算速度快

Android设备的Architecture架构:arm64-v8a armeabi-v7a

对于ARM架构,32位在armeabi-v7a文件夹,64位在arm64-v8a。x86架构的32位库在x86,64位在x86_64。使用APK分析器,如Android Studio的“Analyze APK”功能,可以直观查看应用中包含的库。如果发现armeabi-v7a或x86,说明是32位;如果arm64-v8a或x86_64存在,那么应用支持64位。若两者都有,那么你的...

Android手机64位和32位的软件存在兼容问题吗

在64位设备上,如果app的 lib 目录下 存在armeabi,则以32位兼容方式运行。如果存在arm64-v8a 则已64位运行。如果没有任何 so,则 primaryCpuAbi 为空,按照系统的默认配置决定,也就是64位运行。根据这些因素就可以决定这个apk是应该是32位的还是64位的。以上就是Android L 64位系统兼容32位应用...

如何查看Android设备的CPU架构信息

目前各手机操作系统都有相应的硬件检测软件,如android平台的《android优化大师》里面会有显示。 如果需要详细数据的话,可以用手机型号搜索查出相应硬件,然后上ARM官网查询架构的详细信息。 比如目前主流的Cortex-A8、A9以及即将商用的A15都是...

android cpu有哪些信息

Android中如何获得系统相关的信息(比如CPU使用率,内存的总量和已用的量)1、查看CPU我想大家都很关系自己的爱机的CUP到底是什么具体信息呢.那就跟我来操纵吧.打开超级终端,在命令行下输入SU回车,然后在#后输入cat /proc/cpuinfo回车.看到了吧.一串信息显示出来了.具体如下(以本人手机为例):# cat ...

如何获取 Android 设备的CPU核数,时钟频率以及内存大小

Android 的 CPU 设备文件位于/sys/devices/system/cpu/目录,文件名的的格式为cpu\d+。?1 2 3 4 5 6 7 8 9 10 root@generic_x86_64:/sys/devices/system/cpu # ls cpu0 cpufreq cpuidle kernel_max modalias offline online possible power present uevent 统计一下文件个数便可以获得 CPU...

如何判断是不是 cpu烧了 如何判断cpu是否工作 如何判断cpu 如何判断cpu的性能 如何判断cpu性能好坏 如何判断cpu该换了 怎么判断cpu是不是全新的 怎么判断cpu是不是瓶颈了 32位cpu中的32指的是什么
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
上海大名城映_有多少户? 英特尔处理器漏洞有哪些害? 英特尔漏洞都会影响哪些CPU?下一代还会影响吗? cpu使用率100%是怎么回事呀? 生姜红茶减肥法骗局 鲁东大学大一新生电话卡是用的学校发的联通卡吗? 鲁东大学用移动的多还是用联通的多?求师哥师姐们解答 ...牙齿一碰到溃疡就疼,治疗口腔溃疡的偏方有哪些呢? 我想找一个飞车情侣名字,我有车队,车队名字是丿茗门丨灬 梦幻悟空传变态版安卓APK 安卓有没有能查看进程CPU占用的app 安卓查看cpu频率的软件 哈尔滨最差的网吧 用了天下无斑后皮肤起绉出现了好多干纹而且眼睛一... 块,捉,急,直行,身,死,信,跟,忽,喊用加一加,减一减,... 关于虚云老和尚晚年的疑问? 皮衣起绉被形怎么办? 衬衫皱了怎么办 求问有与真丝绉相似的质感但相对来说比较便宜的面料? abb式的词有哪些词 衬衣皱了怎么办? 有人认识这兰花是什么品种的吗。。求解释。 天下三江南奇石在哪里 真丝双绉面料的价格 钓鱼撒窝子用鸭骨可以吗? 肩上绉裥怎么裁 在以前养过鱼的废弃鱼塘里钓鲫鱼,用什么撒窝子,... 立夏后钓鲤鱼撒窝子用什么料和用什么钓饵 立春后钓鲤鱼撒窝子用什么料和用什么钓饵 钓鱼用来撒窝子的诱饵是用什么方法配制的? CPU架构怎样看的..?? 脸书未来三年要在新闻行业砸十亿美元,如此大手笔... 外国人和外国明星一般用什么社交软件? facebook相当于微信吗 脸书将黑人错认为“灵长类动物”,官方已致歉,你能... 扎克伯格1年安保费2300万美元,扎克伯格对脸书来说... 脸书上有哪些好看的韩国小受? 雅思4.5分相当于什么水平? 咸菜配方50种 玫瑰酱菜的腌制方法? 苹果se值得入手吗 腌制咸菜的配方是什么? 酱菜采用什么杀菌方法? 请问什么是灯控开关? 监控灯控啥意思? 智能灯控的品牌有哪些? 哪些品牌比较好呢? 无线灯控必须要手机控制吗? 救护车灯控怎么使用 路灯控制的工作原理是怎样的? 什么是 灯光控制