这一条命令不怎么起眼,而且似乎也并没有什么特别的用途。
但是它有一个特别NB的feature
那就是可以重置ro.xxxxx
的prop条目
首先来看看我们使用setprop来修改时产生的效果
以ro.build.user
为例
z2_plus:/ # getprop ro.build.user
libxzr
z2_plus:/ # setprop ro.build.user test
setprop: failed to set property 'ro.build.user' to 'test'
造成这种情况的原因是什么呢?

可见ro.xxx
的属性是只读的,没有办法通过setprop
进行修改
上图给出的两条链接中,指向的都是修改build.prop文件的解决方案
但是实际上,我们可以使用resetprop
命令
z2_plus:/ # getprop ro.build.user
libxzr
z2_plus:/ # setprop ro.build.user test
setprop: failed to set property 'ro.build.user' to 'test'
z2_plus:/ # resetprop ro.build.user test
z2_plus:/ # getprop ro.build.user
test
可见,只读属性被成功修改。
杂
这个命令还有一些神秘之处
比如
z2_plus:/ # resetprop
[DEVICE_PROVISIONED]: [1]
[af.fast_track_multiplier]: [1]
[android.telephony.apn-restore]: [24000]
[apexd.status]: [ready]
[audio.deep_buffer.media]: [true]
[audio.offload.min.duration.secs]: [15]
[audio.offload.video]: [true]
[bpf.progs_loaded]: [1]
[bt.max.hfpclient.connections]: [1]
[camera.disable_zsl_mode]: [1]
......................................
这似乎和getprop
的效果是一样的了
z2_plus:/ # resetprop ro.build.user
test
这种用法似乎还是等同于getprop
。prop条目也没有被移除。
BUG
这个命令似乎还存在一定的不稳定性。。。
之前测试的时候,我运行resetprop ro.build.user test
然后,它报了个错。再之后,ro.build.user
整个条目就从prop表里消失了(成功解决了删除prop的一大难题??
至于这个命令到底是怎么来的,等待对aosp源码的探索
BTW
如果你想要用这条命令动态修改安全补丁等级、机型信息等
那就是做梦(刚刚试了下,系统里的信息并不会变,变的只有getprop得到的值
(这些信息大概是在系统早期初始化的时候就已经被读进去了