文章目录
- 需求
- 场景
- 一、代码跟踪与分析
- 在线文字搜索
- RK平台本地源码搜索
- 实际测试验证
- 代码推理
- 二、实现方案
- 三、延伸知识
- 四、知识总结
需求
需求:去除恢复出厂设置中UI文字显示
场景
Android 相关产品各种方向旋转、强制横竖屏等需求,导致在恢复出厂设置中,部分文字没有显示正常,方向显示异常了。 比如如下图所示:
一、代码跟踪与分析
既然文字显示出来了,那我们根据文字显示找出具体位置然后屏蔽不就完了呀。
在线文字搜索
Android12在线源码搜索关键字 清除中
RK平台本地源码搜索
实际测试验证
无论在线还是本地源码搜索,关键字位置是同一个问题,其中可以看出来 app 位置的肯定不是,因为恢复出厂设置情况下,理论上不会有app 还在运行的,最大可能是 “清除中”
实际测试验证,上面三个地方 通过添加tag,比如111清除中 、222清除中 编译烧录固件发现都不是,并没有按照添加的tag 显示,还是显示 清除中。
代码推理
恢复出厂设置过程中,系统流程肯定在 /bootable/recovery/ 中,在线源码如下:
recovery
继续看看这个目录相关代码,文件结构,资源文件,如下:
这个不就是动画和资源文件吗? 难道在recovery 中,通过图片里面取文字???
继续反推通过图片找具体位置:
思路其实就是通过反向不断推理,在源码里面找,通过文件名、方法名和注释找到核心代码,最终实现功能。
二、实现方案
通过上面反向推理,最终实现方案,通过屏蔽即可:
修改点:draw_background_locked 方法,绘制Surface 时候,屏蔽掉绘制DrawTextIcon 相关内容//const auto& text_surface = GetCurrentText();//int text_x = (ScreenWidth() - gr_get_width(text_surface)) / 2;//int text_y = GetTextBaseline();//gr_color(255, 255, 255, 255);//DrawTextIcon(text_x, text_y, text_surface);
三、延伸知识
当前场景下需要去除文字显示,对于部分产品可能需要更改文字,这个时候可以参考网上介绍内容处理,更新图片等。
四、知识总结
- /bootable/recovery 模块资源加载方式,映射到小系统对当前界面实现方式
- 替换、隐藏文案是实现方式