一. 应用配置文件
每个应用项目必须在项目的代码目录下加入配置文件,这些配置文件会向编译工具、操作系统和应用市场提供应用的基本信息。
在基于 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 示例:
{
"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 配置文件标签说明
{
"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的特征。
{
"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。
在开发视图的 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"
}
}
}