[RK3399][Android7.1] 调试笔记 --- 开机设置默认HDMI副屏分辨率无效

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文件,问题解决。

你可能感兴趣的:(RK3399,子类__Android)