1e41f4b71Sopenharmony_ci# HAP Build Guide 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci## Overview 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci### Basic Concepts 6e41f4b71Sopenharmony_ci| Term| Description| 7e41f4b71Sopenharmony_ci| -------------- | ---------------------- | 8e41f4b71Sopenharmony_ci| HAP | Harmony Ability Package, released as a HAP file, with the file name extension .hap. One HAP file describes all content of an application, including code, resources, third-party libraries, and an application configuration file.| 9e41f4b71Sopenharmony_ci| Ability | An abstraction of a functionality that an application can provide. It is the minimum unit for the system to schedule the application. An application can contain one or more **Ability** instances.| 10e41f4b71Sopenharmony_ci| FA | Feature Ability, an ability that provides a UI for user interaction in the ability framework of the FA model. The FA supports only the Page ability template.| 11e41f4b71Sopenharmony_ci| PA | Particle Ability, an ability that does not have a UI in the ability framework of the FA model. It provides services and support for FAs. For example, a PA can function as a background service to provide computing power or as a data store to provide data access capabilities. The PA supports three types of templates: Service, Data, and Form ability templates.| 12e41f4b71Sopenharmony_ci| FA model | One of the two ability framework models. The FA model applies to application development using API version 8 and earlier versions. The FA model provides FAs and PAs. The FA supports the Page ability template, and the PA supports the Service, Data, and Form ability templates. For details, see [FA Model Overview](../../application-dev/quick-start/application-package-structure-fa.md).| 13e41f4b71Sopenharmony_ci| Stage model| One of the two ability framework models. The stage model applies to application development using API version 9 and later versions. The stage model provides abilities and Extension abilities. The latter ones are extended to Service Extension abilities, Form Extension abilities, Data Share Extension abilities, and more.| 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci### Function 16e41f4b71Sopenharmony_ciThe HAP provides HAP build functions and supports FA and stage models. 17e41f4b71Sopenharmony_ci 18e41f4b71Sopenharmony_ci## How to Develop 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ci### OpenHarmony Templates 21e41f4b71Sopenharmony_ci#### ohos_hap 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ciThis template declares a HAP target, which generates a HAP that will be packaged into the system image. 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci| Variable| Description| 26e41f4b71Sopenharmony_ci| --------- | ---- | 27e41f4b71Sopenharmony_ci| hap_profile | Configuration file of the HAP. It is **config.json** for the FA model and **module.json** for the stage model.| 28e41f4b71Sopenharmony_ci| raw_assets | Raw assets, which are directly copied to the **assets** directory of the HAP.| 29e41f4b71Sopenharmony_ci| resources | Resource files, which are stored in the **assets/entry/resources** directory after build.| 30e41f4b71Sopenharmony_ci| js_assets | JS resources, which are stored in the **assets/js/default** directory after built.| 31e41f4b71Sopenharmony_ci| ets_assets | eTS resources, which are stored in the **assets/js/default** directory after built.| 32e41f4b71Sopenharmony_ci| deps | Dependencies of the target.| 33e41f4b71Sopenharmony_ci| shared_libraries | Native libraries on which the target depends.| 34e41f4b71Sopenharmony_ci| hap_name | HAP name, which is optional. By default, it is the target name.| 35e41f4b71Sopenharmony_ci| final_hap_path | Path of the generated HAP. This variable is optional. It takes precedence over **hap_name**.| 36e41f4b71Sopenharmony_ci| subsystem_name | Name of the subsystem that the HAP belongs to. The name must be consistent with that defined in **ohos.build**. Otherwise, the HAP will fail to be installed in the system image.| 37e41f4b71Sopenharmony_ci| part_name | Name of the part that the HAP belongs to. The name must be the same as that of **subsystem_name**.| 38e41f4b71Sopenharmony_ci| js2abc | Whether to convert JS code of the HAP into ARK bytecode.| 39e41f4b71Sopenharmony_ci| ets2abc | Whether to convert eTS code of the HAP into ARK bytecode.| 40e41f4b71Sopenharmony_ci| certificate_profile | Certificate profile used to sign the HAP.| 41e41f4b71Sopenharmony_ci| certificate_file | Certificate file. The certificate and profile must be applies from the official OpenHarmony website.| 42e41f4b71Sopenharmony_ci| keystore_path | Keystore file, which is used for signature.| 43e41f4b71Sopenharmony_ci| keystore_password | Keystore password, which is used for signature.| 44e41f4b71Sopenharmony_ci| key_alias | Alias of a key.| 45e41f4b71Sopenharmony_ci| module_install_name | Name of the HAP during installation.| 46e41f4b71Sopenharmony_ci| module_install_dir | Installation path of the HAP in the system. The default path is **system/app**.| 47e41f4b71Sopenharmony_ci| js_build_mode | Build mode of the HAP, which can be **release** or **debug**. This variable is optional. The default value is **release**.| 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ci#### ohos_app_scope 50e41f4b71Sopenharmony_ciDeclares the AppScope module of the HAP. The **app_profile** and **sources** variables of the target will be concatenated to a specific **entry** for build. This template is used only in the stage model. 51e41f4b71Sopenharmony_ci 52e41f4b71Sopenharmony_ci| Variable| Description| 53e41f4b71Sopenharmony_ci| --------- | ---- | 54e41f4b71Sopenharmony_ci| app_profile | **app.json** file in the AppScope module of the HAP. This variable is used only in the stage model.| 55e41f4b71Sopenharmony_ci| sources | Resources in the AppScope module of the HAP. This variable is used only in the stage model.| 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ci#### ohos_js_assets 58e41f4b71Sopenharmony_ciProvides JS or eTS code, which is stored in the **assets/js/default** directory after built. In the stage model, this template is stored in the **assets/js** or **assets/ets** directory, depending on the programming language. 59e41f4b71Sopenharmony_ci 60e41f4b71Sopenharmony_ci| Variable| Description| 61e41f4b71Sopenharmony_ci| --------- | ---- | 62e41f4b71Sopenharmony_ci| hap_profile | Configuration file of the HAP. It is **config.json** for the FA model and **module.json** for the stage model.| 63e41f4b71Sopenharmony_ci| source_dir | JS or eTS code path, which is compatible with the **ability** directory of the FA model.| 64e41f4b71Sopenharmony_ci| ets2abc | eTS code path. This variable is used only for widget configuration. In other development scenarios, use the configuration in the **ohos_hap** template.| 65e41f4b71Sopenharmony_ci| js2abc | JS code path. This variable is used only for widget configuration. In other development scenarios, use the configuration in the **ohos_hap** template.| 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_ci#### ohos_assets 68e41f4b71Sopenharmony_ciProvides raw assets, which are directly copied to the **assets** directory of the HAP. 69e41f4b71Sopenharmony_ci 70e41f4b71Sopenharmony_ci| Variable| Description| 71e41f4b71Sopenharmony_ci|---------- | ---- | 72e41f4b71Sopenharmony_ci| sources | Path of the raw assets.| 73e41f4b71Sopenharmony_ci 74e41f4b71Sopenharmony_ci#### ohos_resources 75e41f4b71Sopenharmony_ciResource files, which are stored in the **assets/entry/resources** directory for the FA model and in the **resources** directory for the stage model. 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ci| Variable| Description| 78e41f4b71Sopenharmony_ci| --------- | ---- | 79e41f4b71Sopenharmony_ci| hap_profile | Configuration file of the HAP. It is **config.json** for the FA model and **module.json** for the stage model.| 80e41f4b71Sopenharmony_ci| sources | Resource file path.| 81e41f4b71Sopenharmony_ci| deps | Dependencies of the target. You must configure dependencies on the **ohos_app_scope** target for the stage model.| 82e41f4b71Sopenharmony_ci 83e41f4b71Sopenharmony_ci### Procedure 84e41f4b71Sopenharmony_ci 85e41f4b71Sopenharmony_ci1. Save the developed application example to the **applications/standard/** directory. 86e41f4b71Sopenharmony_ci 87e41f4b71Sopenharmony_ci2. Configure the GN script **applications/standard/example/BUILD.gn**.<br>The following is an example of the FA model. For details about more **BUILD.gn** configurations, see [GN Script Configuration Example](#gn-script-configuration-example). 88e41f4b71Sopenharmony_ci ``` 89e41f4b71Sopenharmony_ci import("//build/ohos.gni") # Import ohos.gni. 90e41f4b71Sopenharmony_ci 91e41f4b71Sopenharmony_ci ohos_hap("example") { 92e41f4b71Sopenharmony_ci hap_profile = "./src/main/config.json" # config.json 93e41f4b71Sopenharmony_ci js_assets = ["./src/main/js/default"] 94e41f4b71Sopenharmony_ci raw_assets = ["./raw_assets"] 95e41f4b71Sopenharmony_ci resources = ["./src/main/resources"] 96e41f4b71Sopenharmony_ci shared_libraries = [ 97e41f4b71Sopenharmony_ci "//third_party/libpng:libpng", # Native library 98e41f4b71Sopenharmony_ci ] 99e41f4b71Sopenharmony_ci certificate_profile = "../signature/systemui.p7b" # Certificate profile 100e41f4b71Sopenharmony_ci hap_name = "SystemUI-NavigationBar" # HAP name 101e41f4b71Sopenharmony_ci part_name = "prebuilt_hap" 102e41f4b71Sopenharmony_ci subsystem_name = "applications" 103e41f4b71Sopenharmony_ci } 104e41f4b71Sopenharmony_ci ``` 105e41f4b71Sopenharmony_ci 106e41f4b71Sopenharmony_ci3. Modify the **applications/standard/hap/ohos.build** file.<br>The following is an example: 107e41f4b71Sopenharmony_ci ``` 108e41f4b71Sopenharmony_ci { 109e41f4b71Sopenharmony_ci "subsystem": "applications", 110e41f4b71Sopenharmony_ci "parts": { 111e41f4b71Sopenharmony_ci "prebuilt_hap": { 112e41f4b71Sopenharmony_ci "module_list": [ 113e41f4b71Sopenharmony_ci ... 114e41f4b71Sopenharmony_ci "//applications/standard/example:example" # Add a build target. 115e41f4b71Sopenharmony_ci ] 116e41f4b71Sopenharmony_ci } 117e41f4b71Sopenharmony_ci } 118e41f4b71Sopenharmony_ci } 119e41f4b71Sopenharmony_ci ``` 120e41f4b71Sopenharmony_ci 121e41f4b71Sopenharmony_ci4. Start build. 122e41f4b71Sopenharmony_ci ``` 123e41f4b71Sopenharmony_ci # Perform full building. 124e41f4b71Sopenharmony_ci ./build.sh --product-name {product_name} 125e41f4b71Sopenharmony_ci 126e41f4b71Sopenharmony_ci # Build the HAP only. 127e41f4b71Sopenharmony_ci ./build.sh --product-name {product_name} --build-target applications/standard/example:example 128e41f4b71Sopenharmony_ci ``` 129e41f4b71Sopenharmony_ci 130e41f4b71Sopenharmony_ci 131e41f4b71Sopenharmony_ciThe build target is generated. The following shows the decompressed HAP in the FA model. 132e41f4b71Sopenharmony_ci``` 133e41f4b71Sopenharmony_ci Length Date Time Name 134e41f4b71Sopenharmony_ci--------- ---------- ----- ---- 135e41f4b71Sopenharmony_ci 1439 2009-01-01 00:00 assets/raw_assets -----> raw_assets 136e41f4b71Sopenharmony_ci 354 2009-01-01 00:00 assets/entry/resources.index ------> resources 137e41f4b71Sopenharmony_ci 1 2009-01-01 00:00 assets/entry/resources/base/media/attributes.key ------> resources 138e41f4b71Sopenharmony_ci 1 2009-01-01 00:00 assets/entry/resources/base/media/constants.key ------> resources 139e41f4b71Sopenharmony_ci 1 2009-01-01 00:00 assets/entry/resources/base/media/contents.key ------> resources 140e41f4b71Sopenharmony_ci 6790 2009-01-01 00:00 assets/entry/resources/base/media/icon.png ------> resources 141e41f4b71Sopenharmony_ci 1 2009-01-01 00:00 assets/entry/resources/base/media/nodes.key ------> resources 142e41f4b71Sopenharmony_ci 11170 2009-01-01 00:00 assets/js/default/app.js ------> js_assets 143e41f4b71Sopenharmony_ci 48 2009-01-01 00:00 assets/js/default/i18n/en-US.json ------> js_assets 144e41f4b71Sopenharmony_ci 50 2009-01-01 00:00 assets/js/default/i18n/zh-CN.json ------> js_assets 145e41f4b71Sopenharmony_ci 224 2009-01-01 00:00 assets/js/default/manifest.json ------> js_assets 146e41f4b71Sopenharmony_ci 41481 2009-01-01 00:00 assets/js/default/pages/index/index.js ------> js_assets 147e41f4b71Sopenharmony_ci 909 2009-01-01 00:00 config.json ------> hap_profile 148e41f4b71Sopenharmony_ci 266248 2009-01-01 00:00 libs/libpng.z.so ------> shared_libraries 149e41f4b71Sopenharmony_ci``` 150e41f4b71Sopenharmony_ci 151e41f4b71Sopenharmony_ci### GN Script Configuration Example 152e41f4b71Sopenharmony_ci- Example of multiple abilities in the FA model 153e41f4b71Sopenharmony_ci 154e41f4b71Sopenharmony_ci ``` 155e41f4b71Sopenharmony_ci import("//build/ohos.gni") 156e41f4b71Sopenharmony_ci 157e41f4b71Sopenharmony_ci ohos_hap("dataability") { 158e41f4b71Sopenharmony_ci hap_profile = "entry/src/main/config.json" 159e41f4b71Sopenharmony_ci deps = [ 160e41f4b71Sopenharmony_ci ":dataability_js_assets", 161e41f4b71Sopenharmony_ci ":dataability_resources", 162e41f4b71Sopenharmony_ci ] 163e41f4b71Sopenharmony_ci certificate_profile = "signature/openharmony_sx.p7b" 164e41f4b71Sopenharmony_ci hap_name = "dataability" 165e41f4b71Sopenharmony_ci part_name = "prebuilt_hap" 166e41f4b71Sopenharmony_ci subsystem_name = "applications" 167e41f4b71Sopenharmony_ci } 168e41f4b71Sopenharmony_ci 169e41f4b71Sopenharmony_ci ohos_js_assets("dataability_js_assets") { 170e41f4b71Sopenharmony_ci ets2abc = true 171e41f4b71Sopenharmony_ci source_dir = "entry/src/main/ets" 172e41f4b71Sopenharmony_ci hap_profile = "entry/src/main/config.json" 173e41f4b71Sopenharmony_ci } 174e41f4b71Sopenharmony_ci 175e41f4b71Sopenharmony_ci ohos_resources("dataability_resources") { 176e41f4b71Sopenharmony_ci sources = [ 177e41f4b71Sopenharmony_ci "entry/src/main/resources", 178e41f4b71Sopenharmony_ci ] 179e41f4b71Sopenharmony_ci hap_profile = "entry/src/main/config.json" 180e41f4b71Sopenharmony_ci } 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ci ``` 183e41f4b71Sopenharmony_ci 184e41f4b71Sopenharmony_ci- Example of a JS widget in the FA model 185e41f4b71Sopenharmony_ci 186e41f4b71Sopenharmony_ci ``` 187e41f4b71Sopenharmony_ci import("//build/ohos.gni") 188e41f4b71Sopenharmony_ci 189e41f4b71Sopenharmony_ci ohos_hap("FormOfFaJs") { 190e41f4b71Sopenharmony_ci hap_profile = "entry/src/main/config.json" 191e41f4b71Sopenharmony_ci deps = [ 192e41f4b71Sopenharmony_ci ":FormOfFaJs_js_assets", 193e41f4b71Sopenharmony_ci ":FormOfFaJs_resources", 194e41f4b71Sopenharmony_ci ] 195e41f4b71Sopenharmony_ci certificate_profile = "signature/openharmony_sx.p7b" 196e41f4b71Sopenharmony_ci hap_name = "FormOfFaJs" 197e41f4b71Sopenharmony_ci part_name = "prebuilt_hap" 198e41f4b71Sopenharmony_ci subsystem_name = "applications" 199e41f4b71Sopenharmony_ci } 200e41f4b71Sopenharmony_ci 201e41f4b71Sopenharmony_ci ohos_js_assets("FormOfFaJs_js_assets") { 202e41f4b71Sopenharmony_ci hap_profile = "entry/src/main/config.json" 203e41f4b71Sopenharmony_ci js2abc = true 204e41f4b71Sopenharmony_ci source_dir = "entry/src/main/js" 205e41f4b71Sopenharmony_ci } 206e41f4b71Sopenharmony_ci 207e41f4b71Sopenharmony_ci ohos_resources("FormOfFaJs_resources") { 208e41f4b71Sopenharmony_ci sources = [ 209e41f4b71Sopenharmony_ci "entry/src/main/resources", 210e41f4b71Sopenharmony_ci ] 211e41f4b71Sopenharmony_ci hap_profile = "entry/src/main/config.json" 212e41f4b71Sopenharmony_ci } 213e41f4b71Sopenharmony_ci ``` 214e41f4b71Sopenharmony_ci 215e41f4b71Sopenharmony_ci- Example of an eTS widget in the FA model 216e41f4b71Sopenharmony_ci 217e41f4b71Sopenharmony_ci ``` 218e41f4b71Sopenharmony_ci import("//build/ohos.gni") 219e41f4b71Sopenharmony_ci 220e41f4b71Sopenharmony_ci ohos_hap("FormOfFaEts") { 221e41f4b71Sopenharmony_ci hap_profile = "entry/src/main/config.json" 222e41f4b71Sopenharmony_ci deps = [ 223e41f4b71Sopenharmony_ci ":FormOfFaEts_js_assets", 224e41f4b71Sopenharmony_ci ":FormOfFaEts_form_js_assets", 225e41f4b71Sopenharmony_ci ":FormOfFaEts_resources", 226e41f4b71Sopenharmony_ci ] 227e41f4b71Sopenharmony_ci certificate_profile = "signature/openharmony_sx.p7b" 228e41f4b71Sopenharmony_ci hap_name = "FormOfFaEts" 229e41f4b71Sopenharmony_ci part_name = "prebuilt_hap" 230e41f4b71Sopenharmony_ci subsystem_name = "applications" 231e41f4b71Sopenharmony_ci } 232e41f4b71Sopenharmony_ci 233e41f4b71Sopenharmony_ci ohos_js_assets("FormOfFaEts_js_assets") { 234e41f4b71Sopenharmony_ci hap_profile = "entry/src/main/config.json" 235e41f4b71Sopenharmony_ci ets2abc = true 236e41f4b71Sopenharmony_ci source_dir = "entry/src/main/ets" 237e41f4b71Sopenharmony_ci } 238e41f4b71Sopenharmony_ci 239e41f4b71Sopenharmony_ci ohos_js_assets("FormOfFaEts_form_js_assets") { 240e41f4b71Sopenharmony_ci hap_profile = "entry/src/main/config.json" 241e41f4b71Sopenharmony_ci js2abc = true 242e41f4b71Sopenharmony_ci source_dir = "entry/src/main/js" 243e41f4b71Sopenharmony_ci } 244e41f4b71Sopenharmony_ci 245e41f4b71Sopenharmony_ci ohos_resources("FormOfFaEts_resources") { 246e41f4b71Sopenharmony_ci sources = [ 247e41f4b71Sopenharmony_ci "entry/src/main/resources", 248e41f4b71Sopenharmony_ci ] 249e41f4b71Sopenharmony_ci hap_profile = "entry/src/main/config.json" 250e41f4b71Sopenharmony_ci } 251e41f4b71Sopenharmony_ci ``` 252e41f4b71Sopenharmony_ci 253e41f4b71Sopenharmony_ci- Example of the stage model 254e41f4b71Sopenharmony_ci 255e41f4b71Sopenharmony_ci ``` 256e41f4b71Sopenharmony_ci import("//build/ohos.gni") 257e41f4b71Sopenharmony_ci 258e41f4b71Sopenharmony_ci ohos_hap("actmoduletest") { 259e41f4b71Sopenharmony_ci hap_profile = "entry/src/main/module.json" 260e41f4b71Sopenharmony_ci deps = [ 261e41f4b71Sopenharmony_ci ":actmoduletest_js_assets", 262e41f4b71Sopenharmony_ci ":actmoduletest_resources", 263e41f4b71Sopenharmony_ci ] 264e41f4b71Sopenharmony_ci certificate_profile = "signature/openharmony_sx.p7b" 265e41f4b71Sopenharmony_ci hap_name = "actmoduletest" 266e41f4b71Sopenharmony_ci part_name = "prebuilt_hap" 267e41f4b71Sopenharmony_ci subsystem_name = "applications" 268e41f4b71Sopenharmony_ci } 269e41f4b71Sopenharmony_ci 270e41f4b71Sopenharmony_ci ohos_app_scope("actmoduletest_app_profile") { 271e41f4b71Sopenharmony_ci app_profile = "AppScope/app.json" 272e41f4b71Sopenharmony_ci sources = [ "AppScope/resources" ] 273e41f4b71Sopenharmony_ci } 274e41f4b71Sopenharmony_ci 275e41f4b71Sopenharmony_ci ohos_js_assets("actmoduletest_js_assets") { 276e41f4b71Sopenharmony_ci ets2abc = true 277e41f4b71Sopenharmony_ci source_dir = "entry/src/main/ets" 278e41f4b71Sopenharmony_ci } 279e41f4b71Sopenharmony_ci 280e41f4b71Sopenharmony_ci ohos_resources("actmoduletest_resources") { 281e41f4b71Sopenharmony_ci sources = [ 282e41f4b71Sopenharmony_ci "entry/src/main/resources", 283e41f4b71Sopenharmony_ci ] 284e41f4b71Sopenharmony_ci deps = [ 285e41f4b71Sopenharmony_ci ":actmoduletest_app_profile", 286e41f4b71Sopenharmony_ci ] 287e41f4b71Sopenharmony_ci hap_profile = "entry/src/main/module.json" 288e41f4b71Sopenharmony_ci } 289e41f4b71Sopenharmony_ci ``` 290e41f4b71Sopenharmony_ci 291e41f4b71Sopenharmony_ci- Example of a widget in the stage model 292e41f4b71Sopenharmony_ci 293e41f4b71Sopenharmony_ci ``` 294e41f4b71Sopenharmony_ci import("//build/ohos.gni") 295e41f4b71Sopenharmony_ci 296e41f4b71Sopenharmony_ci ohos_hap("FormOfStageEts") { 297e41f4b71Sopenharmony_ci hap_profile = "entry/src/main/module.json" 298e41f4b71Sopenharmony_ci deps = [ 299e41f4b71Sopenharmony_ci ":FormOfStageEts_js_assets", 300e41f4b71Sopenharmony_ci ":FormOfStageEts_form_js_assets", 301e41f4b71Sopenharmony_ci ":FormOfStageEts_resources", 302e41f4b71Sopenharmony_ci ] 303e41f4b71Sopenharmony_ci js_build_mode = "debug" # The default value is release. 304e41f4b71Sopenharmony_ci certificate_profile = "signature/openharmony_sx.p7b" 305e41f4b71Sopenharmony_ci hap_name = "FormOfStageEts" 306e41f4b71Sopenharmony_ci part_name = "prebuilt_hap" 307e41f4b71Sopenharmony_ci subsystem_name = "applications" 308e41f4b71Sopenharmony_ci } 309e41f4b71Sopenharmony_ci 310e41f4b71Sopenharmony_ci ohos_js_assets("FormOfStageEts_js_assets") { 311e41f4b71Sopenharmony_ci hap_profile = "entry/src/main/module.json" 312e41f4b71Sopenharmony_ci ets2abc = true 313e41f4b71Sopenharmony_ci source_dir = "entry/src/main/ets" 314e41f4b71Sopenharmony_ci } 315e41f4b71Sopenharmony_ci 316e41f4b71Sopenharmony_ci ohos_js_assets("FormOfStageEts_form_js_assets") { 317e41f4b71Sopenharmony_ci hap_profile = "entry/src/main/module.json" 318e41f4b71Sopenharmony_ci js2abc = true 319e41f4b71Sopenharmony_ci source_dir = "entry/src/main/js" 320e41f4b71Sopenharmony_ci } 321e41f4b71Sopenharmony_ci 322e41f4b71Sopenharmony_ci ohos_app_scope("FormOfStageEts_app_profile") { 323e41f4b71Sopenharmony_ci app_profile = "AppScope/app.json" 324e41f4b71Sopenharmony_ci sources = [ "AppScope/resources" ] 325e41f4b71Sopenharmony_ci } 326e41f4b71Sopenharmony_ci 327e41f4b71Sopenharmony_ci ohos_resources("FormOfStageEts_resources") { 328e41f4b71Sopenharmony_ci sources = [ 329e41f4b71Sopenharmony_ci "entry/src/main/resources", 330e41f4b71Sopenharmony_ci ] 331e41f4b71Sopenharmony_ci deps = [ 332e41f4b71Sopenharmony_ci ":FormOfStageEts_app_profile", 333e41f4b71Sopenharmony_ci ] 334e41f4b71Sopenharmony_ci hap_profile = "entry/src/main/module.json" 335e41f4b71Sopenharmony_ci } 336e41f4b71Sopenharmony_ci ``` 337