Android系统中 setprop,getprop,watchprops命令的使用

本文介绍了在Android系统中获取和配置系统属性的方法,包括使用getprop和setprop命令,以及通过Java代码调用Linux指令的方式。同时,文章还详细解释了如何监听系统属性的变化。

在android系统中,有一些初始化的配置文件,例如:

/init.rc

/default.prop

/system/build.prop

文件里面里面配置了开机设置的系统属性值,

这些属性值,可以通过getprop获取,setprop设置,

它的格式如下:

getprop [key]

获取指定key的配置值,如果不带参数,只是getprop则是显示系统所有的配置值。

[dalvik.vm.heapsize]: [24m]

[curlockscreen]: [1]

[ro.sf.hwrotation]: [0]

[ro.config.notification_sound]: [OnTheHunt.ogg]

[ro.config.alarm_alert]: [Alarm_Classic.ogg]

setprop [key] [value]
设置指定key的属性值,
watchprops
监听系统属性的变化,如果期间系统的属性发生变化则把变化的值显示出来
/system # watchprops
1307501833 sys.settings_system_version = '37'
1307501836 sys.settings_system_version = '38'
1307501862 persist.sys.timezone = 'Asia/Hong_Kong'
其实这三个命令都是toolbox的子命令,如果有兴趣的可以看在android源码中看到其对应的源码:
system/core/toolbox/


一般而言,我们在串口中输入getprop指令,会出现很多类似键值对的系统变量值,上图:




这些都是系统值,然而这些都是都是底层创建的变量,例如在某个驱动程序中创建,但如果在java语言中想获得这些信息中的某个变量的值,怎么办呢?
1,上一节我们讲解了,在java中如何调用linux的指令,主要通过如下代码实现:
            Process process =  Runtime.getRuntime().exec(com);
            InputStreamReader ir = new InputStreamReader(process.getInputStream());
            BufferedReader input = new BufferedReader(ir);

2,我们想getprop和setprop既然都是命令,能不能也用上面的方面尝试得到值呢 ,当然。
     getprop 用法:getprop [key]
    setprop用法:setprop [key] [value] 
   注:实际中是没有中括号的。
所以用法同上:
            Process process =  Runtime.getRuntime().exec("getprop ro.runtime.firstboot");
            InputStreamReader ir = new InputStreamReader(process.getInputStream());
            BufferedReader input = new BufferedReader(ir);





Android 系统中,`setprop` 命令用于动态设置系统属性。这些系统属性通常以键值对的形式存在,用于控制设备的底层行为、调试选项、日志级别等。`setprop` 命令通常通过 `adb shell` 执行,适用于开发和调试阶段。 ### 基本用法 ```bash adb shell setprop <key> <value> ``` - `<key>`:系统属性的名称。 - `<value>`:要设置的值。 ### 示例 #### 1. 设置日志级别 ```bash adb shell setprop log.tag.OMX VERBOSE ``` 该命令将 OMX 模块的日志输出级别设置为 `VERBOSE`,用于调试媒体相关的问题 [^2]。 #### 2. 修改设备型号信息 ```bash adb shell setprop ro.product.model MyCustomDevice ``` 该命令修改设备型号为 `MyCustomDevice`,某些定制 ROM 或调试场景中会使用此类设置 [^1]。 #### 3. 控制调试行为 ```bash adb shell setprop debug.sf.showupdates 1 ``` 此命令启用 SurfaceFlinger 的更新显示调试功能,用于 UI 渲染调试 [^3]。 ### 注意事项 - **权限要求**:使用 `setprop` 需要具有相应的系统权限。通常只有 root 用户或具有调试权限的开发者可以修改某些关键系统属性。 - **临时性**:通过 `setprop` 设置的属性通常是临时的,设备重启后会恢复默认值。 - **持久化设置**:如果需要持久化设置系统属性,可以通过修改系统配置文件(如 `/default.prop` 或 `/system/build.prop`)来实现。 ### 与 `settings put` 的区别 虽然 `adb shell settings put` 也用于设置属性,但它主要用于设置应用层的设置项(如屏幕亮度、飞行模式状态等),而 `setprop` 更偏向底层系统配置 [^3]。 --- ```bash # 示例:查看所有系统属性 adb shell getprop # 示例:查看特定属性值 adb shell getprop ro.product.model ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值