瑞芯微Rockchip开发者社区
直播中

王玉兰

7年用户 1296经验值
私信 关注
[经验]

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

原作者:KrisFei

更多回帖

发帖
×
20
完善资料,
赚取积分