Compatibility Configuration Development Guide

Background

Certain applications can only function properly in specific compatibility modes during runtime. Therefore, there is a need to design a universal compatibility settings framework. This framework should be capable of reading user configuration values and determining whether to enable compatibility configuration features. This document serves as a guide for developers on how to develop their own compatibility framework and incorporate new compatibility configuration options.

Steps

1. Adding Configuration

First, add the following configuration to the file "comp_config.xml" located in the directory "openfde/boringdroidsystemui/tree/fde_w/app/main/res/raw/":

<compatible> <keycode>isAllowHideDecorCaption</keycode> <keydesc>{ "en":"Allow to hide the title bar", "ch":"允许隐藏标题栏" }</keydesc> <defaultvalue>false</defaultvalue> <inputtype>switch</inputtype> <notes> { "en":"test text", "ch":"测试文本" } </notes> <optionjson>[]</optionjson> </compatible>

Field Descriptions:

  • keycode: Compatibility Configuration Key

  • keydesc: Compatibility Description used for display purposes. Requires configuration in both Chinese and English.

  • defaultvalue: Default value

  • inputtype: Currently supports three types: switch, input, and select.

  • notes: Notes to guide users on how to use the configuration. Requires configuration in both Chinese and English.

  • optionjson: If the inputtype is select, the optionjson option needs to be configured.

2. Framework Interface Invocation

Asynchronous Method:

CompatibleConfig.queryTrainingData(Context context, String packageName, String keycode)

Synchronous Method:

CompatibleConfig.queryValueData(Context context, String packageName, String keycode)

Parameter Descriptions:

  • context: Context object

  • packageName: Package name

  • keycode: Compatibility Configuration Key