Platform: RK3399
OS: Android 7.1
Kernel: v4.4.83
背景:
由于手动焊接的HDMI线信号传输不太稳定,所以想测试直接在system.prop中添加设置默认HDMI分低分辨率(默认开机选择了最高分辨率),修改属性persist.sys.resolution.aux。
验证的时候是直接替换/system/build.prop,之后发现不起作用.
原因:
之前按照文档验证命令行设置HDMI分辨率,这时的property会被保存在/data/property目录下,
而system.prop的值是被最终生成到/system/build.prop文件中。
另一方面,系统在开机对system.prop和/data/property是分开按顺序加载的。
加载system和persist对应函数
property_service.cpp:
void load_system_props() {
load_properties_from_file(PROP_PATH_SYSTEM_BUILD, NULL);
load_properties_from_file(PROP_PATH_VENDOR_BUILD, NULL);
load_properties_from_file(PROP_PATH_FACTORY, "ro.*");
load_recovery_id_prop();
}
void load_persist_props(void) {
load_override_properties();
/* Read persistent properties after all default values have been loaded. */
load_persistent_properties();
}
init.rc
Load properties from /system/ + /factory after fs mount.
on load_system_props_action
load_system_props
on load_persist_props_action
load_persist_props
start logd
start logd-reinit
因此就是/data/property覆盖了build.prop中的值了。
解决方法:
有把上面的顺序调换了下,发现还是没有用,应该有其他地方还有调用了,不去深究。
尝试删除/data/property下的persist.sys.resolution.aux文件,问题解决。
原作者:KrisFei
|