/
兼容性设置设计

兼容性设置设计

背景和目的

  1. 有很多应用在运行时,只能在特定的兼容模式下才能正常运行。因此设计一种通用型的兼容性设置框架。方便framework读取用户配置值,从而决定是否启用兼容性配置特性。

 操作流程设计

  1. 在编译过程中,接受json或其他格式文档编写的兼容性配置列表,在系统启动时,将这个表写入到settings数据库。如果后期检查发现这个文件变化了,需要在settings表中删除不需要的item,增加新增的item。专业术语是对数据库作migrate

  2. 点击左下角fde按钮->弹出所有应用的列表;右击一个应用->弹出右键列表->点击兼容性配置item→弹出全局的兼容性配置列表

  3. 用户勾选具体配置项, launcher 将用户勾选的设置写入到settings 数据库表。

  4. framework具体某个api的hook位置读取这个settings表。用于决定是否为应用作特殊配置。

数据库表设计

  1. 包含两张表
    COMPATIBLE_LIST 存储所有配置表,数据从xml中读取
    CREATE TABLE COMPATIBLE_LIST ( _ID INTEGER PRIMARY KEY AUTOINCREMENT," + "KEY_CODE TEXT ,KEY_DESC TEXT ,DEFAULT_VALUE TEXT ,OPTION_JSON TEXT, NOTES TEXT,INPUT_TYPE TEXT,CREATE_DATE TEXT, UNIQUE( KEY_CODE));

    COMPATIBLE_VALUE 存储各个包名对应的配置项
    CREATE TABLE COMPATIBLE_VALUE ( _ID INTEGER PRIMARY KEY AUTOINCREMENT," + "PACKAGE_NAME TEXT ,KEY_CODE TEXT ,VALUE TEXT , NOTES TEXT,EDIT_DATE TEXT,FIELDS1 TEXT,FIELDS2 TEXT, UNIQUE(PACKAGE_NAME, KEY_CODE));

功能实现 

 xml 存放地址 assets/comp_config.xml。格式:

<compatible> <keycode>size</keycode> <keydesc>分辨率</keydesc> <defaultvalue>1</defaultvalue> <inputtype>select</inputtype> <optionjson>[{ "width": "1920", "height": "1080" }, { "width": "800", "height": "600" }, { "width": "400", "height": "320" } ]</optionjson> </compatible>

其中inputtype 目前支持两种方式 input 和 select 具体可参考demo   (可参考com.boringdroid.systemui.ui.CompatibleListActivity)

编译项目

https://gitee.com/openfde/boringdroidsystemui.git 分支xudq
然后拉取framework代码 fde_w 分支
工具类 com.android.internal.util.CompatibleConfig 提供 CURD COMPATIBLE_LIST 和 COMPATIBLE_VALUE 方法。

运行

通过开机广播会自动读取xml到database。

image-20240220-060311.png

 

 

 

Add label

Related content

2.3 兼容性设置设计
2.3 兼容性设置设计
More like this
a. 兼容性配置使用说明
a. 兼容性配置使用说明
More like this
Compatibility Configuration Development Guide
Compatibility Configuration Development Guide
More like this
修复WPS白屏问题
修复WPS白屏问题
More like this
窗口显示
窗口显示
More like this
a. 修复WPS白屏问题
a. 修复WPS白屏问题
More like this