1.简介

  每个属性都有一个名称和值,他们都是字符串格式。属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性。 
  在系统初始化时,Android将分配一个共享内存区来存储的属性。这些是由“init”守护进程完成的,其源代码位于:device/system/init。“init”守护进程将启动一个属性服务。属性服务在“init”守护进程中运行。每一个客户端想要设置属性时,必须连接属性服务,再向其发送信息。属性服务将会在共享内存区中修改和创建属性。任何客户端想获得属性信息,可以从共享内存直接读取。

2.系统属性文件

  属性服务调用libc中的__system_property_init函数来初始化属性系统的共享内存。当启动属性服务时,将从以下文件中加载默认属性:

  • /default.prop
  • /system/build.prop
  • /system/default.prop
  • /data/local.prop

  属性将会以上述顺序加载。后加载的属性将覆盖原先的值。这些属性加载之后,最后加载的属性会被保持在/data/property/中。

  用cat命令可以查看其中内容。如;

 ro.config.ringtone=Bass_and_light_percussion.mp3
ro.config.ringtone_2=Bass_and_light_percussion.mp3
ro.config.notification_sound=Chimes_chord.mp3
ro.config.alarm_alert=Dawn.mp3
persist.sys.timezone=Asia/Shanghai
dalvik.vm.heapgrowthlimit=128m
dalvik.vm.heapminfree=4m
dalvik.vm.heapstartsize=16m
keyguard.no_require_sim=true
ro.com.android.dataroaming=true
ro.com.android.dateformat=MM-dd-yyyy
ro.carrier=unknown
ro.vendor.extension_library=libqti-perfd-client.so
persist.radio.apm_sim_not_pwdn=1
persist.radio.sib16_support=1
persist.radio.custom_ecc=1
ro.frp.pst=/dev/block/bootdevice/by-name/config
dalvik.vm.heapsize=256m
dalvik.vm.heaptargetutilization=0.75
dalvik.vm.heapmaxfree=8m
persist.dbg.volte_avail_ovr=1
persist.env.data_roaming=false
persist.radio.vrte_logic=1
persist.radio.domain.ps=1
persist.radio.VT_ENABLE=1
persist.radio.VT_HYBRID_ENABLE=1
ro.telephony.default_cdma_sub=0
persist.sys.cdma.disable=false
persist.bmct.enabled=1
persist.sys.boot_music_ctrl=0
persist.sys.cdma_disable_iccid=false
persist.sys.dclick.camera=false
persist.sys.doubletp.click=0
persist.sys.dalvik.vm.lib.2=libart.so
dalvik.vm.isa.arm64.features=div,needfix_835769
dalvik.vm.isa.arm.features=div
ro.kernel.android.checkjni=1
dalvik.vm.image-dex2oat-filter=verify-none
dalvik.vm.dex2oat-filter=interpret-only
net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt
persist.gps.qc_nlp_in_use=1
persist.loc.nlp_name=com.qualcomm.location
ro.gps.agps_provider=1
ro.pip.gated=0
persist.radio.calls.on.ims=1
persist.radio.jbims=1
persist.radio.csvt.enabled=false
persist.radio.rat_on=combine
persist.radio.mt_sms_ack=20 import /system/vendor/default.prop import /system/vendor/vendor.prop import /system/vendor/power.prop

3.命名规则

  • 以“ro.”开头,只读属性。一旦设置,属性值不能改变。
  • 以“net.”开头,当设置这个属性时,“net.change”属性将会自动设置,以加入到最后修改的属性名。(这是很巧妙的。 netresolve模块的使用这个属性来追踪在net.*属性上的任何变化。)
  • 属性“ ctrl.start ”和“ ctrl.stop ”是用来启动和停止服务。每一项服务必须在/init.rc中定义.系统启动时,与init守护进程将解析init.rc和启动属性服务。一旦收到设置“ ctrl.start ”属性的请求,属性服务将使用该属性值作为服务名找到该服务,启动该服务。这项服务的启动结果将会放入“ init.svc.<服务名>“属性中。客户端应用程序可以轮询那个属性值,以确定结果。
  • 以“persist.”开头,当设置这个属性时,其值也将写入/data/property。可查看其下面已经写入的属性:
4d66gf@H3H287:~$ adb shell ls -l /data/property/
-rw------- root root 1 1970-01-01 11:11 persist.camera.isp.dump
-rw------- root root 3 1970-01-01 09:45 persist.camera.thermal.mode
-rw------- root root 1 1970-01-01 10:04 persist.radio.adb_log_on
-rw------- root root 5 1970-01-01 10:04 persist.radio.eons.enabled
-rw------- root root 6 1970-01-01 10:04 persist.radio.iccid_0
-rw------- root root 6 1970-01-01 10:04 persist.radio.iccid_1
-rw------- root root 1 1970-01-01 10:04 persist.radio.msim.stackid_0
-rw------- root root 1 1970-01-01 10:04 persist.radio.msim.stackid_1
-rw------- root root 1 1970-01-01 10:04 persist.radio.ril_payload_on
-rw------- root root 1 1970-01-01 10:04 persist.radio.sglte_target
-rw------- root root 1 1970-01-01 10:04 persist.radio.stack_id_0
-rw------- root root 1 1970-01-01 10:04 persist.radio.stack_id_1
-rw------- root root 0 1970-01-01 08:06 persist.service.adb.enable
-rw------- root root 1 1970-01-01 08:03 persist.service.adb.root
-rw------- root root 17 1970-01-01 08:06 persist.service.bdroid.bdaddr
-rw------- root root 1 1970-01-01 11:29 persist.sys.boot_music_ctrl
-rw------- root root 9 1970-01-01 10:05 persist.sys.dalvik.vm.lib.2
-rw------- root root 1 1970-01-01 08:03 persist.sys.dpmd.tcm
-rw------- root root 5 1970-01-01 08:07 persist.sys.media.use-awesome
-rw------- root root 1 1970-01-01 10:07 persist.sys.profiler_ms
-rw------- root root 5 1970-01-01 08:06 persist.sys.sw.firstLaunch
-rw------- root root 29 1970-01-01 08:03 persist.sys.usb.config
-rw------- root root 4 1970-01-01 08:03 persist.sys.usb.config.extra

4.监听命令

$adb shell watchprops persist.sys.boot_music_ctrl

5.更改命令

$adb shell setprop persist.sys.boot_music_ctrl 3

6.查看命令

$adb shell getprop persist.sys.boot_music_ctrl

adb shell getprop,setprop,watchprops更改,查看,监听系统属性的更多相关文章

  1. Android getprop setprop watchprops用法

    转载请注明出处:https://www.cnblogs.com/lialong1st/p/10172973.html 在安卓系统中,当你写了一个脚本,已经添加到开机启动 init.rc 中,即使脚本中 ...

  2. adb获取Android系统属性(adb shell getprop ***)数据来源

    在Android系统中,它的根文件系统下有几个用于启动系统时需要的配置文件: /init.rc /default.prop /system/build.prop 通常我们可以通过命令getprop获取 ...

  3. adb shell get/setprop, setenforce...

    adb shell getprop <key> 获取设备参数信息adb shell setprop <key> <value> 设置设备参数信息 例子1:>C ...

  4. go 监听系统信号

    linux 信号查看 kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFP ...

  5. Android监听系统短信数据库变化-提取短信内容

    由于监听系统短信广播受到权限的限制,所以很多手机可能使用这种方式没法监听广播,从而没办法获取到系统短信,所以又重新开辟一条路. Android监听系统短信数据库内容变化使用场景: 1.监听短信数据库的 ...

  6. 广播小案例-监听系统网络状态 --Android开发

    本例通过广播实现简单的监听系统网络状态改变的小案例. 1.案例效果演示 当手机连网后,系统提示“已连接网络”, 当手机断网后,系统提示“当前网络不可用”. 2.案例实现 在主活动中动态注册广播,然后写 ...

  7. Android 监听 Android中监听系统网络连接打开或者关闭的实现代码

    本篇文章对Android中监听系统网络连接打开或者关闭的实现用实例进行了介绍.需要的朋友参考下 很简单,所以直接看代码 复制代码 代码如下: package xxx; import android.c ...

  8. Object.defineProperty 监听对象属性变化

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  9. 侦听器watch 监听单个属性

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. Python 005- 使用Pyecharts来绘制各种各样的图形

    本文转载自:https://blog.csdn.net/qq_39143076/article/details/79065448,如有侵权,请联系删除啊 如何做Python 的数据可视化? pyech ...

  2. Spring源码深度解析——笔记

    1.spring容器的基本用法 xml配置 <bean id="myTestBean" class="bean.MyTestBean"/> 调用 B ...

  3. HDOJ 5045 Contest

    状压DP.. . . Contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  4. 用WaveX实现音频文件的录音

    原文地址:https://blog.csdn.net/gongluck93/article/details/53096013 1.WaveInOpen waveInOpen MMRESULT wave ...

  5. hihoCoder 1582 Territorial Dispute 【凸包】(ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛)

    #1582 : Territorial Dispute 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 In 2333, the C++ Empire and the Ja ...

  6. 使用delphi 开发多层应用(十六)使用XMLRPC 实现basic4android 远程调用RTC服务(讲述了RTC的特点,其底层通讯协议是自己封装SOCK 库,与kbmmw 的适合场合不完全一样)

        RealThinClient (以下简称RTC) 也是一款delphi 多层开发的框架,由于其底层通讯协议是自己封装SOCK 库,抛弃了 大家诟病的indy,因此表现的非常稳定,效率也非常高, ...

  7. Android ADB实现解析【转】

    本文转载自:http://blog.csdn.net/u010223349/article/details/41120255   ADB是Android系统提供的调试工具,整个ADB工具由三部分组成: ...

  8. linux初级学习笔记六:linux用户及权限详解!(视频序号:03_4)

    本节学习的命令:/etc/passwd,/etc/shadow,/etc/group文件详解 本节学习的技能: 安全上下文 文件与目录的权限管理 影子命令 用户,用户组类别详解 /etc/passwd ...

  9. luogu 4782【模板】 2-SAT 问题

    2-SAT就是给出$m$个限制表示$x==val_x || y==val_y$ 求出满足的解 每个点拆成两个点,如果$x$不满足则$y$一定满足,$y$不满足同理.这样我们连边,然后$tarjan$即 ...

  10. [Selenium] 使用自定义的FirefoxProfile

    FirefoxProfile 用于定制待测试的Firefox 浏览器的特定属性,其中包括所存储的密码.书签.历史信息.Cookies等.某些测试用例需要用到特定的用户信息,因此可通过定制当前Firef ...