在看雪論壇看到一篇有趣的文章「root环境下直接修改ro属性」
https://bbs.pediy.com/thread-222293.htm
把他source code 抓下來放到AOSP external/ 底下
make system_properties 過了之後試下
還真的可以修改ro property
HANDYT2:/data/local/tmp # getprop ro.product.locale en-US HANDYT2:/data/local/tmp # ./system_properties ro.product.locale zh-TW set ro.product.locale == zh-TW success [ro.product.locale]:[zh-TW] HANDYT2:/data/local/tmp # getprop ro.product.locale zh-TW HANDYT2:/data/local/tmp # id uid=0(root) gid=0(root) groups=0(root),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats),3009(readproc) context=u:r:su:s0
順手編一個放這邊方便使用
看了下source code, 整體邏輯大概是:Android system prop 是以檔案的形式存在 /dev 底下,所以只要知道格式並且獲取可以讀寫的權限就可以寫入
重點函數可以看下面兩個
get_or_set_property_value(const char *prop_name, const char *prop_value) prop_area *map_prop_area(const char *file_name, bool need_write)
一直以來我都以為 system prop 是放在init 自己memory 裡面,沒想到竟然是以檔案形式存在著!學習了!