1. Android 设备节点
Android基于Linux内核。设备节点文件是设备驱动的逻辑文件,可以通过设备节点来访问设备驱动。
很多设备信息都可存储在节点中。apk可以访问节点,获取设备信息或状态。
2. framework中读取节点的例子
Android Settings 应用中给出了很多的设备信息,可以以此为入口;进一步可以找到 Build.java
例如获取设备的版本号,应用中直接可以调用 Build.DISPLAY 获得字符串
源码 Build.java (frameworks\base\core\java\android\os)
public static final String PRODUCT = getString("ro.product.name");
......
private static String getString(String property) {
return SystemProperties.get(property, UNKNOWN);
}
跳转到 SystemProperties.java (frameworks\base\core\java\android\os) 这个类不开放
// 调用 native_get ,获取节点;可以设定默认值
public static String get(String key, String def) {
if (key.length() > PROP_NAME_MAX) {
throw new IllegalArgumentException("key.length > " + PROP_NAME_MAX);
}
return native_get(key, def);
}
3. 应用层读写节点
应用层中,一般都能够读取设备节点。对于写节点这个操作,需要更高的root权限。
读取设备节点
例如给设备新添加了节点,路径是 /sys/class/demo/version
可以adb shell
进入机器,然后 cat /sys/class/demo/version</