ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2012年12月13日 星期四

prop : init value when system boot

Android 的 prop 系統。
是由 system/core/init/property_service.c 負責的,包括系統 prop 的初始,之後回答app 的詢問,設定/變更 prop。

init.c 的 main 啟動後,create, setup 好需要的 system folder。
之後,就先: void property_init(void) { init_property_area(); load_properties_from_file(PROP_PATH_RAMDISK_DEFAULT); }

然後再 call
void start_property_service(void) { int fd; load_properties_from_file(PROP_PATH_SYSTEM_BUILD); load_properties_from_file(PROP_PATH_SYSTEM_DEFAULT); load_properties_from_file(PROP_PATH_LOCAL_OVERRIDE); /* Read persistent properties after all default values have been loaded. */ load_persistent_properties();
所以 prop 讀取,設定的順序是:
  • PROP_PATH_RAMDISK_DEFAULT : /default.prop
  • PROP_PATH_SYSTEM_BUILD : /system/build.prop
  • PROP_PATH_SYSTEM_DEFAULT : /system/default.prop
  • PROP_PATH_LOCAL_OVERRIDE : /data/local.prop
  • PERSISTENT_PROPERTY_DIR/persist.*
從 /data/local.prop 可以知道,如果是自己想要更改 system 的 prop,
應該要放在 /data/local.prop,這樣使用 factory reset 後,自己的設定會被刪掉。
真正的恢復出廠狀態。

要是想要增加自己的 prop 設定檔,可以修改 property_service.c ,
y 增加一個 load_properties_from_file(PROP_PATH_MYPROP);

* 以上的 path 定義在 /bionic/libc/include/sys/_system_properties.h



現在產品的作法是改 Makefile..

沒有留言:

標籤

網誌存檔