Android 判断手机是32位CPU还是64位CPU android.os.Build类字段含义

本文介绍了如何在Android设备上判断手机CPU是32位还是64位的方法,并提供了相关代码示例。适用于Android API level21及更高版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手机cpu分32位与64位,下面介绍如何在所有android版本上判断手机cpu位数是32位还是64位。

1 Android 判断手机是32位CPU还是64位CPU

Android从API level 21开始,android.os.Build.java类中提供了3个属性可以查询cpu位数,分别是:

String[] supportedAbis = Build.SUPPORTED_ABIS;

在64位手机上查询示例结果:arm64-v8a,armeabi-v7a,armeabi
在32位手机上查询示例结题 :armeabi-v7a,armeabi

 String[] supported32BitAbis = Build.SUPPORTED_32_BIT_ABIS;

在 在64位手机 或者 32位手机上:查询结果为 armeabi-v7a,armeabi

String[] supported64BitAbis = Build.SUPPORTED_64_BIT_ABIS;

在64位手机上查询示例结果:arm64-v8a
在32位手机上查询结果为空,即64位的so不能在32位的手机上兼容

2 这个我应用在 AndroidQ获取不到imsi解决方案中

    /**
     * 获取设备唯一标识符
     *
     * @return 唯一标识符
     */
    @SuppressLint("HardwareIds")
    public static String getDeviceId(Context context) {
        int abiLength = Build.CPU_ABI.length();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
            String[] supportedAbis = Build.SUPPORTED_ABIS;
            abiLength = supportedAbis.length;
        }

        String m_szDevIDShort = "35" + Build.BOARD.length() % 10
                + Build.BRAND.length() % 10 + abiLength % 10
                + Build.DEVICE.length() % 10 + Build.DISPLAY.length() % 10
                + Build.HOST.length() % 10 + Build.ID.length() % 10
                + Build.MANUFACTURER.length() % 10 + Build.MODEL.length() % 10
                + Build.PRODUCT.length() % 10 + Build.TAGS.length() % 10
                + Build.TYPE.length() % 10 + Build.USER.length() % 10;// 13 位

        String serial = "serial";// 默认serial可随便定义
        try {
            if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O) {
                if (ActivityCompat.checkSelfPermission(context,
                        Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
                    // 由于 Android Q 唯一标识符权限的更改会导致
                    // android.os.Build.getSerial() 返回 unknown,
                    // 但是 m_szDevIDShort 是由硬件信息拼出来的,所以仍然保证了UUID 的唯一性和持久性。
                    serial = android.os.Build.getSerial();// Android Q 中返回 unknown
                }
            } else {
                serial = Build.SERIAL;
            }
        } catch (Exception ignored) {
            return null;
        }
        return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
    }
3 android.os.Build类字段含义

android.os.Build.BOARD:获取设备基板名称
android.os.Build.BOOTLOADER:获取设备引导程序版本号
android.os.Build.BRAND:获取设备品牌
android.os.Build.CPU_ABI:获取设备指令集名称(CPU的类型)
android.os.Build.CPU_ABI2:获取第二个指令集名称
android.os.Build.DEVICE:获取设备驱动名称
android.os.Build.DISPLAY:获取设备显示的版本包(在系统设置中显示为版本号)和ID一样
android.os.Build.FINGERPRINT:设备的唯一标识。由设备的多个信息拼接合成。
android.os.Build.HARDWARE:设备硬件名称,一般和基板名称一样(BOARD)
android.os.Build.HOST:设备主机地址
android.os.Build.ID:设备版本号。
android.os.Build.MODEL :获取手机的型号 设备名称。
android.os.Build.MANUFACTURER:获取设备制造商
android:os.Build.PRODUCT:整个产品的名称
android:os.Build.RADIO:无线电固件版本号,通常是不可用的 显示unknown
android.os.Build.TAGS:设备标签。如release-keys 或测试的 test-keys
android.os.Build.TIME:时间
android.os.Build.TYPE:设备版本类型 主要为”user” 或”eng”.
android.os.Build.USER:设备用户名 基本上都为android-build
android.os.Build.VERSION.RELEASE:获取系统版本字符串。如4.1.2 或2.2 或2.3等
android.os.Build.VERSION.CODENAME:设备当前的系统开发代号,一般使用REL代替
android.os.Build.VERSION.INCREMENTAL:系统源代码控制值,一个数字或者git hash值
android.os.Build.VERSION.SDK:系统的API级别 一般使用下面大的SDK_INT 来查看
android.os.Build.VERSION.SDK_INT:系统的API级别 数字表示
android.os.Build.VERSION_CODES类 中有所有的已公布的Android版本号。全部是Int常量。可用于与SDK_INT进行比较来判断当前的系统版本。

4 测试用例
public static String getDeviceInfo() { 
    StringBuffer sb = new StringBuffer(); 
    sb.append("主板: "+ Build.BOARD+"\n"); 
    sb.append("系统启动程序版本号: " + Build.BOOTLOADER+"\n"); 
    sb.append("系统定制商:" + Build.BRAND+"\n"); 
    sb.append("cpu指令集: " + Build.CPU_ABI+"\n"); 
    sb.append("cpu指令集2 "+ Build.CPU_ABI2+"\n"); 
    sb.append("设置参数: "+ Build.DEVICE+"\n"); 
    sb.append("显示屏参数:" + Build.DISPLAY+"\n"); 
    sb.append("无线电固件版本:" + Build.getRadioVersion()+"\n"); 
    sb.append("硬件识别码:" + Build.FINGERPRINT+"\n"); 
    sb.append("硬件名称:" + Build.HARDWARE+"\n"); 
    sb.append("HOST: " + Build.HOST+"\n"); 
    sb.append("修订版本列表:" + Build.ID+"\n"); 
    sb.append("硬件制造商:" + Build.MANUFACTURER+"\n"); 
    sb.append("版本:" + Build.MODEL+"\n"); 
    sb.append("硬件序列号:" + Build.SERIAL+"\n"); 
    sb.append("手机制造商:" + Build.PRODUCT+"\n"); 
    sb.append("描述Build的标签:" + Build.TAGS+"\n"); 
    sb.append("TIME: " + Build.TIME+"\n"); 
    sb.append("builder类型:" + Build.TYPE+"\n"); 
    sb.append("USER: " + Build.USER+"\n"); 
    return sb.toString(); 
  } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早起的年轻人

创作源于分享

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值