HarmonyOS Next Module.json5 配置详解

158 阅读4分钟

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(模块类型)
  • 含义​:标识当前模块的类型,支持的取值包括entryfeatureharshared
  • 数据类型​:字符串
  • 是否可缺省​:不可缺省
  • 示例​:"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/公众号介绍|公众号介绍]]

![[公众号卡片]] ![[公众号欢迎词]]