HarmonyOS NEXT - 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.ets",
        "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"
            ]
          }
        ]
      }
    ],
    "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"
    ]
  }
}

配置文件标签

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的自定义元信息,可通过资源引用的方式配置distributionFiltershortcuts等信息。只对当前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字节。字符串数组该标签可缺省,缺省值为空。

deviceTypes标签

表2 deviceTypes标签说明

设备类型枚举值说明
手机phone-
平板tablet-
2in1设备2in1-
智慧屏tv-
智能手表wearable系统能力较丰富的手表,具备电话功能。
车机car-

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字节的字符串,内容为标识该数据的资源索引。字符串该标签可缺省,缺省值为空。

 resource属性值使用“$profile:文件名”的方式指定文件所在位置,$profile表示资源的路径为工程中的/resources/base/profile目录下。例如$profile:shortcuts_config指定了/resources/base/profile/shortcuts_config.json文件。

 

{
  "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标签

abilities标签描述UIAbility组件的配置信息,标签值为数组类型,该标签下的配置只对当前UIAbility生效。

表6 abilities标签说明

 

属性名称含义数据类型是否可缺省
name标识当前UIAbility组件的名称,确保该名称在整个应用中唯一。取值为长度不超过127字节的字符串,不支持中文。字符串该标签不可缺省。
srcEntry标识入口UIAbility的代码路径,取值为长度不超过127字节的字符串。字符串该标签不可缺省。
launchType

标识当前UIAbility组件的启动模式,支持的取值如下:

- multiton:多实例模式,每次启动创建一个新实例。

- singleton:单实例模式,仅第一次启动创建新实例。

- specified:指定实例模式,运行时由开发者决定是否创建新实例。

字符串该标签可缺省,该标签缺省为“singleton”。
description标识当前UIAbility组件的描述信息,取值为长度不超过255字节的字符串。要求采用描述信息的资源索引,以支持多语言。字符串该标签可缺省,缺省值为空。
icon标识当前UIAbility组件的图标,取值为图标资源文件的索引。字符串

该标签可缺省,缺省值为空。

如果UIAbility被配置为MainElement,该标签必须配置。

label标识当前UIAbility组件对用户显示的名称,要求采用该名称的资源索引,以支持多语言。取值为长度不超过255字节的字符串。字符串

该标签可缺省,缺省值为空。

如果UIAbility被配置为MainElement,该标签必须配置。

permissions

标识当前UIAbility组件自定义的权限信息。当其他应用访问该UIAbility时,需要申请相应的权限信息。

一个数组元素为一个权限名称。通常采用反向域名格式(不超过255字节),取值为系统预定义的权限。

字符串数组该标签可缺省,缺省值为空。
metadata标识当前UIAbility组件的元信息。对象数组该标签可缺省,缺省值为空。
exported

标识当前UIAbility组件是否可以被其他应用调用。

- true:表示可以被其他应用调用。

- false:表示不可以被其他应用调用,包括无法被aa工具命令拉起应用。

布尔值该标签可缺省,缺省值为false。
continuable

标识当前UIAbility组件是否支持跨端迁移。

- true:表示支持迁移。

- false:表示不支持迁移。

布尔值该标签可缺省,缺省值为false。
skills

标识当前UIAbility组件或ExtensionAbility组件能够接收的Want特征集,为数组格式。

配置规则:

- 对于Entry类型的HAP,应用可以配置多个具有入口能力的skills标签(即配置了ohos.want.action.home和entity.system.home)。

- 对于Feature类型的HAP,只有应用可以配置具有入口能力的skills标签,服务不允许配置。

对象数组该标签可缺省,缺省值为空。
backgroundModes

标识当前UIAbility组件的长时任务集合,指定用于满足特定类型的长时任务。

长时任务类型有如下:

- dataTransfer:通过网络/对端设备进行数据下载、备份、分享、传输等。

- audioPlayback:音频播放。

- audioRecording:录音。

- location:定位、导航。

- bluetoothInteraction:蓝牙扫描、连接、传输(穿戴)。

- multiDeviceConnection:多设备互联。

- wifiInteraction:Wi-Fi扫描、连接、传输(克隆多屏)。

- voip:音视频电话、VoIP。

- taskKeeping:计算。

字符串数组该标签可缺省,缺省值为空。
startWindowIcon标识当前UIAbility组件启动页面图标资源文件的索引,取值为长度不超过255字节的字符串。字符串该标签不可缺省。
startWindowBackground

标识当前UIAbility组件启动页面背景颜色资源文件的索引,取值为长度不超过255字节的字符串。

取值示例:$color:red。

字符串该标签不可缺省。
removeMissionAfterTerminate

标识当前UIAbility组件销毁后,是否从任务列表中移除任务。

- true表示销毁后移除任务。

- false表示销毁后不移除任务。

布尔值该标签可缺省,缺省值为false。
orientation

标识当前UIAbility组件启动时的方向。支持的取值如下:

- unspecified:未指定方向,由系统自动判断显示方向。

- landscape:横屏。

- portrait:竖屏。

- landscape_inverted:反向横屏。

- portrait_inverted:反向竖屏。

- auto_rotation:随传感器旋转。

- auto_rotation_landscape:传感器横屏旋转,包括横屏和反向横屏。

- auto_rotation_portrait:传感器竖屏旋转,包括竖屏和反向竖屏。

- auto_rotation_restricted:传感器开关打开,方向可随传感器旋转。

- auto_rotation_landscape_restricted:传感器开关打开,方向可随传感器旋转为横屏, 包括横屏和反向横屏。

- auto_rotation_portrait_restricted:传感器开关打开,方向随可传感器旋转为竖屏, 包括竖屏和反向竖屏。

- locked:传感器开关关闭,方向锁定。

字符串该标签可缺省,缺省值为unspecified。
supportWindowMode

标识当前UIAbility组件所支持的窗口模式。支持的取值如下:

- fullscreen:全屏模式。

- split:分屏模式。

- floating:悬浮窗模式。

字符串数组

该标签可缺省,缺省值为

["fullscreen", "split", "floating"]。

priority

标识当前UIAbility组件的优先级。隐式查询时,优先级越高,UIAbility在返回列表越靠前。取值范围0~10,数值越大,优先级越高。

说明:

仅支持系统应用配置,三方应用配置不生效。

整型数值该标签可缺省,缺省值为0。
maxWindowRatio标识当前UIAbility组件支持的最大的宽高比。该标签最小取值为0。数值该标签可缺省,缺省值为平台支持的最大的宽高比。
minWindowRatio标识当前UIAbility组件支持的最小的宽高比。该标签最小取值为0。数值该标签可缺省,缺省值为平台支持的最小的宽高比。
maxWindowWidth

标识当前UIAbility组件支持的最大的窗口宽度,宽度单位为vp。

最小取值为minWindowWidth,最大取值为平台支持的最大窗口宽度。窗口尺寸可以参考窗口大小限制

数值该标签可缺省,缺省值为平台支持的最大的窗口宽度。
minWindowWidth

标识当前UIAbility组件支持的最小的窗口宽度, 宽度单位为vp。

最小取值为平台支持的最小窗口宽度,最大取值为maxWindowWidth。窗口尺寸可以参考窗口大小限制

数值该标签可缺省,缺省值为平台支持的最小的窗口宽度。
maxWindowHeight

标识当前UIAbility组件支持的最大的窗口高度, 高度单位为vp。

最小取值为minWindowHeight,最大取值为平台支持的最大窗口高度。 窗口尺寸可以参考窗口大小限制

数值该标签可缺省,缺省值为平台支持的最大的窗口高度。
minWindowHeight

标识当前UIAbility组件支持的最小的窗口高度, 高度单位为vp。

最小取值为平台支持的最小窗口高度,最大取值为maxWindowHeight。窗口尺寸可以参考窗口大小限制

数值该标签可缺省,缺省值为平台支持的最小的窗口高度。
excludeFromMissions

标识当前UIAbility组件是否在最近任务列表中显示。

- true:表示不在任务列表中显示。

- false:表示在任务列表中显示。

说明:

仅支持系统应用配置,且需申请应用特权AllowAbilityExcludeFromMissions,三方应用配置不生效,详见应用特权配置指导。

布尔值该标签可缺省,缺省值为false。
recoverable

标识当前UIAbility组件是否支持在检测到应用故障后,恢复到应用原界面。

- true:支持检测到出现故障后,恢复到原界面。

- false:不支持检测到出现故障后,恢复到原界面。

布尔值该标签可缺省,缺省值为false。
unclearableMission

标识当前UIAbility组件是否支持从最近任务列表中移除。

- true:表示在任务列表中不可移除。

- false:表示在任务列表中可以移除。

说明:

单独配置该字段不可生效,需要申请对应的AllowMissionNotCleared特权之后,该字段才能生效。

布尔值该标签可缺省,缺省值为false。
isolationProcess

标识组件能否运行在独立的进程中。

- true:表示能运行在独立的进程中。

- false:表示不能运行在独立的进程中。

布尔值该标签可缺省,缺省值为false。

 

{
  "abilities": [{
    "name": "EntryAbility",
    "srcEntry": "./ets/entryability/EntryAbility.ets",
    "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,
    "unclearableMission": false,
    "isolationProcess": false
  }]
}

### HarmonyOS Next 跳转到元服务的方法 在鸿蒙操作系统中,页面跳转可以通过 `Router` 模块实现[^2]。为了实现从 HarmonyOS Next 页面跳转至元服务功能,开发者可以利用路由机制完成这操作。以下是具体的实现方法: #### 1. 配置目标元服务 在 HarmonyOS 中,元服务是种轻量级的应用程序形态,支持快速启动和便捷访问[^1]。要实现跳转,需先配置好目标元服务的相关参数,例如其 URI 或者 Ability 名称。 ```xml <!-- 在 config.json 文件中定义元服务能力 --> { "module": { "abilities": [ { "name": ".MainAbility", "type": "service" } ] } } ``` 上述代码片段展示了如何在 `config.json` 文件中声明个名为 `.MainAbility` 的能力,并将其类型设置为 `service`。 --- #### 2. 使用 Router 进行跳转 通过调用 `Router.push()` 方法,可以实现在当前页面向目标元服务发起跳转请求。具体实现如下所示: ```javascript // 导入所需的模块 import router from '@ohos.router'; try { const uri = 'ability://com.example.myservice/MainAbility'; // 替换为目标元服务的实际URI router.push({ uri: uri, params: { key: 'value' } // 可选:传递额外参数给目标元服务 }); } catch (error) { console.error('跳转失败:', error); } ``` 此代码段实现了基于指定 URI 向目标元服务发送跳转请求的操作。其中,`uri` 参数指定了目标元服务的能力路径,而 `params` 则用于携带附加数据。 --- #### 3. 处理悬浮窗场景下的特殊需求 如果希望在某些特定场景下(如悬浮窗模式),仍然能够正常执行跳转逻辑,则需要进步考虑权限管理以及界面适配等问题[^3]。此时可参考官方文档或者社区教程进行扩展开发。 --- ### 注意事项 - 确保源页面与目标元服务之间已建立正确的依赖关系。 - 测试阶段应充分验证跨设备间的服务可用性和兼容性表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值