Chinaunix首页 | 论坛 | 博客

apt

  • 博客访问: 388127
  • 博文数量: 121
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 600
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-10 15:52
文章分类

全部博文(121)

文章存档

2017年(2)

2016年(23)

2015年(96)

我的朋友

分类: Android平台

2015-09-16 10:45:21

在上篇博客中实例说明了在android系统下修改init.rc文件添加开机启动脚本,使用的on property:ro.debuggable,下面说一下原理。
在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指令,会出现很多类似键值对的系统变量值,例如:

点击(此处)折叠或打开

  1. #
  2. # ADDITIONAL_DEFAULT_PROPERTIES
  3. #
  4. ro.secure=0
  5. ro.allow.mock.location=1
  6. ro.debuggable=1
  7. persist.sys.usb.config=adb
  8. root@android:/ # getprop
  9. [dalvik.vm.dexopt-flags]: [m=y]
  10. [dalvik.vm.heapgrowthlimit]: [64m]
  11. [dalvik.vm.heapmaxfree]: [8m]
  12. [dalvik.vm.heapminfree]: [512k]
  13. [dalvik.vm.heapsize]: [384m]
  14. [dalvik.vm.heapstartsize]: [8m]
  15. [dalvik.vm.heaptargetutilization]: [0.75]
  16. [dalvik.vm.jniopts]: [warnonly]
  17. [dalvik.vm.stack-trace-file]: [/data/anr/traces.txt]
  18. [dev.bootcomplete]: [1]
  19. [drm.service.enabled]: [false]
  20. [gsm.current.phone-type]: [2]
  21. [gsm.operator.alpha]: []
  22. [gsm.operator.iso-country]: []
  23. [gsm.operator.isroaming]: [false]
  24. [gsm.operator.numeric]: []
  25. [gsm.sim.operator.alpha]: []
  26. [gsm.sim.operator.iso-country]: []
  27. [gsm.sim.operator.numeric]: []
  28. [gsm.sim.state]: [NOT_READY]
  29. [gsm.version.ril-impl]: [V100R005B003D30SP00C03]
  30. [init.svc.bootanim]: [stopped]
  31. [init.svc.console]: [running]
  32. [init.svc.debuggerd]: [running]
  33. [init.svc.drm]: [running]
  34. [init.svc.drmservice]: [stopped]
  35. [init.svc.installd]: [running]
  36. [init.svc.keystore]: [running]
  37. [init.svc.media]: [running]
  38. [init.svc.netd]: [running]
  39. [init.svc.read]: [stopped]
  40. [init.svc.ril-daemon]: [running]
  41. [init.svc.sdcard]: [stopped]
  42. [init.svc.servicemanager]: [running]
  43. [init.svc.surfaceflinger]: [running]
  44. [init.svc.ueventd]: [running]
  45. [init.svc.vold]: [running]
  46. [init.svc.zygote]: [running]
  47. [keyguard.no_require_sim]: [true]
  48. [net.bt.name]: [Android]
  49. [net.change]: [net.qtaguid_enabled]
  50. [net.hostname]: [android-e7f44b61e326df24]
  51. [net.qtaguid_enabled]: [1]
  52. [net.tcp.buffersize.default]: [4096,87380,110208,4096,16384,110208]
  53. [net.tcp.buffersize.edge]: [4093,26280,35040,4096,16384,35040]
  54. [net.tcp.buffersize.evdo]: [4094,87380,262144,4096,16384,262144]
  55. [net.tcp.buffersize.gprs]: [4092,8760,11680,4096,8760,11680]
  56. [net.tcp.buffersize.hsdpa]: [4094,87380,262144,4096,16384,262144]
  57. [net.tcp.buffersize.hspa]: [4094,87380,262144,4096,16384,262144]
  58. [net.tcp.buffersize.hspap]: [4094,87380,1220608,4096,16384,1220608]
  59. [net.tcp.buffersize.hsupa]: [4094,87380,262144,4096,16384,262144]
  60. [net.tcp.buffersize.lte]: [524288,1048576,2097152,262144,524288,1048576]
  61. [net.tcp.buffersize.umts]: [4094,87380,110208,4096,16384,110208]
  62. [net.tcp.buffersize.wifi]: [524288,1048576,2097152,262144,524288,1048576]
  63. [persist.service.bdroid.bdaddr]: [b0:99:8e:34:da:a9]
  64. [persist.sys.country]: [US]
  65. [persist.sys.language]: [en]
  66. [persist.sys.localevar]: []
  67. [persist.sys.profiler_ms]: [0]
  68. [persist.sys.strictmode.visual]: [false]
  69. [persist.sys.timezone]: [Atlantic/Azores]
  70. [persist.sys.usb.config]: [mass_storage]
  71. [ro.allow.mock.location]: [1]
  72. [ro.ap_data_only]: [0]
  73. [ro.ap_has_alsa]: [0]
  74. [ro.ap_has_earphone]: [0]
  75. [ro.ap_mdm]: [0]
  76. [ro.baseband]: [unknown]
  77. [ro.board.platform]: [rk3188]
  78. [ro.boot.console]: [ttyFIQ0]
  79. [ro.bootloader]: [unknown]
  80. [ro.bootmode]: [unknown]
  81. [ro.bt.bdaddr_path]: [/data/misc/bluetoothd/bt_addr]
  82. [ro.build.characteristics]: [tablet]
  83. [ro.build.date.utc]: [1442301840]
  84. [ro.build.date]: [2015骞09鏈15鏃鏄熸湡浜15:24:00 CST]
  85. [ro.build.description]: [rk30sdk-eng 4.2.2 WT04 root.20150915.151740 test-keys]
  86. [ro.build.display.id]: [rk30sdk-eng 4.2.2 WT04 root.20150915.151740 test-keys]
  87. [ro.build.fingerprint]: [rk30sdk/rk30sdk/rk30sdk:4.2.2/WT04/root.20150915.151740:eng/test-keys]
  88. [ro.build.host]: [jonlu]
  89. [ro.build.id]: [WT04]
  90. [ro.build.product]: [rk30sdk]
  91. [ro.build.tags]: [test-keys]
  92. [ro.build.type]: [eng]
  93. [ro.build.user]: [android]
  94. [ro.build.version.codename]: [REL]
  95. [ro.build.version.incremental]: [root.20150915.151740]
  96. [ro.build.version.release]: [4.2.2]
  97. [ro.build.version.sdk]: [17]
  98. [ro.carrier]: [unknown]
  99. [ro.com.android.dataroaming]: [true]
  100. [ro.com.android.dateformat]: [MM-dd-yyyy]
  101. [ro.config.alarm_alert]: [Alarm_Classic.ogg]
  102. [ro.config.notification_sound]: [pixiedust.ogg]
  103. [ro.config.ringtone]: [Ring_Synth_04.ogg]
  104. [ro.debuggable]: [1]
  105. [ro.default.size]: [100]
  106. [ro.factory.storage_policy]: [0]
  107. [ro.factory.tool]: [0]
  108. [ro.factorytest]: [0]
  109. [ro.hardware]: [rk30board]
  110. [ro.kernel.android.checkjni]: [0]
  111. [ro.opengles.version]: [131072]
  112. [ro.product.board]: [rk30sdk]
  113. [ro.product.brand]: [rk30sdk]
  114. [ro.product.cpu.abi2]: [armeabi]
  115. [ro.product.cpu.abi]: [armeabi-v7a]
  116. [ro.product.device]: [rk30sdk]
  117. [ro.product.locale.language]: [en]
  118. [ro.product.locale.region]: [US]
  119. [ro.product.manufacturer]: [rockchip]
  120. [ro.product.model]: [WTA902]
  121. [ro.product.name]: [rk30sdk]
  122. [ro.product.ota.host]: [www.rockchip.com:2300]
  123. [ro.product.usbfactory]: [rockchip_usb]
  124. [ro.product.version]: [1.0.0]
  125. [ro.revision]: [0]
  126. [ro.ril.ecclist]: [112,911]
  127. [ro.rk.MassStorage]: [false]
  128. [ro.rk.bt_enable]: [true]
  129. [ro.rk.cpu]: [rk3188]
  130. [ro.rk.def_brightness]: [200]
  131. [ro.rk.homepage_base]: [http://www.msn.com]
  132. [ro.rk.install_non_market_apps]: [false]
  133. [ro.rk.screenoff_time]: [-1]
  134. [ro.rk.soc]: [rk3188+]
  135. [ro.rk.systembar.tabletUI]: [true]
  136. [ro.rk.systembar.voiceicon]: [false]
  137. [ro.rksdk.version]: [RK31_ANDROID4.2.2-SDK-v1.04.00]
  138. [ro.runtime.firstboot]: [1293883995626]
  139. [ro.secure]: [0]
  140. [ro.serialno]: []
  141. [ro.sf.fakerotation]: [true]
  142. [ro.sf.hwrotation]: [270]
  143. [ro.sf.lcd_density]: [160]
  144. [ro.sf.lcdc_composer]: [0]
  145. [ro.sms.capable]: [false]
  146. [ro.tether.denied]: [false]
  147. [ro.voice.capable]: [false]
  148. [ro.wifi.channels]: []
  149. [service.bootanim.exit]: [1]
  150. [sf.power.control]: [2073600]
  151. [sim.contacts.enable]: [false]
  152. [sys.boot_completed]: [1]
  153. [sys.display.oritation]: [0]
  154. [sys.dump]: [false]
  155. [sys.ggralloc.version]: [1.000]
  156. [sys.ghwc.version]: [1.023]
  157. [sys.ghwui.version]: [1.005]
  158. [sys.glibui.version]: [1.000]
  159. [sys.gmali.cores]: [4]
  160. [sys.gmali.savedinstance]: [384]
  161. [sys.gmali.version]: [4X_13_16]
  162. [sys.grga.version]: [1.002]
  163. [sys.gsflg.version]: [1.001]
  164. [sys.hwc.compose_policy]: [6]
  165. [sys.launcher.drawer]: [0]
  166. [sys.rkadb.root]: [0]
  167. [sys.settings_global_version]: [4]
  168. [sys.usb.config]: [mass_storage]
  169. [sys.usb.state]: [mass_storage]
  170. [sys.usb.umsavailible]: [true]
  171. [sys.wallpaper.rgb565]: [0]
  172. [sys.wfd.rotation]: [0]
  173. [sys.yuv.rgb.format]: [1]
  174. [sys_graphic.cam_hal.ver]: [0.4.23]
  175. [system_init.startsurfaceflinger]: [0]
  176. [testing.mediascanner.skiplist]: [/mnt/sdcard/Android/]
  177. [wifi.interface]: [wlan0]
  178. [wifi.supplicant_scan_interval]: [15]


这些都是系统值,然而这些都是都是底层创建的变量,例如在某个驱动程序中创建,但如果在java语言中想获得这些信息中的某个变量的值,怎么办呢?
1,在java中如何调用linux的指令,主要通过如下代码实现:

点击(此处)折叠或打开

  1. Runtime myrun = Runtime.getRuntime();
  2. proc1 = myrun.exec("sh /system/bin/read.sh");  //要执行的指令
  3. proc1.waitFor(); //等待执行结束
  4. Log.d("wintec","---cmd_exe--ok-sh read.sh--"); //结束后输出提示信息
该段程序相当于在终端下执行:sh /system/bin/read.sh 
所以上面说的三个命令也可以参照这种方法在android应用程序中执行。

阅读(2584) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~