Qcom android L ro.sf.lcd_density属性修改
在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)
Qcom android L ro.sf.lcd_density属性修改相关推荐
- Access denied finding property ro.sf.lcd_density 问题解决
一.前言: 我用的Android Studio是 3.5版本,今天做WebViewActivity页面跳转的时候,突然爆出以下错误,当时猜测是WebView的错误,后来打脸刷刷的. E/libc: A ...
- ANDROID L——Material Design详解(视图和阴影)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...
- note3 android l,KingRoot: 独家宣布,一键Root Android L版三星手机
Android 5.0 Lollipop(以下简称Android L)是继4.0之后的一次重大更新,其最大的变化在于UI用户界面的设计,新的Android L系统用户界面更加简洁.色彩更加丰富,因此 ...
- 三星s4 android 5.0 root权限,首家一键Root Android L版三星S4、S5
Android 5.0 Lollipop(以下简称Android L)是继4.0之后的一次重大更新,其最大的变化在于UI用户界面的设计,新的Android L系统用户界面更加简洁.色彩更加丰富,因此 ...
- 如何修改Android的ro属性
一.Android ro属性概述 在adb shell中输入getprop命令就可以获取到当前系统所有的属性内容: 另外,如果我们系统获取到指定属性的属性值,我们也可以通过在adb shell中输入g ...
- passwd -l 锁与linux用户属性修改与sbin/nologin区别
passwd -l与usermod -L没有什么区别,最终的作用就是让某用户账户密码暂时失效(也就是锁定). 锁定的原理就是在/etc/shadow第二栏(代表用户密码)最前面加上叹号(!),让密码暂 ...
- [Android L]SEAndroid开放设备文件结点权限(读或写)方法(涵盖常用操作:sys/xxx、proc/xxx、SystemProperties)热门干货
点击打开链接 温馨提示 建议你先了解一下上一篇博文([Android L]SEAndroid增强Androd安全性背景概要及带来的影响)所讲的内容,先对SEAndroid窥个全貌,然后再继续 ...
- Android面试总结(持续更新修改)
###Android面试总结(持续更新修改) 1.Android 的四大组件是哪些,它们的作用? ①Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为 ...
- android L 关机流程图
轉載: http://blog.csdn.net/hovan/article/details/42495379 下面是简单的流程图,从Java到kernel层. ShutdownThread.java ...
最新文章
- VS2010中经常使用的快捷键
- 【优达学城测评】SELECT 子句(6)
- Hadoop mapreduce框架简介
- Apache ServiceComb Pack 微服务分布式数据最终一致性解决方案
- 导入图片后截取_微服务项目第36天:导入数据到索引库
- SpringBoot与quartz框架实现分布式定时任务
- 多操作系统安装实践小结
- python之numpy
- 为什么我爱Xonsh
- 解决ray报错AttributeError: module ‘aioredis‘ has no attribute ‘create_redis_pool‘
- jQtouch 初体验
- CentOS 7 多网卡绑定
- Idea 格式化代码-配置
- Qunee学习开发体会
- 独家研究 I 某新一线城市中高端养老社区项目(CCRC)入住客户画像深度洞察研究报告
- 【路由器无线桥接的步骤实现】水星路由器MW150R作为副路由器无线桥接TP-Link主路由器
- cdr软件百度百科_Cdr是什么软件
- c++基础题:判断某整数是正整数、负整数还是零
- Spring Boot四大神器之Auto Configuration
- Flutter 打开外部第三方应用
热门文章
- python图像文件压缩_python中如何实现图片压缩
- poco-1.9.3 交叉编译
- CSranking(csranking)
- 用HDMI外接显示这颜色感觉就是不对哦?!
- 下面linux程序中哪一个是调试器,【单选题】下面Linux程序中哪一个是调试器?A. vi B. gcc C. gdb D. make...
- QT3D开发的位姿实时显示与轮式机器人参数标定工具
- 网易极客战记-KITHGARD地牢--严酷考验 B (需解锁)
- 计算机数值模拟区域模拟,古地温史计算机数值模拟
- OSG之节点写入文件(.ive)
- 测试员在面试中被问到 “你对加班的看法” 该如何回答?