adb shell 查看系统属性(用来判断特殊的操作系统)

一般来讲,在android程序开发中进行需要判断设备类型和系统版本

1、设备类型判断

比如判断属于Google Nexus 5,Nexus 7,MIUI v5, MIUI v6,三星设备,魅族设备等;

这类型的问题都使用的android.os.Build.MODEL来判断,android.os.Build.MODEL是一个String变量,可以根据String中一些特殊字段来判断android设备属于什么设备,比如判断Nexus 7,代码入下

public static boolean isN7() {
        return "Nexus 7".equals(android.os.Build.MODEL);
}

所以平时开发过程中如果不知道一个设备的MODEL值,写个测试程序输出android.os.Build.MODEL值,然后再将该值用到我么的程序中参与判断。

2、系统版本判断(api版本)

比如判断系统是属于2.3, 3.0, 4.4, 5.0 等,这种属性判断使用的是系统的android.os.Build.VERSION.SDK_INT变量。

最常用的场景是用来判断一些系统函数的api版本,比如有些方法只有高版本的api才有,低版本上使用会导致程序崩溃。

但是还有一种场景导致还要第三种方法才能搞定

使用场景:现在操作系统大多是开源的,默认是google 的android系统,但是别忘了还有魅族的Flyme OS 和小米的 Miui,它们是android的变种。如果用非小米手机也装上了miui,后者是非魅族手机装上了魅族的Flyme OS,这种情况怎么判断呢。拿魅族来说:显然这个时候不能用判断设备类型的方式,因为非魅族设备安装了魅族系统。所以这个时候只能判断这个操作系统是魅族的Flyme OS,它的操作系统应该具备一些它自己的特性,所以只要找到一个唯一的特性就可以解决上面的问题了。

3、判断特殊的操作系统---获取系统属性加以研究(魅族为例)

进入adb shell,获取魅族系统属性:

  • 首先进入cmd,然后输入adb shell 命令进入adb shell (前提:adb必须要配置到系统环境变量中)

C:\Users\Administrator>adb shell
     [email protected]:/ $

  • 进入system目录

[email protected]:/ $ cd system
     cd system
     [email protected]:/system $

  • 查看系统属性

[email protected]:/system $ cat build.prop
     cat build.prop
     # begin build properties
     # autogenerated by buildinfo.sh
     ro.build.cta=noncta
     ro.build.id=KTU84P
     ro.build.mask.id=4.4.4-1423716396_wo
     ro.build.args=
     ro.build.inside.id=4.4.4-20150212124636
     ro.build.version.incremental=m76.Flyme_OS_4.2.2.1.20150212124636
     ro.build.version.sdk=19
     ro.build.version.codename=REL
     ro.build.version.release=4.4.4

.....还有很多

  • 筛选包含Flyme字符的属性,因为既然是魅族操作系统,Flyme这个词最能代表它的属性

[email protected]:/system $ cat build.prop | grep Flyme
     cat build.prop | grep Flyme

ro.build.version.incremental=m76.Flyme_OS_4.2.2.1.20150212124636
     ro.build.display.id=Flyme OS 4.2.2.1U
     ro.build.description=meizu_mx4pro-user 4.4.4 KTU84P m76.Flyme_OS_4.2.2.1.2015021
     2124636 release-keys
     ro.build.fingerprint=Meizu/meizu_mx4pro/mx4pro:4.4.4/KTU84P/m76.Flyme_OS_4.2.2.1
     .20150212124636:user/release-keys
     [email protected]:/system $

帅选到四个属性:ro.build.version.incremental   ro.build.display.id   ro.build.description                                        ro.build.fingerprint

  • 换一个其他的安装有魅族操作系统设备,重复上面的步骤。最终会发现 ro.build.display.id这个属性可以当做一个魅族操作系统唯一的特性(因为这个属性值几乎都会包含Flyme字段,这正是我们想要的)。我们就可以用这个属性来与其他系统进行区分。
  • 最后一步,当然是怎么取出这个属性值了。

// 判断是魅族操作系统

public static boolean isMeizuFlymeOS() {
        return getMeizuFlymeOSFlag().toLowerCase().contains("flyme");
}

/**
* 获取魅族系统操作版本标识
*/
public static String getMeizuFlymeOSFlag() {
        return getSystemProperty("ro.build.display.id", "");
}

private static String getSystemProperty(String key, String defaultValue) {
        try {
                Class<?> clz = Class.forName("android.os.SystemProperties");
                Method get = clz.getMethod("get", String.class, String.class);
                return (String)get.invoke(clz, key, defaultValue);
        } catch (ClassNotFoundException e) {
        } catch (NoSuchMethodException e) {
        } catch (IllegalAccessException e) {
        } catch (IllegalArgumentException e) {
        } catch (InvocationTargetException e) {
        }
        return defaultValue;
}

下面是小米操作系统的一些相关方法

/**
* 获取MIUI版本名
*/
public static String getMIUIVersionName() {
        return getSystemProperty("ro.miui.ui.version.name", null);
}

// MIUI v5版本

public static boolean isV5(){
        if("V5".equalsIgnoreCase(getMIUIVersionName())){
                return true;
        }
        return false;
}

时间: 2024-10-10 09:28:51

adb shell 查看系统属性(用来判断特殊的操作系统)的相关文章

Android在ADB下查看系统数据库

最近有一个需求,需要我们在不使用apk的情况下获取系统的数据库数据,ok我们来看下如何实现,当然,在ADB下操作系统数据库,你必须要有root权限. 1.ADB连接手机 2.adb shell 结合find来查找db文件 adb shell find / -name '*.db' -type f 3.导出 adb pull /data/data/com.android.providers.contacts/databases/contacts2.db /local 4.用sqlite打开数据库

Confluence 6 查看系统属性

当你添加了内存,设置了代理(proxy)或者修改了 Java 的选项,通常比较难判断系统是否已经按照你的修改进行了配置和启动.这个页面将会帮助你查看 Confluence 站点运行使用的系统属性. 你可以在 系统信息(System Information)界面中扩展系统的属性,这个配置是在 Confluence 的管理员控制台中配置.在查询系统信息之前,你不需要重新启动 Confluence 服务器. 希望查看有关你 Confluence 的系统属性: 在屏幕的右上角单击 控制台按钮 ,然后选择

shell查看系统基本信息脚本

#!/bin/bash echo "IP:" ifconfig |grep "inet addr"|grep -v 127.0.0.1|awk '{print $2}'|awk -F ':' '{print $2}' echo "Product Name:" dmidecode |grep Name echo "CPU Info:" dmidecode |grep -i cpu|grep -i version|awk -F '

adb logcat 和adb shell 的时候,cmd总是提示wait for devices.

输入命令adb devices 查看系统是否识别设备. List of devices attached 是没有识别到设备. 解决方案:添加真机设备硬件ID(注:这里手机必须要连接到电脑才会出现设备ID) 1.右击我的电脑,然后找到设备管理器打开. 2.找到设备(硬件)ID 3.D:\Program Files\Microvirt\MEmu\adbdrv 下找到或新建一个adb_usb.ini文件.(搜索adb_usb.ini) 4.把VID的数值写入到adb_usb.ini 里面.就是0xVI

【原】Android 设备,如何root,执行adb shell,查看设备中的数据库信息等

(一)第一步:root 使用百度一键root 等app,一键就可root,步骤略 (二) 1.执行 adb shell su 获得root权限 ls 查看当前目录 cd data/data ls 选com.tencent.cm为例 cd com.tencent.cm/database ls 看到里边有一些 .db数据库文件 这时候,执行 sqlite3 tes_db.db 如果你的设备中有sqlite3,这句应该会执行成功,接下来就可以 执行select 语句了, ---------------

adb shell dumpsys 命令 查看内存

http://blog.csdn.net/xyz_lmn/article/details/7001892 android程序内存被分为2部分:native和dalvik,dalvik就是我们平常说的java堆,我们创建的对象是在这里面分配的,而bitmap是直接在native上分配的,对于内存的限制是 native+dalvik 不能超过最大限制.android程序内存一般限制在16M,当然也有24M的. 用以下命令可以查看程序的内存使用情况: adb shell dumpsys meminfo

Java代码查看所有的系统属性

何为系统属性? 系统属性是指与用户程序相关的操作系统配置信息以及软件信息. 用户程序相关的属性例子 file.separator:文件分隔符:Windows环境下为"\",Linux环境下为"/": user.dir:当前用户程序所在目录: path.separator:当前操作系统的路径分隔符: os.version:操作系统版本: user.name:用户登录名称: os.name:操作系统名称: java.ext.dirs:JDK的安装目录: java.hom

【转】【Android测试技巧】01. root后adb shell默认不是root用户时,如何将文件放入手机系统中

http://blog.csdn.net/wirelessqa/article/details/8624208 有些机器root后通过adb shell 后,默认不是root用户,需要输入 su才能切换到root,这样在执行批处理或想将文件放到手机系统中会有问题: 方法一:命令行 1 adb shell "su -c 'sleep 1'" 2 adb start-server 3 adb push tcpdump /data/local/tcpdump 方法二:用工具 adbd Ins

【杂记随笔】查看Ubuntu系统属性

作者 作者:卢冬冬 邮箱:[email protected] 平台 系统:Ubuntu 16.04 64bit 注意 内容 1. 查看系统版本 sudo lsb_release -a 2. 查看CPU信息 cat /proc/cpuinfo 3. 查看板卡信息 cat /proc/pci 4. 查看内存信息 cat /proc/meminfo 5. 查看USB设备 cat /proc/bus/usb/devices 6. 查看键盘和鼠标 cat /proc/bus/input/devices 7