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