鸿蒙OpenHarmony【module.json5配置文件】应用配置文件概述(Stage模型)

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",
    "appStartup": "$profile:app_startup_config",
    "metadata": [
      {
        "name": "string",
        "value": "string",
        "resource": "$profile:distributionFilter_config"
      }
    ],
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:layered_image",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:icon",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "ohos.want.action.home"
            ]
          }
        ],
        "continueType": [
          "continueType1"
        ]
      }
    ],
    "definePermissions": [
      {
        "name": "ohos.abilitydemo.permission.PROVIDER",
        "grantMode": "system_grant",
        "availableLevel": "system_core",
        "provisionEnable": true,
        "distributedSceneEnable": false,
        "label": "$string:EntryAbility_label"
      }
    ],
    "requestPermissions": [
      {
        "name": "ohos.abilitydemo.permission.PROVIDER",
        "reason": "$string:reason",
        "usedScene": {
          "abilities": [
            "FormAbility"
          ],
          "when": "inuse"
        }
      }
    ],
    "targetModuleName": "feature",
    "targetPriority": 50,
    "querySchemes": [
      "app1Scheme",
      "app2Scheme"
    ],
    "routerMap": "$profile:router_map",
    "appEnvironments": [
      {
        "name": "name1",
        "value": "value1"
      }
    ],
    "hnpPackages": [
      {
        "package": "hnpsample.hnp",
        "type": "public"
      }
    ],
    "fileContextMenu": "$profile:menu"
  }
}

配置文件标签

module.json5配置文件包含以下标签。

表1 module.json5配置文件标签说明

属性名称 含义 数据类型 是否可缺省
name 标识当前Module的名称,确保该名称在整个应用中唯一。命名规则如下 : - 由字母、数字和下划线组成,且必须以字母开头。 - 最大长度31字节。 应用升级时允许修改该名称,但需要应用适配Module相关数据目录的迁移 字符串 该标签不可缺省。
type 标识当前Module的类型。支持的取值如下: - entry:应用的主模块。 - feature:应用的动态特性模块。 - har:静态共享包模块。 - shared:动态共享包模块。 字符串 该标签不可缺省。
srcEntry 标识当前Module所对应的代码路径,取值为长度不超过127字节的字符串。 字符串 该标签可缺省,缺省值为空。
description 标识当前Module的描述信息,取值为长度不超过255字节的字符串,可以采用字符串资源索引格式。 字符串 该标签可缺省,缺省值为空。
process 标识当前Module的进程名,取值为长度不超过31字节的字符串。如果在HAP标签下配置了process,则该应用的所有UIAbility、DataShareExtensionAbility、ServiceExtensionAbility都运行在该进程中。 说明: 仅支持系统应用配置,三方应用配置不生效。 字符串 该标签可缺省,缺省为app.json5文件下app标签下的bundleName。
mainElement 标识当前Module的入口UIAbility名称或者ExtensionAbility名称,取值为长度不超过255字节的字符串。 字符串 该标签可缺省,缺省值为空。
[deviceTypes] 标识当前Module可以运行在哪类设备上。 字符串数组 该标签不可缺省。
deliveryWithInstall 标识当前Module是否在用户主动安装的时候安装,即该Module对应的HAP是否跟随应用一起安装。 - true:主动安装时安装。 - false:主动安装时不安装。 布尔值 该标签不可缺省。
installationFree 标识当前Module是否支持免安装特性。 - true:表示支持免安装特性,且符合免安装约束。 - false:表示不支持免安装特性。 说明: 当[bundleType]为原子化服务时,该字段需要配置为true。反之,该字段需要配置为false。 布尔值 该标签不可缺省。
virtualMachine 标识当前Module运行的目标虚拟机类型,供云端分发使用,如应用市场和分发中心。如果目标虚拟机类型为ArkTS引擎,则其值为“ark+版本号”。 字符串 该标签由IDE构建HAP的时候自动插入。
[pages] 标识当前Module的profile资源,用于列举每个页面信息,取值为长度不超过255字节的字符串。 字符串 在有UIAbility的场景下,该标签不可缺省。
[metadata] 标识当前Module的自定义元信息,可通过资源引用的方式配置[distributionFilter]、[shortcuts]等信息。只对当前Module、UIAbility、ExtensionAbility生效。 对象数组 该标签可缺省,缺省值为空。
[abilities] 标识当前Module中UIAbility的配置信息,只对当前UIAbility生效。 对象数组 该标签可缺省,缺省值为空。
[extensionAbilities] 标识当前Module中ExtensionAbility的配置信息,只对当前ExtensionAbility生效。 对象数组 该标签可缺省,缺省值为空。
[definePermissions] 标识系统资源hap定义的权限,不支持应用自定义权限。 对象数组 该标签可缺省,缺省值为空。
[requestPermissions] 标识当前应用运行时需向系统申请的权限集合。 对象数组 该标签可缺省,缺省值为空。
[testRunner] 标识用于测试当前Module的测试框架的配置。 对象 该标签可缺省,缺省值为空。
[atomicService] 标识当前应用是原子化服务时,有关原子化服务的相关配置。 对象 该标签可缺省,缺省值为空。
[dependencies] 标识当前模块运行时依赖的共享库列表。 对象数组 该标签可缺省,缺省值为空。
targetModuleName 标识当前包所指定的目标module,确保该名称在整个应用中唯一。取值为长度不超过31字节的字符串,不支持中文。配置该字段的Module具有overlay特性。仅在动态共享包(HSP)中适用。 字符串 该标签可缺省,缺省值为空。
targetPriority 标识当前Module的优先级,取值范围为1~100。配置targetModuleName字段之后,才需要配置该字段。仅在动态共享包(HSP)中适用。 整型数值 该标签可缺省,缺省值为1。
[proxyData] 标识当前Module提供的数据代理列表。 对象数组 该标签可缺省,缺省值为空。
isolationMode 标识当前Module的多进程配置项。支持的取值如下: - nonisolationFirst:优先在非独立进程中运行。 - isolationFirst:优先在独立进程中运行。 - isolationOnly:只在独立进程中运行。 - nonisolationOnly:只在非独立进程中运行。 字符串 该标签可缺省,缺省值为nonisolationFirst。
generateBuildHash 标识当前HAP/HSP是否由打包工具生成哈希值。当配置为true时,如果系统OTA升级时应用versionCode保持不变,可根据哈希值判断应用是否需要升级。 该字段仅在[app.json5文件]中的generateBuildHash字段为false时使能。 说明: 该字段仅对预置应用生效。 布尔值 该标签可缺省,缺省值为false。
compressNativeLibs 标识libs库是否以压缩存储的方式打包到HAP。 - true:libs库以压缩方式存储。 - false:libs库以不压缩方式存储。 布尔值 该标签可缺省,缺省值为false。
libIsolation 用于区分同应用不同HAP下的.so文件,以防止.so冲突。 - true:当前HAP的.so文件会储存在libs目录中以Module名命名的路径下。 - false:当前HAP的.so文件会直接储存在libs目录中。 布尔值 该标签可缺省,缺省值为false。
fileContextMenu 标识当前HAP的右键菜单配置项。取值为长度不超过255字节的字符串。 字符串 该标签可缺省,缺省值为空。
querySchemes 标识允许当前应用进行跳转查询的URL schemes,只允许entry类型模块配置,最多50个,每个字符串取值不超过128字节。 字符串数组 该标签可缺省,缺省值为空。
[routerMap] 标识当前模块配置的路由表路径。取值为长度不超过255字节的字符串。 字符串 该标签可缺省,缺省值为空。
[appEnvironments] 标识当前模块配置的应用环境变量,只允许entry和feature模块配置。 对象数组 该标签可缺省,缺省值为空。
appStartup 标识当前Module启动框架配置路径,仅在Entry中生效。 字符串 该标签可缺省,缺省值为空。
[hnpPackages] 标识当前应用包含的Native软件包信息。只允许entry类型模块配置。 对象数组 该标签可缺省,缺省值为空。

deviceTypes标签

表2 deviceTypes标签说明

设备类型 枚举值 说明
平板 tablet -
智慧屏 tv -
智能手表 wearable 系统能力较丰富的手表,具备电话功能。
车机 car -
2in1 2in1 融合了屏幕触控和键鼠操作的二合一设备。
默认设备 default 能够使用全部系统能力的设备。

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 标识当前Module中所有页面的路由信息,包括页面路径和页面名称。其中,页面路径是以当前Module的src/main/ets为基准。该标签取值为一个字符串数组,其中每个元素表示一个页面。 字符串数组 该标签不可缺省。
window 标识用于定义与显示窗口相关的配置。 对象 该标签可缺省,缺省值为空。

表4 window标签说明

属性名称 含义 数据类型 是否可缺省
designWidth 标识页面设计基准宽度。以此为基准,根据实际设备宽度来缩放元素大小。 数值 可缺省,缺省值为720px。
autoDesignWidth 标识页面设计基准宽度是否自动计算。当配置为true时,designWidth将会被忽略,设计基准宽度由设备宽度与屏幕密度计算得出。 布尔值 可缺省,缺省值为false。
{
  "src": [
    "pages/index/mainPage",
    "pages/second/payment",
    "pages/third/shopping_cart",
    "pages/four/owner"
  ],
  "window": {
    "designWidth": 720,
    "autoDesignWidth": false
  }
}

metadata标签

该标签标识HAP的自定义元信息,标签值为数组类型,包含name、value、resource三个子标签。

表5 metadata标签说明

属性名称 含义 数据类型 是否可缺省
name 标识数据项的名称,取值为长度不超过255字节的字符串。 字符串 该标签可缺省,缺省值为空。
value 标识数据项的值,取值为长度不超过255字节的字符串。 字符串 该标签可缺省,缺省值为空。
resource 标识定义用户自定义数据格式,取值为长度不超过255字节的字符串,内容为标识该数据的资源索
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值