工厂模式中 字体大小/显示重叠/显示不完整 相关 问题分析与解决
1-Factory Mode是什么?
在Android手机中,Factory Mode(工厂模式)是一种隐藏的系统调试模式,通常用于手机制造商或技术人员进行设备测试、调试和校准。
Factory Mode 提供了一系列的测试和校准选项,用来检查手机硬件功能是否正常、进行软件版本信息查看、执行一些特殊的测试操作等。
一般情况下,Factory Mode 是通过特殊的按键组合或者拨号码来进入的,而且通常是被隐藏起来的,普通用户不太容易访问到。
在 Factory Mode 中,用户可以进行一些高级的测试和设置,比如检查手机的传感器、显示屏、触摸屏、音频、摄像头等硬件功能是否正常,
或者执行一些软件测试,如刷机、清除缓存等操作。
需要注意的是,在 Factory Mode 中进行操作可能会对手机造成一些影响,因此普通用户最好不要随意进入 Factory Mode 进行操作。
2-Factory Mode的显示界面
Factory Mode(工厂模式)的显示界面通常十分简洁,简单的列表,文字,方便测试人员直接测试,但是由于不同项目、不同机器的原因,
工厂模式的界面中的字体大小需要适配不同的屏幕分辨率。当发现工厂模式中,字体大小异常,有文字重叠现象,或是导致文字显示不完整
都可能与之字体尺寸(字符宽高)不适配 有关。
3-找到factory模块中对应设置字体尺寸的代码
在Android源码中,由于不同供应商的工厂模式需求各方面不一样,代码可能有各种差异。
但是对于工厂模式中 文本的 字体尺寸 的适配 调整 应当在下面路径对于文件
- \vendor\供应商名称\proprietary\custom\项目名称\factory\inc\cust_font.h
如图:
但是要注意:
一来在\proprietary\custom\是否有多个项目,要选择所编译的版本对应的项目。
二来在cust_font.h中有多个屏幕分辨率的适配的字体尺寸,要找到正确有效的位置来修改
4-分析与修改代码
酱紫,我第一时间也不知道具体修改哪个位置的 字符宽高 (CHAR_WIDTH、 CHAR_HEIGHT)
即不知道满足哪一个FEATURE_FTM_FONT_XX或者某一个条件,也不知道这些个条件对应的屏幕分辨率是多少
也就是说我无法一一将适配的参数对上,来修改,但是我需要定位到正确有效的位置。
此时有两个思路:
- 参考其他项目这个板块是否有相似修改,如何修改(前提是机器得是同一屏幕分辨率)(很明显我没找到暂时)
- 那么直接暴力排除法也肯定很费时,所以直接在每个条件语句内增加报错(修改代码使之有语法或逻辑错误)
比如:我这样:
这样修改的前提是,你也得确定这个代码文件是被编译进去了的,如果不确定,只需随便在代码开头增加一个报错验证即可。
这样修改后,保存,编译,报错如下:
很明显可见就是第54行代码走入报错了,走入的54行代码所处的条件即是该项目屏幕分辨率与字体尺寸所适配的条件。
然后进入下一步:修改条件内的 字符宽高
如下:
然后保存,编译,验证效果,
如果修改后的字体大小跟预期还是有一定出入,可以再进行调整。
Tips
至此,大致解决了,但是过程中有一些需要注意,也需要记录的:
1:查看屏幕物理尺寸:(使用adb命令在终端,前提是adb root 、adb devices 是没问题的)
例如:
2:进入工厂模式的方式:在我修改的这个平台项目上是 在关机的时候,同时长按电源键与另一个键 来进入。
不同的供应商或不同项目可能这个方式与按键略有不同。
3:在分析思路上就是要多对比,找最直接有效的方式尝试。