Feature
Configuration Rules
This document describes how to declare, define, and use features.
-
Declare a feature
Declare the features of a component in feature_list of the bundle.json file of the component. Each feature must start with the {component_name}.
The following is an example:
{ "name": "@ohos/xxx", "component": { "name": "partName", "subsystem": "subsystemName", "features": [ "{partName}_feature_A" ] } }
You can declare multiple features in features for a component.
-
Define a feature
You can define the default value of a feature as follows:
declare_args() { {partName}_feature_A = true }
The value defined is the default value of the feature for this component. The product can overload the feature default values in the component list.
If a feature is used by multiple modules of a component, you are advised to define the feature in the global .gni file of the component and import the .gni file to the BUILD.gn file of each module.
-
Use a feature
In the BUILD.gn file, determine the code or modules to build based on features.
if ({partName}_feature_A) { sources += [ "xxx.c" ] } # Dependency introduced by a feature can be isolated by feature. if ({partName}_feature_A) { deps += [ "xxx" ] external_deps += [ "xxx" ] } # The **bundle.json** file does not support the if statement. If the sub_component contained in the **bundle.json** file needs to be deleted, define group(). group("testGroup") { deps = [] if ({partName}_feature_A) { deps += [ "xxx" ] } }
You can also define code macros for modules in the following way to implement differentiated configuration:
if ({partName}_feature_A) { defines += ["FEATUREA_DEFINE"] }