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. c++学习笔记之基础---类内声明函数后在类外定义的一种方法

    在C++的“类”中经常遇到这样的函数, 返回值类型名 类名::函数成员名(参数表){ 函数体.} 双冒号的作用 ::域名解析符!返回值类型名 类名::函数成员名(参数表) { 函数体. } 这个是在类 ...

  2. ObjectARX学习笔记(三十二)----怎样设置AcDbMText对齐方式

    //_T("\\pxql;") 居左 //_T("\\pxqr;") 居右 //_T("\\pxqc;") 居中 //_T("\\ ...

  3. HashMap随机取值和迭代器取值的对比

    一共四中方法,前两种是迭代器取值,后两种是随机取值,循环了5000万次,时间分别为:迭代器读取的速度大约是随机读取的速度的1.5倍,数据量越大,差距越明显. 另外,插入是读取的100倍左右的时间(这个 ...

  4. SimpleAdapter ArrayAdapter用法

    listView = (ListView) findViewById(R.id.list_main); /* String[] strings = {"A","A&quo ...

  5. JavaScript页面刷新与弹出窗口问题的解决方法

    1. [代码][JavaScript]代码     ​一.无提示刷新网页 大家有没有发现,有些网页,刷新的时候,会弹出一个提示窗口,点“确定”才会刷新.而有的页面不会提示,不弹出提示窗口,直接就刷新了 ...

  6. AM335x Android eMMC mkmmc-android.sh hacking

    # AM335x Android eMMC mkmmc-android.sh hacking # # . 有空解读一下android的分区文件. # . 代码来源:https://github.com ...

  7. BZOJ_4311_向量_线段树按时间分治

    BZOJ_4311_向量_CDQ分治+线段树按时间分治 Description 你要维护一个向量集合,支持以下操作: 1.插入一个向量(x,y) 2.删除插入的第i个向量 3.查询当前集合与(x,y) ...

  8. node安装升级npm

    安装npm npm上有很多优秀的nodejs包,来解决常见的一些问题,比如用node-mysql,就可以方便通过nodejs链接到mysql,进行数据库的操作 在开发过程往往会需要用到其他的包,使用n ...

  9. C#面向对象之数据库(理论、插入、修改、删除、查询)

    1.数据库的作用:不仅仅是存储,更重要的是将数据进行存储以后怎么样才能方便快捷的查询修改 2.数据库的特点:海量存储.查找速度快.并发性问题控制.安全性.数据完整性(保存在数据库中的数据是正确的.真是 ...

  10. centos7安装redis3.2.12

    1.准备安装包,放在/usr/local/src/ 2.解压安装包,解压到/usr/local/ tar zxf redis-3.2.12.tar.gz -C /usr/local/ 3.cd /us ...