写点什么

建议收藏!Harmony 应用配置文件概述(Stage 模型)

  • 2023-09-11
    北京
  • 本文字数:4849 字

    阅读完需:约 16 分钟

建议收藏!Harmony应用配置文件概述(Stage模型)

一. 应用配置文件

每个应用项目必须在项目的代码目录下加入配置文件,这些配置文件会向编译工具、操作系统和应用市场提供应用的基本信息。


在基于 Stage 模型开发的应用项目代码下,都存在一个 app.json5 及一个或多个 module.json5 这两种配置文件。


app.json5主要包含以下内容:

●应用的全局配置信息,包含应用的包名、开发厂商、版本号等基本信息。

●特定设备类型的配置信息。


module.json5主要包含以下内容:

●Module 的基本配置信息,例如 Module 名称、类型、描述、支持的设备类型等基本信息。

应用组件信息,包含 UIAbility 组件和 ExtensionAbility 组件的描述信息。

●应用运行过程中所需的权限信息。


二. app.json5 配置文件

先通过一个示例,整体认识一下 app.json5 配置文件。

{  "app": {    "bundleName": "com.application.myapplication",    "vendor": "example",    "versionCode": 1000000,    "versionName": "1.0.0",    "icon": "$media:app_icon",    "label": "$string:app_name",    "description": "$string:description_application",    "minAPIVersion": 9,    "targetAPIVersion": 9,    "apiReleaseType": "Release",    "debug": false,    "car": {      "minAPIVersion": 8,    }  },}
复制代码


app.json5 配置文件包含以下标签。

表 1 app.json5 文件配置标签说明






三. module.json5 配置文件

三. module.json5 配置文件

{  "module": {    "name": "entry",    "type": "entry",    "description": "$string:module_desc",    "mainElement": "EntryAbility",    "deviceTypes": [      "default",      "tablet"    ],    "deliveryWithInstall": true,    "installationFree": false,    "pages": "$profile:main_pages",    "virtualMachine": "ark",    "metadata": [      {        "name": "string",        "value": "string",        "resource": "$profile:distributionFilter_config"      }    ],    "abilities": [      {        "name": "EntryAbility",        "srcEntry": "./ets/entryability/EntryAbility.ts",        "description": "$string:EntryAbility_desc",        "icon": "$media:icon",        "label": "$string:EntryAbility_label",        "startWindowIcon": "$media:icon",        "startWindowBackground": "$color:start_window_background",        "exported": true,        "skills": [          {            "entities": [              "entity.system.home"            ],            "actions": [              "ohos.want.action.home"            ]          }        ]      }    ],    "requestPermissions": [      {        "name": "ohos.abilitydemo.permission.PROVIDER",        "reason": "$string:reason",        "usedScene": {          "abilities": [            "FormAbility"          ],          "when": "inuse"        }      }    ]  }}
复制代码

module.json5 配置文件包含以下标签。


表 1 module.json5 配置文件配置标签说明




deviceTypes 标签

deviceTypes 示例:

{  "module": {    "name": "myHapName",    "type": "feature",    "deviceTypes" : [       "tablet"    ]  }}
复制代码

pages 标签

该标签是一个 profile 文件资源,用于指定描述页面信息的配置文件。


{  "module": {    // ...    "pages": "$profile:main_pages", // 通过profile下的资源文件配置  }}
复制代码


在开发视图的 resources/base/profile 下面定义配置文件 main_pages.json,其中文件名(main_pages)可自定义,需要和前文中 pages 标签指定的信息对应,配置文件中列举了当前应用组件中的页面信息。


表 3 pages 配置文件标签说明


表 4 pages 配置文件中的 window 标签说明


{  "src": [    "pages/index/mainPage",    "pages/second/payment",    "pages/third/shopping_cart",    "pages/four/owner"  ]}
复制代码

metadata 标签

该标签标识 HAP 的自定义元信息,标签值为数组类型,包含 name,value,resource 三个子标签。

表 5 metadata 标签说明


{  "module": {    "metadata": [{      "name": "module_metadata",      "value": "a test demo for module metadata",      "resource": "$profile:shortcuts_config",    }],
"abilities": [{ "metadata": [{ "name": "ability_metadata", "value": "a test demo for ability", "resource": "$profile:config_file" }, { "name": "ability_metadata_2", "value": "a string test", "resource": "$profile:config_file" }], }],
"extensionAbilities": [{ "metadata": [{ "name": "extensionAbility_metadata", "value": "a test for extensionAbility", "resource": "$profile:config_file" }, { "name": "extensionAbility_metadata_2", "value": "a string test", "resource": "$profile:config_file" }], }] }}
复制代码

abilities 标签

ablities 标签描述 UIAbility 组件的配置信息,标签值为数组类型,该标签下的配置只对当前 UIAbility 生效。

表 6 abilities 标签说明







abilities 示例:


{  "abilities": [{    "name": "EntryAbility",    "srcEntry": "./ets/entryability/EntryAbility.ts",    "launchType":"singleton",    "description": "$string:description_main_ability",    "icon": "$media:icon",    "label": "Login",    "permissions": [],    "metadata": [],    "exported": true,    "continuable": true,    "skills": [{      "actions": ["ohos.want.action.home"],      "entities": ["entity.system.home"],      "uris": []    }],    "backgroundModes": [      "dataTransfer",      "audioPlayback",      "audioRecording",      "location",      "bluetoothInteraction",      "multiDeviceConnection",      "wifiInteraction",      "voip",      "taskKeeping"    ],    "startWindowIcon": "$media:icon",    "startWindowBackground": "$color:red",    "removeMissionAfterTerminate": true,    "orientation": " ",    "supportWindowMode": ["fullscreen", "split", "floating"],    "maxWindowRatio": 3.5,    "minWindowRatio": 0.5,    "maxWindowWidth": 2560,    "minWindowWidth": 1400,    "maxWindowHeight": 300,    "minWindowHeight": 200,    "excludeFromMissions": false  }]}
复制代码


skills 标签

该标签标识 UIAbility 组件或者 ExtensionAbility 组件能够接收的Want的特征。

表 7 skills 标签说明

表 8 uris 对象内部结构说明

skills 示例:


{  "abilities": [    {      "skills": [        {          "actions": [            "ohos.want.action.home"          ],          "entities": [            "entity.system.home"          ],          "uris": [            {              "scheme":"http",              "host":"example.com",              "port":"80",              "path":"path",              "type": "text/*"            }          ]        }      ]    }  ]}
复制代码


extensionAbilities 标签

描述 extensionAbilities 的配置信息,标签值为数组类型,该标签下的配置只对当前 extensionAbilities 生效。

表 9 extensionAbilities 标签说明





requestPermissions 标签

该标签标识应用运行时需向系统申请的权限集合。

说明

● 在 requestPermissions 标签中配置的权限项将在应用级别生效,即该权限适用于整个应用程序。

● 如果应用需要订阅自己发布的事件,而且应用在 extensionAbilities 标签中的 permissions 字段中设置了访问该应用所需要的权限,那么应用也需要在 requestPermissions 标签中注册相关权限才能收到该事件。

表 10 requestPermissions 标签说明

requestPermissions 示例:


{  "module" : {    "requestPermissions": [      {        "name": "ohos.abilitydemo.permission.PROVIDER",        "reason": "$string:reason",        "usedScene": {          "abilities": [            "EntryFormAbility"          ],          "when": "inuse"        }      }    ]  }}
复制代码


shortcuts 标签

shortcuts 标识应用的快捷方式信息。标签值为数组,最多可以配置四个快捷方式。其包含四个子标签 shortcutId、label、icon、wants。

metadata 中指定 shortcut 信息,其中:

● name:指定 shortcuts 的名称。使用 ohos.ability.shortcuts 作为 shortcuts 信息的标识。

● resource:指定 shortcuts 信息的资源位置。

表 11 shortcuts 标签说明

1.  在/resource/base/profile/目录下配置 shortcuts_config.json 配置文件。


{  "shortcuts": [    {      "shortcutId": "id_test1",      "label": "$string:shortcut",      "icon": "$media:aa_icon",      "wants": [        {          "bundleName": "com.ohos.hello",          "abilityName": "EntryAbility"        }      ]    }  ]}
复制代码


2.  在 module.json5 配置文件的 abilities 标签中,针对需要添加快捷方式的 UIAbility 进行配置 metadata 标签,使 shortcut 配置文件对该 UIAbility 生效。


{  "module": {    // ...    "abilities": [      {        "name": "EntryAbility",        "srcEntry": "./ets/entryability/EntryAbility.ts",        // ...        "skills": [          {            "entities": [              "entity.system.home"            ],            "actions": [              "ohos.want.action.home"            ]          }        ],        "metadata": [          {            "name": "ohos.ability.shortcuts",            "resource": "$profile:shortcuts_config"          }        ]      }    ]  }}
复制代码


distributionFilter 标签

该标签下的子标签均为可选字段,用于定义 HAP 对应的细分设备规格的分发策略,以便应用市场在云端分发 HAP 时做精准匹配。该标签需要配置在/resource/profile 资源目录下;在进行分发时,通过 deviceType 与下表属性的匹配关系,唯一确定一个用于分发到设备的 HAP。

表 12 distributionFilter 标签说明

表 12 distributionFilter 标签说明

表 14 screenWindow 对象的内部结构说明

表 15 screenDensity 对象的内部结构说明

表 16 countryCode 对象的内部结构说明

在开发视图的 resources/base/profile 下面定义配置文件 distro_filter_config.json,文件名可以自定义。


{  "distributionFilter": {    "screenShape": {      "policy": "include",      "value": [        "circle",        "rect"      ]    },    "screenWindow": {      "policy": "include",      "value": [        "454*454",        "466*466"      ]    },    "screenDensity": {      "policy": "exclude",      "value": [        "ldpi",        "xldpi"      ]    },    "countryCode": { // 支持中国和香港地区分发      "policy": "include",      "value": [        "CN",        "HK"      ]    }  }}
复制代码


在 module.json5 配置文件的 module 标签中定义 metadata 信息。


{  "module": {    // ...    "metadata": [      {        "name": "ohos.module.distro",        "resource": "$profile:distro_filter_config",      }    ]  }}
复制代码


testRunner 标签

此标签用于支持对测试框架的配置。

表 17 testRunner 标签说明

testRunner 标签示例:


{  "module": {    // ...    "testRunner": {      "name": "myTestRunnerName",      "srcPath": "etc/test/TestRunner.ts"    }  }}
复制代码


用户头像

每一位开发者都是华为要汇聚的星星之火 2021-10-15 加入

提供HarmonyOS关键技术解析、版本更新、开发者实践和活动资讯,欢迎各位开发者加入HarmonyOS生态,一起创造无限可能!

评论

发布
暂无评论
建议收藏!Harmony应用配置文件概述(Stage模型)_HarmonyOS_HarmonyOS开发者_InfoQ写作社区