HarmonyOS NEXT鸿蒙开发:module.json5-UIAbility组件、启动模式、abilities标签、应用图标、应用名 作者:马育民 • 2024-11-10 09:16 • 阅读:10012 # 介绍 [官网指南](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/module-configuration-file-V5 "官网指南") 为使应用能够正常使用 `UIAbility`,需要在 `module.json5` 配置文件的 `abilities` 标签中声明 `UIAbility` 的名称、入口、标签等相关信息。 # 配置文件例子 ``` { "module": { "name": "entry", "type": "entry", "description": "$string:module_desc", "mainElement": "EntryAbility", "deviceTypes": [ "phone" ], "deliveryWithInstall": true, "installationFree": false, "pages": "$profile:main_pages", "abilities": [ ..... ], "extensionAbilities": [ ...... ] ..... } } ``` # module标签 ## 子标签解释 ### name 标识当前Module的名称,确保该名称在整个应用中唯一。命名规则如下 : - 由字母、数字和下划线组成,且必须以字母开头。 - 最大长度31字节。 ### type 标识当前Module的类型。支持的取值如下: - entry:应用的主模块。 - feature:应用的动态特性模块。 - har:静态共享包模块。 - shared:动态共享包模块。 ### description 标识当前Module的描述信息 ### mainElement 标识当前Module的入口UIAbility名称或者ExtensionAbility名称 ### deviceTypes 标识当前Module可以运行在哪类设备上。 - 手机:phone - 平板:tablet - 2in1设备:2in1,融合了屏幕触控和键鼠操作的二合一设备。 - 智慧屏:tv - 智能手表:wearable 系统能力较丰富的手表,具备电话功能。 - 车机:car ### deliveryWithInstall 标识当前Module是否在用户主动安装的时候安装,即该Module对应的HAP是否跟随应用一起安装。 - true:主动安装时安装。 - false:主动安装时不安装。 ### installationFree 标识当前Module是否支持免安装特性。 - true:表示支持免安装特性,且符合免安装约束。 - false:表示不支持免安装特性。 说明: 当 `bundleType` 为 **元服务** 时,该字段需要配置为`true`。反之,该字段需要配置为 `false`。 ### pages 标识当前Module的profile资源,用于列举每个页面信息 该标签是一个profile文件资源,指下面文件: ``` src/main/resources/base/profile/main_pages.json ``` 解释详见[链接](/show_1GWwQg4fZb.html "链接") # abilities标签 [官网指南](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/module-configuration-file-V5#abilities%E6%A0%87%E7%AD%BE "官网指南") abilities标签描述UIAbility组件的配置信息,标签值为数组类型,该标签下的配置只对当前UIAbility生效。 ## 子标签说明 ### name 标识当前UIAbility组件的名称,确保该名称在整个应用中唯一 ### srcEntry 标识入口UIAbility的代码路径 ### launchType 标识当前UIAbility组件的 **启动模式**,该标签缺省为 `singleton`,支持的取值如下: - multiton:多实例模式,每次启动创建一个新实例。 - singleton:单实例模式,仅第一次启动创建新实例。 - specified:指定实例模式,运行时由开发者决定是否创建新实例。(例如:word,每次 **新建文档** 时,就新打开一个word程序;多次打开同一个文档,就只打开一个word程序) - standard:multiton的曾用名,效果与多实例模式一致。 ### description 标识当前UIAbility组件的描述信息 ### icon 标识当前UIAbility组件的图标,取值为图标资源文件的索引。 如果UIAbility被配置为 `MainElement`,该标签必须配置。 ##### 桌面图标 该配置指定桌面图标 **注意:**改名字后,需要卸载应用,再安装才能看到新名字 ##### 任务图标 该配置指定任务视图中的 **任务图标**,如下图红框处: [![](/upload/0/0/1GWx1Um76i.jpg)](/upload/0/0/1GWx1Um76i.jpg) ### label 标识当前UIAbility组件对用户显示的名称,要求采用该名称的资源索引,以支持 **多语言** 如果UIAbility被配置为MainElement,该标签必须配置。 ##### 桌面应用名字 该配置指定桌面图标的名字 **注意:**改名字后,需要卸载应用,再安装才能看到新名字 如下图: [![](/upload/0/0/1GWwumtYu4.png)](/upload/0/0/1GWwumtYu4.png) ##### 任务名字 该配置指定任务视图中的 **任务名字**,如下图红框处: [![](/upload/0/0/1GWwhWkMob.jpg)](/upload/0/0/1GWwhWkMob.jpg) ##### 文件路径 该配置与语言相关,具体如下: 中文指下面文件: ``` src/main/resources/zh_CN/element/string.json ``` 英文指下面文件: ``` src/main/resources/en_US/element/string.json ``` 未匹配语言指下面文件: ``` src/main/resources/base/element/string.json ``` ### startWindowIcon 标识当前UIAbility组件启动页面图标资源文件的索引 ### startWindowBackground 标识当前UIAbility组件启动页面背景颜色资源文件的索引 ### exported 标识当前UIAbility组件是否可以被其他应用调用。 - true:表示可以被其他应用调用。 - false:表示不可以被其他应用调用,包括无法被aa工具命令拉起应用。 缺省值为false # 例子 ``` { "module": { // ... "abilities": [ { "name": "EntryAbility", "srcEntry": "./ets/entryability/EntryAbility.ets", "description": "$string:EntryAbility_desc", "icon": "$media:layered_image", "label": "$string:EntryAbility_label", "startWindowIcon": "$media:startIcon", "startWindowBackground": "$color:start_window_background", "exported": true, "skills": [ { "entities": [ "entity.system.home" ], "actions": [ "action.system.home" ] } ] }, ], } } ``` 原文出处:http://malaoshi.top/show_1GWwjeI0Fk.html