• 9.1 Android系统信息获取" level="2">9.1 Android系统信息获取
    • 9.1.1 android.os.Build" level="3">9.1.1 android.os.Build
    • 9.1.2 SystemProperty" level="3">9.1.2 SystemProperty
    • 9.1.3 Android系统信息实例" level="3">9.1.3 Android系统信息实例

    9.1 Android系统信息获取" class="reference-link">9.1 Android系统信息获取

    由于Android手机的可开发性,导致市场上各种不同配置、不同价格的Android手机应有尽有。因此,“拼配置”也成了Android手机生产厂家的一个宣传重点。类似“安兔兔”的手机跑分软件可以非常清楚地查看手机系统的配置信息和软硬件信息,下面我们就来看看如何获取这些信息。

    要获取系统的配置信息,通常可以从以下两个方面获取。

    • android.os.Build
    • SystemProperty

    9.1.1 android.os.Build" class="reference-link">9.1.1 android.os.Build

    android.os.Build类里面的信息非常丰富,它包含了系统编译时的大量设备、配置信息,下面列举了一些常用的信息,如下所示。

    • Build.BOARD //主板
    • Build.BRAND // Android系统定制商
    • Build. SUPPORTED_ABIS // CPU指令集
    • Build.DEVICE //设备参数
    • Build.DISPLAY //显示屏参数
    • Build.FINGERPRINT //唯一编号
    • Build.SERIAL //硬件序列号
    • Build.ID //修订版本列表
    • Build.MANUFACTURER //硬件制造商
    • Build.MODEL //版本
    • Build.HARDWARE //硬件名
    • Build.PRODUCT //手机产品名
    • Build.TAGS //描述Build的标签
    • Build.TYPE // Builder类型
    • Build.VERSION.CODENAME //当前开发代号
    • Build.VERSION.INCREMENTAL //源码控制版本号
    • Build.VERSION.RELEASE //版本字符串
    • Build.VERSION.SDK_INT //版本号
    • Build.HOST // Host值
    • Build.USER // User名
    • Build.TIME //编译时间

    上面列表中有一些没有注释的值,它们来自系统的RO值中,这些值是手机生产厂商配置的只读的参数值,根据厂家配置的不同而不同。接下来,看看另一个存储设备软硬件信息的类——SystemProperty。

    9.1.2 SystemProperty" class="reference-link">9.1.2 SystemProperty

    SystemProperty包含了许多系统配置属性值和参数,很多信息与上面通过android.os.Build获取的值是相同的,下面同样列举了一些常用的信息。

    • os.version // OS版本
    • os.name // OS名称
    • os.arch // OS架构
    • user.home // Home属性
    • user.name // Name属性
    • user.dir // Dir属性
    • user.timezone //时区
    • path.separator //路径分隔符
    • line.separator //行分隔符
    • file.separator //文件分隔符
    • java.vendor.url // Java vender URL属性
    • java.class.path // Java Class路径
    • java.class.version // Java Class版本
    • java.vendor // Java Vender属性
    • java.version // Java版本
    • java.home // Java Home属性

    9.1.3 Android系统信息实例" class="reference-link">9.1.3 Android系统信息实例

    下面通过一个简单的实例,来帮助我们了解这些系统信息。

    通过android.os.Build类,可以直接获得一些Build提供的系统信息,而通过System.getProperty("XXXX"),我们可以访问到系统的属性值,代码如下所示。

    1. String board = Build.BOARD;
    2. String brand = Build.BRAND;
    3.  
    4. String os_version = System.getProperty("os.version");
    5. String os_name = System.getProperty("os.name");

    在实例程序中获取的信息与上面列举出来的属性值相同,这里就不重复了,程序运行效果如图9.1所示。

    9.1 Android系统信息获取 - 图1 图9.1 系统信息获取

    运行示例程序后可以看到,我们已经获取到了相当多的系统信息。那么这些系统信息最根本的来源又是在哪儿呢?记得在分析Android系统目录的时候我们曾经提到过一点,在system/build.prop文件中,包含了很多RO属性值,打开命令行窗口,进入/system目录,通过cat build.prop命令查看文件信息,结果如图9.2所示。

    9.1 Android系统信息获取 - 图2 图9.2 系统信息

    这里我们看见了很多前面通过android.os.Build所获取到的系统信息,同时,在adb shell中,还可以通过getprop来获取对应属性的值,如图9.3所示。

    9.1 Android系统信息获取 - 图3 图9.3 获取系统属性

    除了上面所说的两个方法,Android系统还有另外一个非常重要的目录来存储系统信 息——/proc目录,在adb shell中进入/proc目录,通过ll命令查看文件信息,如图9.4所示。

    9.1 Android系统信息获取 - 图4 图9.4 proc目录

    可以看见,这里包含了非常多的系统信息,使用cat cpuinfo命令打开cpuinfo文件,显示内容如图9.5所示。

    9.1 Android系统信息获取 - 图5 图9.5 cpuinfo信息

    可见,这里的信息比通过Build获得的信息更加丰富,因此,如果要想获得更加精确、丰富的系统信息,可以通过执行adb shell命令来查看这些节点文件,来获取更多的系统信息。