一. 应用配置文件
每个应用项目必须在项目的代码目录下加入配置文件,这些配置文件会向编译工具、操作系统和应用市场提供应用的基本信息。
在基于 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" } }}
复制代码
评论