在kernel里面kernel/drivers/video/fbsysfs.c会导出数据/sys/class/graphics/fb0/virtual_size

在Y:\LA.BR.1.2.4-05310-8x16.0\device\qcom\common\init\init_msm8916.c 中获取virtual_size值,根据不同的屏幕大小设置ro.sf.lcd_density。

其中PROP_LCDDENSITY的值在device/qcom/common/init/init_msm.h中定义:

#define VIRTUAL_SIZE "/sys/class/graphics/fb0/virtual_size"
#define BUF_SIZE 64void init_msm_properties(unsigned long msm_id, unsigned long msm_ver, char *board_type)
{char platform[PROP_VALUE_MAX];int rc;unsigned long virtual_size = 0;char str[BUF_SIZE];UNUSED(msm_id);UNUSED(msm_ver);rc = property_get("ro.board.platform", platform);if (!rc || !ISMATCH(platform, ANDROID_TARGET)){return;}rc = read_file2(VIRTUAL_SIZE, str, sizeof(str));if (rc) {virtual_size = strtoul(str, NULL, 0);}if(virtual_size >= 1080) {if (ISMATCH(board_type, "SBC")) {property_set(PROP_LCDDENSITY, "240");property_set(PROP_QEMU_NAVKEY, "0");} elseproperty_set(PROP_LCDDENSITY, "480");} else if (virtual_size >= 720) {// For 720x1280 resolutionproperty_set(PROP_LCDDENSITY, "320");} else if (virtual_size >= 480) {// For 480x854 resolution QRD.property_set(PROP_LCDDENSITY, "240");} elseproperty_set(PROP_LCDDENSITY, "320");if (msm_id >= 239 && msm_id <= 243) {property_set("media.msm8939hw", "1");}if (msm_id >= 268 && msm_id <= 271) {property_set("media.msm8929hw", "1");}if (msm_id == 206) {property_set("vidc.enc.narrow.searchrange", "0");}
}kernel/drivers/video/fbsysfs.cstatic ssize_t show_virtual(struct device *device,struct device_attribute *attr, char *buf)
{struct fb_info *fb_info = dev_get_drvdata(device);return snprintf(buf, PAGE_SIZE, "%d,%d\n", fb_info->var.xres_virtual,fb_info->var.yres_virtual);
}在Msm_fb.c (drivers\video\msm)  定义fb_info->var.xres_virtualvar->xres_virtual = panel_info->xres;
var->yres_virtual = panel_info->yres * mfd->fb_page +((PAGE_SIZE - remainder)/fix->line_length) * mfd->fb_page;

所以ro.sf.lcd_density最终是有分辨率决定的。

init_msm_properties函数被谁调用了呢?暂时没找到

为了更加便捷的修改ro.sf.lcd_density,后面做了一个实验:

1、  在android系统运行的时候通过adb 修改/system/build.prop文件,添加一行:

ro.sf.lcd_density=480

后重启,发现字体变大了!

2、  所以通过修改/system/build.prop是有效的,后面网上查了一下build.prop的过程,它是由android编译系统生成的文件,主要属性配置来源与三个方面:

①   build/tools/buildinfo.sh执行脚本,并输出到build.prop

②   把$(TARGET_DEVICE_DIR)/system.prop的内容追加到build.prop中

③   收集ADDITIONAL_BUILD_PROPERTIES中的属性,追加到build.prop中。

3、 通过修改

device\qcom\msm8916_64_slm755_meig_02\system.prop

添加一行:

ro.sf.lcd_density=480,编译系统 make –j8

4、 刚开始

out\target\product\msm8916_64_slm755_meig_02\system\build.prop

文件中出现了ro.sf.lcd_density=480可是后面又变回到原来的样子,ro.sf.lcd_density=480消失了!!不解!

5、 后来发现是因为在out\target\product\msm8916_64_slm755_meig_02\system\下面还有一个

文件:build.prop.bakforspec

这个鬼东西一直会把修改后的build.prop强制还原到以前的状态,坑爹!后来把它删掉,build.prop中新增了修改项:ro.sf.lcd_density=480

所以综上:一般修改属性,或者添加属性,可以修改一下两个文件:

1、  build/target/product/core_base.mk

2、$(TARGET_DEVICE_DIR)/system.prop

(device\qcom\msm8916_64_slm755_meig_02\system.prop)

在编译system的时候会更新到build.prop中!
参考文章: Android属性之build.prop生成过程分析

Qcom android L ro.sf.lcd_density属性修改相关推荐

  1. Access denied finding property ro.sf.lcd_density 问题解决

    一.前言: 我用的Android Studio是 3.5版本,今天做WebViewActivity页面跳转的时候,突然爆出以下错误,当时猜测是WebView的错误,后来打脸刷刷的. E/libc: A ...

  2. ANDROID L——Material Design详解(视图和阴影)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...

  3. note3 android l,KingRoot: 独家宣布,一键Root Android L版三星手机

    Android  5.0 Lollipop(以下简称Android L)是继4.0之后的一次重大更新,其最大的变化在于UI用户界面的设计,新的Android L系统用户界面更加简洁.色彩更加丰富,因此 ...

  4. 三星s4 android 5.0 root权限,首家一键Root Android L版三星S4、S5

    Android  5.0 Lollipop(以下简称Android L)是继4.0之后的一次重大更新,其最大的变化在于UI用户界面的设计,新的Android L系统用户界面更加简洁.色彩更加丰富,因此 ...

  5. 如何修改Android的ro属性

    一.Android ro属性概述 在adb shell中输入getprop命令就可以获取到当前系统所有的属性内容: 另外,如果我们系统获取到指定属性的属性值,我们也可以通过在adb shell中输入g ...

  6. passwd -l 锁与linux用户属性修改与sbin/nologin区别

    passwd -l与usermod -L没有什么区别,最终的作用就是让某用户账户密码暂时失效(也就是锁定). 锁定的原理就是在/etc/shadow第二栏(代表用户密码)最前面加上叹号(!),让密码暂 ...

  7. [Android L]SEAndroid开放设备文件结点权限(读或写)方法(涵盖常用操作:sys/xxx、proc/xxx、SystemProperties)热门干货

    点击打开链接 温馨提示      建议你先了解一下上一篇博文([Android L]SEAndroid增强Androd安全性背景概要及带来的影响)所讲的内容,先对SEAndroid窥个全貌,然后再继续 ...

  8. Android面试总结(持续更新修改)

    ###Android面试总结(持续更新修改) 1.Android 的四大组件是哪些,它们的作用? ①Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为 ...

  9. android L 关机流程图

    轉載: http://blog.csdn.net/hovan/article/details/42495379 下面是简单的流程图,从Java到kernel层. ShutdownThread.java ...

最新文章

  1. VS2010中经常使用的快捷键
  2. 【优达学城测评】SELECT 子句(6)
  3. Hadoop mapreduce框架简介
  4. Apache ServiceComb Pack 微服务分布式数据最终一致性解决方案
  5. 导入图片后截取_微服务项目第36天:导入数据到索引库
  6. SpringBoot与quartz框架实现分布式定时任务
  7. 多操作系统安装实践小结
  8. python之numpy
  9. 为什么我爱Xonsh
  10. 解决ray报错AttributeError: module ‘aioredis‘ has no attribute ‘create_redis_pool‘
  11. jQtouch 初体验
  12. CentOS 7 多网卡绑定
  13. Idea 格式化代码-配置
  14. Qunee学习开发体会
  15. 独家研究 I 某新一线城市中高端养老社区项目(CCRC)入住客户画像深度洞察研究报告
  16. 【路由器无线桥接的步骤实现】水星路由器MW150R作为副路由器无线桥接TP-Link主路由器
  17. cdr软件百度百科_Cdr是什么软件
  18. c++基础题:判断某整数是正整数、负整数还是零
  19. Spring Boot四大神器之Auto Configuration
  20. Flutter 打开外部第三方应用

热门文章

  1. python图像文件压缩_python中如何实现图片压缩
  2. poco-1.9.3 交叉编译
  3. CSranking(csranking)
  4. 用HDMI外接显示这颜色感觉就是不对哦?!
  5. 下面linux程序中哪一个是调试器,【单选题】下面Linux程序中哪一个是调试器?A. vi B. gcc C. gdb D. make...
  6. QT3D开发的位姿实时显示与轮式机器人参数标定工具
  7. 网易极客战记-KITHGARD地牢--严酷考验 B (需解锁)
  8. 计算机数值模拟区域模拟,古地温史计算机数值模拟
  9. OSG之节点写入文件(.ive)
  10. 测试员在面试中被问到 “你对加班的看法” 该如何回答?