HarmonyOS Next Module.json5 配置详解
在HarmonyOS Next的开发过程中,module.json5配置文件扮演着至关重要的角色。它不仅定义了模块的基本属性,还详细描述了模块的行为和特性。本文将通过一个示例,详细介绍module.json5配置文件的结构和各个标签的用途。
示例配置文件解析
以下是一个典型的module.json5配置文件示例:
{
"module": {
"name": "entry",
"type": "entry",
"description": "$string:module_desc",
"mainElement": "EntryAbility",
"deviceTypes": [
"tv",
"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"
}
}
]
},
"targetModuleName": "feature",
"targetPriority": 50,
"isolationMode": "nonisolationFirst"
}
1. module 标签
module标签是module.json5文件的核心部分,包含了模块的基本信息和配置。
1.1 name(模块名称)
- 含义:标识当前模块的名称,确保在整个应用中唯一。
- 数据类型:字符串
- 是否可缺省:不可缺省
- 示例:
"name": "entry"
1.2 type(模块类型)
- 含义:标识当前模块的类型,支持的取值包括
entry、feature、har、shared。 - 数据类型:字符串
- 是否可缺省:不可缺省
- 示例:
"type": "entry"
1.3 description(模块描述)
- 含义:标识当前模块的描述信息,开发者可以通过该字段描述模块的功能与作用。
- 数据类型:字符串
- 是否可缺省:可缺省,默认值为空
- 示例:
"description": "$string:module_desc"
1.4 mainElement(主元素)
- 含义:标识当前模块的入口UIAbility名称或ExtensionAbility名称。
- 数据类型:字符串
- 是否可缺省:可缺省,默认值为空
- 示例:
"mainElement": "EntryAbility"
1.5 deviceTypes(设备类型)
- 含义:标识当前模块可以运行在哪类设备上。
- 数据类型:字符串数组
- 是否可缺省:不可缺省
- 示例:
"deviceTypes": ["tv", "tablet"]
1.6 deliveryWithInstall(随安装包一起安装)
- 含义:标识当前模块是否在用户主动安装的时候安装。
- 数据类型:布尔值
- 是否可缺省:不可缺省
- 示例:
"deliveryWithInstall": true
1.7 installationFree(免安装特性)
- 含义:标识当前模块是否支持免安装特性。
- 数据类型:布尔值
- 是否可缺省:不可缺省
- 示例:
"installationFree": false
1.8 pages(页面配置)
- 含义:标识当前模块的profile资源,用于列举每个页面信息。
- 数据类型:字符串
- 是否可缺省:在有UIAbility的场景下,不可缺省
- 示例:
"pages": "$profile:main_pages"
1.9 virtualMachine(虚拟机类型)
- 含义:标识当前模块运行的目标虚拟机类型。
- 数据类型:字符串
- 是否可缺省:由IDE构建HAP时自动插入
- 示例:
"virtualMachine": "ark"
1.10 metadata(元信息)
-
含义:标识当前模块的自定义元信息。
-
数据类型:对象数组
-
是否可缺省:可缺省,默认值为空
-
示例:
"metadata": [ { "name": "string", "value": "string", "resource": "$profile:distributionFilter_config" } ]
1.11 abilities(UIAbility配置)
-
含义:标识当前模块中UIAbility的配置信息。
-
数据类型:对象数组
-
是否可缺省:可缺省,默认值为空
-
示例:
"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" ] } ] } ]
1.12 requestPermissions(权限请求)
-
含义:标识当前应用运行时需向系统申请的权限集合。
-
数据类型:对象数组
-
是否可缺省:可缺省,默认值为空
-
示例:
"requestPermissions": [ { "name": "ohos.abilitydemo.permission.PROVIDER", "reason": "$string:reason", "usedScene": { "abilities": [ "FormAbility" ], "when": "inuse" } } ]
2. 其他顶层标签
2.1 targetModuleName(目标模块名称)
- 含义:标识当前包所指定的目标模块,确保名称在整个应用中唯一。
- 数据类型:字符串
- 是否可缺省:可缺省,默认值为空
- 示例:
"targetModuleName": "feature"
2.2 targetPriority(目标优先级)
- 含义:标识当前模块的优先级,取值范围为1~100。
- 数据类型:整型数值
- 是否可缺省:可缺省,默认值为1
- 示例:
"targetPriority": 50
2.3 isolationMode(多进程配置)
- 含义:标识当前模块的多进程配置项。
- 数据类型:字符串
- 是否可缺省:可缺省,默认值为
nonisolationFirst - 示例:
"isolationMode": "nonisolationFirst"
详细标签说明
2.1 abilities 标签
abilities标签描述了UIAbility组件的配置信息。
2.1.1 name(UIAbility名称)
- 含义:标识当前UIAbility组件的名称,确保在整个应用中唯一。
- 数据类型:字符串
- 是否可缺省:不可缺省
- 示例:
"name": "EntryAbility"
2.1.2 srcEntry(入口代码路径)
- 含义:标识入口UIAbility的代码路径。
- 数据类型:字符串
- 是否可缺省:不可缺省
- 示例:
"srcEntry": "./ets/entryability/EntryAbility.ts"
2.1.3 launchType(启动模式)
- 含义:标识当前UIAbility组件的启动模式。
- 数据类型:字符串
- 是否可缺省:可缺省,默认值为
singleton - 示例:
"launchType": "singleton"
2.1.4 description(UIAbility描述)
- 含义:标识当前UIAbility组件的描述信息。
- 数据类型:字符串
- 是否可缺省:可缺省,默认值为空
- 示例:
"description": "$string:EntryAbility_desc"
2.1.5 icon(UIAbility图标)
- 含义:标识当前UIAbility组件的图标。
- 数据类型:字符串
- 是否可缺省:可缺省,默认值为空
- 示例:
"icon": "$media:icon"
2.1.6 label(UIAbility标签)
- 含义:标识当前UIAbility组件对用户显示的名称。
- 数据类型:字符串
- 是否可缺省:可缺省,默认值为空
- 示例:
"label": "$string:EntryAbility_label"
2.1.7 skills(技能)
-
含义:标识当前UIAbility组件能够接收的Want特征集。
-
数据类型:对象数组
-
是否可缺省:可缺省,默认值为空
-
示例:
"skills": [ { "entities": [ "entity.system.home" ], "actions": [ "ohos.want.action.home" ] } ]
2.2 metadata 标签
metadata标签标识HAP的自定义元信息。
2.2.1 name(元信息名称)
- 含义:标识数据项的名称。
- 数据类型:字符串
- 是否可缺省:可缺省,默认值为空
- 示例:
"name": "string"
2.2.2 value(元信息值)
- 含义:标识数据项的值。
- 数据类型:字符串
- 是否可缺省:可缺省,默认值为空
- 示例:
"value": "string"
2.2.3 resource(资源引用)
- 含义:标识用户自定义数据,内容为该数据的资源索引。
- 数据类型:字符串
- 是否可缺省:可缺省,默认值为空
- 示例:
"resource": "$profile:distributionFilter_config"
2.3 requestPermissions 标签
requestPermissions标签标识当前应用运行时需向系统申请的权限集合。
2.3.1 name(权限名称)
- 含义:标识当前UIAbility组件自定义的权限信息。
- 数据类型:字符串
- 是否可缺省:可缺省,默认值为空
- 示例:
"name": "ohos.abilitydemo.permission.PROVIDER"
2.3.2 reason(权限申请原因)
- 含义:标识权限申请的原因。
- 数据类型:字符串
- 是否可缺省:可缺省,默认值为空
- 示例:
"reason": "$string:reason"
2.3.3 usedScene(使用场景)
-
含义:标识权限的使用场景。
-
数据类型:对象
-
是否可缺省:可缺省,默认值为空
-
示例:
"usedScene": { "abilities": [ "FormAbility" ], "when": "inuse" }
结论
module.json5配置文件是HarmonyOS Next应用开发中不可或缺的一部分。通过合理的配置,开发者可以实现模块的独立性、多进程管理、权限控制等功能。本文通过详细的标签说明和示例,帮助开发者更好地理解和应用module.json5配置文件,从而构建高效、稳定的HarmonyOS Next应用。
![[Config/Templates/公众号介绍|公众号介绍]]
![[公众号卡片]] ![[公众号欢迎词]]