鸿蒙应用开发配置文件详解
一、应用配置文件概述
每个应用项目的代码目录下必须包含应用配置文件,这些配置文件会向编译工具、操作系统和应用市场提供应用的基本信息。
在基于 Stage 模型开发的应用项目代码下,都存在一个 app.json5 配置文件,以及一个或多个 module.json5 配置文件。
说明:
- 编译后,单个模块的编译产物中,
app.json5和module.json5的内容会合并到一个module.json文件中。 app.json5配置文件包含以下内容:- 应用的全局配置信息,包含应用的 Bundle 名称、开发厂商、版本号等基本信息。
- 特定设备类型的配置信息。
module.json5配置文件包含以下内容:- Module 的基本配置信息,包含 Module 名称、类型、描述、支持的设备类型等基本信息。
- 应用组件信息,包含 UIAbility 组件和 ExtensionAbility 组件的描述信息。
- 应用运行过程中需要的权限信息。
二、app.json5 配置文件
2.1 文件位置与作用
应用级配置文件,包含应用的全局配置信息和特定设备类型的配置信息,用于向编译工具、操作系统和应用市场提供应用的基本信息。
每个工程下必须包含一个 app.json5 配置文件,文件所在目录为:
工程名称/AppScope/app.json5
说明:
- 配置文件中的示例代码直接拷贝到工程中可能编译不通过,请开发者根据需求进行配置。例如:通过
$符号引用的资源文件如果工程中不存在,需要开发者手动添加或替换为实际的资源文件。 - 配置文件中,字段可以重复,以最后一个配置为准。
2.2 app.json5 配置文件示例
{
"app": {
"bundleName": "com.application.myapplication",
"vendor": "example",
"versionCode": 1000000,
"versionName": "1.0.0",
"icon": "$media:layered_image",
"alternateIcons": [
{
"name": "summer_theme",
"icon": "$media:layered_image"
},
{
"name": "winter_theme",
"icon": "$media:background"
}
],
"label": "$string:app_name",
"description": "$string:description_application",
"minAPIVersion": 9,
"targetAPIVersion": 9,
"debug": false,
"car": {
"minAPIVersion": 8
},
"appEnvironments": [
{
"name": "name1",
"value": "value1"
}
],
"maxChildProcess": 5,
"multiAppMode": {
"multiAppModeType": "appClone",
"maxCount": 5
},
"hwasanEnabled": false,
"ubsanEnabled": false,
"cloudFileSyncEnabled": false,
"cloudStructuredDataSyncEnabled": false,
"configuration": "$profile:configuration",
"assetAccessGroups": [
"com.ohos.photos",
"com.ohos.screenshot",
"com.ohos.note"
],
"startMode": "mainTask",
"buildVersion": "1.0.0",
"allowListenBundleChangedEvent": [
"5628971256935874952"
]
}
}
2.3 app.json5 配置文件标签说明
下表整理自资料中的 app.json5 配置文件标签说明。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
bundleName | 标识应用的 Bundle 名称,用于标识应用的唯一性。命名规则:必须为以点号分隔的字符串,且至少包含三段;每段仅允许英文字母、数字、下划线;首段以英文字母开头,非首段以数字或英文字母开头,每一段以数字或英文字母结尾;不允许多个点号连续出现;字符串最小长度 7 字节,最大长度 128 字节;推荐采用反域名形式命名,如 com.example.demo。 | 字符串 | 不可缺省 |
bundleType | 标识应用的 Bundle 类型。支持 app、atomicService、shared、appService、appPlugin、skill。其中 skill 从 API 版本 26.0.0 开始支持,仅对预置应用生效。 | 字符串 | 可缺省,缺省值为 app |
debug | 标识应用是否可调试。true 表示可调试,一般用于开发阶段;false 表示不可调试,一般用于发布阶段。 | 布尔值 | 由 DevEco Studio 编译构建时生成。可缺省,缺省值为 false |
icon | 标识应用的图标,取值为图标资源文件的索引。支持配置单层图标和分层图标。 | 字符串 | 不可缺省 |
alternateIcons | 标识应用的备选图标列表,用于应用运行时动态切换图标。每个备选图标包含图标名称和图标资源文件的索引。从 API 版本 26.0.0 开始支持;仅当 bundleType 为 app 时可配置。 | 对象数组 | 可缺省,缺省值为空 |
label | 标识应用的名称,取值为字符串资源的索引,以支持多语言,字符串长度不超过 63 字节。 | 字符串 | 不可缺省 |
description | 标识应用的描述信息,取值为长度不超过 255 字节的字符串,内容为描述信息的字符串或者字符串资源索引。 | 字符串 | 可缺省,缺省值为空 |
vendor | 标识对应用开发厂商的描述,取值为长度不超过 255 字节的字符串。 | 字符串 | 可缺省,缺省值为空 |
versionCode | 标识应用的版本号,取值范围为 0~2147483647。数值越大表示版本越新。 | 数值 | 不可缺省 |
versionName | 标识向用户展示的应用版本号。取值为长度不超过 127 字节的字符串。可以是仅由数字和点构成的字符串,推荐采用 A.B.C.D 四段式;也可以是包含花括号 {} 的字符串,且字符串只能包含数字、字母、下划线、点号、花括号。 | 字符串 | 不可缺省 |
minCompatibleVersionCode | 标识应用能够兼容的最低历史版本号,用于应用多设备之间协同、数据迁移、跨设备兼容性判断。该标签为预留字段,暂未使用。取值范围 0~2147483647。 | 数值 | 可缺省,缺省值等于 versionCode 标签值 |
minAPIVersion | 标识应用运行所需的最小 SDK API 版本。取值范围 0~2147483647。 | 数值 | 在应用编译构建时自动生成,手动配置无效,对应工程级 build-profile.json5 文件中的 compatibleSdkVersion 标签 |
targetAPIVersion | 标识应用运行需要的 API 目标版本。取值范围 0~2147483647。 | 数值 | 在应用编译构建时自动生成,手动配置无效,对应工程级 build-profile.json5 文件中的 targetSdkVersion 标签;如果未配置 targetSdkVersion,则由工程级 build-profile.json5 文件中的 compileSdkVersion 自动生成 |
apiReleaseType | 标识应用运行需要的 API 目标版本的类型。取值为 CanaryN、BetaN 或 ReleaseN,其中 N 代表大于零的整数。Canary 表示受限发布的版本,Beta 表示公开发布的 Beta 版本,Release 表示公开发布的正式版本。 | 字符串 | 应用编译构建时根据当前使用的 SDK 的版本类型自动生成。手动配置无效 |
accessible | 标识应用是否能访问应用的安装目录。仅预置的系统应用配置生效,三方应用配置不生效。true 表示可以访问,false 表示不可以访问。 | 布尔值 | 可缺省,缺省值为 false |
multiProjects | 标识当前工程是否支持多个工程的联合开发。true 表示支持,false 表示不支持。 | 布尔值 | 在应用编译构建时自动生成,手动配置无效,对应工程级 build-profile.json5 文件中的 multiProjects 标签 |
asanEnabled | 标识应用程序是否开启 asan 检测,用于辅助定位 buffer 越界造成的 crash 问题。true 表示开启,false 表示不开启。 | 布尔值 | 可缺省,缺省值为 false |
tablet | 标识对 tablet 设备做的特殊配置,可以配置的属性标签有 minAPIVersion。如果使用该属性对 tablet 设备做了特殊配置,则应用在 tablet 设备中会采用此处配置的属性值,并忽略在 app.json5 公共区域的属性值。 | 对象 | 可缺省,缺省时 tablet 设备使用 app.json5 公共区域的属性值 |
tv | 标识对 tv 设备做的特殊配置,可以配置的属性标签有 minAPIVersion。 | 对象 | 可缺省,缺省时 tv 设备使用 app.json5 公共区域的属性值 |
wearable | 标识对 wearable 设备做的特殊配置,可以配置的属性标签有 minAPIVersion。 | 对象 | 可缺省,缺省时 wearable 设备使用 app.json5 公共区域的属性值 |
car | 标识对 car 设备做的特殊配置,可以配置的属性标签有 minAPIVersion。 | 对象 | 可缺省,缺省时 car 设备使用 app.json5 公共区域的属性值 |
default | 标识对 default 设备做的特殊配置,可以配置的属性标签有 minAPIVersion。 | 对象 | 可缺省,缺省时 default 设备使用 app.json5 公共区域的属性值 |
targetBundleName | 标识当前包所指定的目标应用,标签值的取值规则和范围与 bundleName 标签一致。配置该标签的应用为具有 overlay 特征的应用。 | 字符串 | 可缺省,缺省值为空 |
targetPriority | 标识当前应用的优先级,取值范围为 1~100。配置 targetBundleName 标签之后,才支持配置该标签。 | 数值 | 可缺省,缺省值为 1 |
generateBuildHash | 标识当前应用的所有 HAP 和 HSP 是否由打包工具生成哈希值。true 表示都生成对应的哈希值;false 表示都不生成。系统 OTA 升级时,若应用的 versionCode 保持不变,可根据哈希值判断应用是否需要升级。该标签仅对预置应用生效。 | 布尔值 | 可缺省,缺省值为 false |
2in1 | 标识对 PC/2in1 设备做的特殊配置,可以配置的属性标签为 minAPIVersion。 | 对象 | 可缺省,缺省时 PC/2in1 设备使用 app.json5 公共区域配置的属性值 |
GWPAsanEnabled | 标识应用程序是否开启 GWP-asan 堆内存检测工具,用于对内存越界、内存释放后使用等内存破坏问题进行分析。true 表示开启,false 表示不开启。 | 布尔值 | 可缺省,缺省值为 false |
appEnvironments | 标识当前应用配置的应用环境变量。 | 对象数组 | 可缺省,缺省值为空 |
maxChildProcess | 标识当前应用自身可创建的子进程的最大个数,取值范围为 0~512,0 表示不限制。当应用有多个模块时,以 entry 模块的配置为准。 | 数值 | 可缺省,缺省时使用系统配置的默认值 512 |
multiAppMode | 标识当前应用配置的多开模式。仅 bundleType 为 app 的应用的 entry 或 feature 模块配置有效,存在多个模块时,以 entry 模块的配置为准。 | 对象 | 可缺省,缺省值为空 |
hwasanEnabled | 标识应用程序是否开启 HWAsan 检测。HWAsan 是利用 Top-Byte-Ignore 特性实现的增强版 Asan。true 表示开启,false 表示不开启。从 API version 14 开始支持该标签。 | 布尔值 | 可缺省,缺省值为 false |
tsanEnabled | 标识应用程序是否开启使用 TSan 检测线程错误。TSan 是一个检测数据竞争的工具。true 表示开启,false 表示不开启。 | 布尔值 | 可缺省,缺省值为 false |
ubsanEnabled | 标识应用程序是否使用 UBSan 检测未定义行为。true 表示开启,false 表示不开启。从 API version 14 开始支持该标签。 | 布尔值 | 可缺省,缺省值为 false |
cloudFileSyncEnabled | 标识当前应用是否启用端云文件同步能力。true 表示启用,false 表示不启用。 | 布尔值 | 可缺省,缺省值为 false |
cloudStructuredDataSyncEnabled | 标识当前应用是否启用端云结构化数据同步能力。true 表示启用,false 表示不启用。从 API version 20 开始支持该标签。 | 布尔值 | 可缺省,缺省值为 false |
configuration | 标识当前应用字体大小跟随系统配置的能力。该标签是一个 profile 文件资源,用于指定描述应用字体大小跟随系统变更的配置文件。 | 字符串 | 可缺省,缺省时 configuration 使用不跟随系统默认设定 |
assetAccessGroups | 配置应用的 Group ID,它和 Developer ID 一起组成群组信息。打包 HAP 时,DevEco 使用开发者证书对群组信息签名。该标签仅在应用主模块下生效。从 API version 18 开始支持该标签。 | 字符串数组 | 可缺省,缺省值为空 |
appPreloadPhase | 配置应用预加载到不同阶段。支持 processCreated、abilityStageCreated、windowStageCreated。从 API version 20 开始支持。仅在 PC/2in1 设备上生效,仅在应用的 entry 模块配置有效。 | 字符串 | 可缺省,缺省时不进行预加载 |
startMode | 配置应用的启动模式。支持 mainTask、recentTask。从 API version 20 开始支持。仅在 launchType 为单实例模式时生效。仅支持 phone 和 tablet 设备(不包含自由多窗)。 | 字符串 | 可缺省,缺省值为 mainTask |
buildVersion | 标识应用的构建版本号,建议采用 A.B.C 三段式。从 API version 23 开始支持该标签。字符串最小长度 1 字节,最大长度 18 字节;由数字和 . 组成;. 的数量限制 0 到 2 个,不能以 . 开头和结尾,也不能相邻;数字段可以为 0,但不能以 0 开头。 | 字符串 | 可缺省,缺省值为空 |
profileable | 标识是否允许调优工具对 Profile 签名文件为发布 Profile 的应用进行性能分析。从 API version 24 开始支持。仅当 bundleType 为 app 或 atomicService 时可以配置。 | 布尔值 | 可缺省,缺省值为 false |
allowListenBundleChangedEvent | 配置允许监听当前应用的安装、更新、卸载和清理缓存公共事件的三方应用列表。一个数组元素即为一个应用程序的 appIdentifier。从 API 版本 26.0.0 开始支持。仅当 Profile 签名文件为 In-House 发布 Profile 时生效。仅当 bundleType 为 app 或 atomicService 时可以配置。 | 字符串数组 | 可缺省,缺省值为空 |
distributedNotificationEnabled | 标识应用是否开启分布式通知。从 API version 9 开始废弃。 | 布尔值 | 可缺省,缺省值为 false |
entityType | 标识应用的类别,包括 game、media、communication、news、travel、utility、shopping、education、kids、business、photography、unspecified。从 API version 9 开始废弃。 | 字符串 | 可缺省,缺省为 unspecified |
keepAlive | 标识应用程序是否保持活动状态。此属性仅在使用系统应用或特权应用时生效,不对三方应用开放。从 API version 9 开始废弃。 | 布尔值 | 可缺省,缺省值为 false |
removable | 标识应用是否可移除。此属性仅在系统应用或特权应用使用时生效,不对三方应用开放。从 API version 9 开始废弃。 | 布尔值 | 可缺省,缺省值为 true |
singleton | 标识应用程序是否为单例模式。此属性仅在使用系统应用或特权应用时生效,不对三方应用开放。从 API version 9 开始废弃。 | 布尔值 | 可缺省,缺省值为 false |
userDataClearable | 标识是否允许应用程序清除用户数据。此属性仅在使用系统应用或特权应用时生效,不对三方应用开放。从 API version 9 开始废弃。 | 布尔值 | 可缺省,缺省值为 true |
2.4 appEnvironments 标签
此标签标识应用配置的环境变量。应用运行时有时会依赖一些三方库,这些三方库会使用到一些自定义的环境变量,为了不修改三方库的实现逻辑,可以在工程的配置文件中设置自定义的环境变量,以供运行时使用。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
name | 标识环境变量的变量名称。取值为长度不超过 4096 字节的字符串。 | 字符串 | 可缺省,缺省值为空 |
value | 标识环境变量的值。取值为长度不超过 4096 字节的字符串。 | 字符串 | 可缺省,缺省值为空 |
示例:
{
"app": {
"appEnvironments": [
{
"name": "name1",
"value": "value1"
}
]
}
}
2.5 multiAppMode 标签
应用多开模式。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
multiAppModeType | 标识应用多开模式类型。支持 multiInstance、appClone。multiInstance 仅支持 2in1 设备,常驻进程不支持该标签。appClone 为应用分身模式。 | 字符串 | 不可缺省 |
maxCount | 标识最大允许的应用多开个数。multiInstance 模式取值范围 1~10;appClone 模式取值范围 1~5。 | 数值 | 不可缺省 |
示例:
{
"app": {
"multiAppMode": {
"multiAppModeType": "appClone",
"maxCount": 5
}
}
}
2.6 configuration 标签
该标签对应一个 profile 文件资源,对应文件用于配置应用字体大小是否跟随系统变更。
示例:
{
"app": {
"configuration": "$profile:configuration"
}
}
在开发视图的 AppScope/resources/base/profile 下面定义配置文件 configuration.json,其中文件名 configuration 可自定义,需要和 configuration 标签指定的文件资源对应。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
fontSizeScale | 应用字体大小是否跟随系统。支持 followSystem、nonFollowSystem。 | 字符串 | 可缺省,缺省值为 nonFollowSystem |
fontSizeMaxScale | 应用字体大小选择跟随系统后,配置的应用字体最大放大倍数。支持 1、1.15、1.3、1.45、1.75、2、3.2。 | 字符串 | 可缺省,缺省值为 3.2 |
示例:
{
"configuration": {
"fontSizeScale": "followSystem",
"fontSizeMaxScale": "3.2"
}
}
2.7 alternateIcons 标签
该标签用于配置应用的备选图标列表,支持应用在运行时动态切换图标。开发者可以预先配置多个备选图标,应用可根据用户偏好、节日主题、品牌活动等场景动态更换应用图标。
从 API 版本 26.0.0 开始支持该标签。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
name | 标识备选图标的名称,用于标识和区分不同的备选图标。取值为长度不超过 255 字节的字符串。 | 字符串 | 不可缺省 |
icon | 标识备选图标的图标资源文件索引,取值为图标资源文件的索引,格式为 $media:icon_name。支持配置单层图标和分层图标。 | 字符串 | 不可缺省 |
示例:
{
"app": {
"alternateIcons": [
{
"name": "summer_theme",
"icon": "$media:layered_image"
},
{
"name": "winter_theme",
"icon": "$media:background"
}
]
}
}
三、module.json5 配置文件
3.1 文件位置与作用
模块级配置文件,包含模块的基本配置信息、UIAbility 组件和 ExtensionAbility 组件信息,以及应用运行过程中需要的权限信息,用于向编译工具、操作系统和应用市场提供应用的基本信息。
每个模块下必须包括一个 module.json5 配置文件,文件所在目录为:
工程名称/模块名称(例如 entry)/src/main/module.json5
说明:
- 配置文件中的示例代码直接拷贝到工程中可能编译不通过,请开发者根据需求进行配置。
- 配置文件中,字段可以重复,以最后一个配置为准。
3.2 module.json5 配置文件示例
{
"module": {
"name": "entry",
"type": "entry",
"description": "$string:module_desc",
"mainElement": "EntryAbility",
"deviceTypes": [
"tv",
"tablet"
],
"deliveryWithInstall": true,
"pages": "$profile:main_pages",
"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",
"startWindow": "$profile:start_window",
"startWindowIcon": "$media:icon",
"startWindowBackground": "$color:start_window_background",
"exported": true,
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"ohos.want.action.home"
]
}
],
"continueType": [
"continueType1"
],
"continueBundleName": [
"com.example.myapplication1",
"com.example.myapplication2"
]
}
],
"requestPermissions": [
{
"name": "ohos.permission.ACCESS_BLUETOOTH",
"reason": "$string:reason",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when": "inuse"
}
}
],
"querySchemes": [
"app1Scheme",
"app2Scheme"
],
"routerMap": "$profile:router_map",
"appEnvironments": [
{
"name": "name1",
"value": "value1"
}
],
"fileContextMenu": "$profile:menu",
"crossAppSharedConfig": "$profile:shared_config",
"skillProfiles": [
{
"name": "my-skill",
"abilityName": "EntryAbility",
"version": "1.0.0",
"visibility": "public",
"srcEntries": [
"../../my-skill/scripts/Test.ets"
],
"permissions": []
}
]
}
}
3.3 module.json5 配置文件标签说明
下表整理自资料中的 module.json5 配置文件标签说明。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
name | 标识当前 Module 的名称,确保该名称在整个应用中唯一。由字母、数字和下划线组成,且必须以字母开头。最大长度 128 字节。应用升级时允许修改该名称,但需要应用适配 Module 相关数据目录的迁移。 | 字符串 | 不可缺省 |
type | 标识当前 Module 的类型。支持 entry、feature、har、shared、skill。skill 从 API 版本 26.0.0 开始支持,仅对预置应用生效。 | 字符串 | 不可缺省 |
srcEntry | 标识 AbilityStage 组件的代码路径,取值为长度不超过 127 字节的字符串。 | 字符串 | 可缺省,缺省值为空 |
description | 标识当前 Module 的描述信息,取值为长度不超过 255 字节的字符串,可以采用字符串资源索引格式。 | 字符串 | 可缺省,缺省值为空 |
mainElement | 标识当前 Module 的入口 UIAbility 名称,取值为长度不超过 255 字节的字符串。 | 字符串 | 可缺省,缺省值为空 |
deviceTypes | 标识当前 Module 可以运行在哪类设备上。当存在多个模块时,各模块的配置可以不同,但都必须包含将要安装的设备类型。 | 字符串数组 | 不可缺省 |
deliveryWithInstall | 标识当前 Module 是否在用户主动安装的时候安装。true 表示跟随应用一起安装;false 表示不跟随应用一起安装,通过按需分发的方式安装。 | 布尔值 | 当前 Module 类型为 HAP 或 HSP 时,不可缺省 |
installationFree | 标识当前 Module 是否支持免安装特性。true 表示支持,false 表示不支持。 | 布尔值 | 可缺省。编译构建时自动生成,手动配置不生效。当 bundleType 为元服务时,自动配置为 true;反之自动配置为 false |
virtualMachine | 标识当前 Module 运行的目标虚拟机类型,供云端分发使用。如果目标虚拟机类型为 ArkTS 引擎,则其值为 ark+版本号。 | 字符串 | 可缺省,手动配置不生效,由编译构建时自动生成 |
pages | 标识当前 Module 的 profile 资源,用于列举每个页面信息,取值为长度不超过 255 字节的字符串。 | 字符串 | 可缺省,缺省值为空 |
metadata | 标识当前 Module 的自定义元信息,可通过资源引用的方式配置 distributionFilter、shortcuts 等信息。只对当前 Module、UIAbility、ExtensionAbility 生效。 | 对象数组 | 可缺省,缺省值为空 |
abilities | 标识当前 Module 中 UIAbility 的配置信息,只对当前 UIAbility 生效。 | 对象数组 | 可缺省,缺省值为空 |
extensionAbilities | 标识当前 Module 中 ExtensionAbility 的配置信息,只对当前 ExtensionAbility 生效。 | 对象数组 | 可缺省,缺省值为空 |
requestPermissions | 标识当前应用运行时需向系统申请的权限集合。 | 对象数组 | 可缺省,缺省值为空 |
testRunner | 标识用于测试当前 Module 的测试框架的配置。 | 对象 | 可缺省,缺省值为空 |
atomicService | 标识当前应用是元服务时,有关元服务的相关配置。 | 对象 | 可缺省,缺省值为空 |
dependencies | 标识当前模块运行时依赖的共享库列表。 | 对象数组 | 可缺省,缺省值为空。手动配置不生效,由编译构建时自动生成 |
targetModuleName | 标识当前包所指定的目标 Module。取值为长度不超过 128 字节的字符串,不支持中文。配置该标签的 Module 具有 overlay 特性。仅在动态共享包 HSP 中适用。 | 字符串 | 可缺省,缺省值为空 |
targetPriority | 标识当前 Module 的优先级,取值范围 1~100。配置 targetModuleName 标签之后,才需要配置该标签。仅在动态共享包 HSP 中适用。 | 整型数值 | 可缺省,缺省值为 1 |
proxyData | 标识当前 Module 提供的数据代理列表。 | 对象数组 | 可缺省,缺省值为空 |
isolationMode | 标识当前 Module 的多进程配置项。支持 nonisolationFirst、isolationFirst、isolationOnly、nonisolationOnly。仅 2in1 和 tablet 设备支持将当前 Module 设置为独立进程。该标签仅对 HAP 生效。 | 字符串 | 可缺省,缺省值为 nonisolationFirst |
generateBuildHash | 标识当前 HAP/HSP 是否由打包工具生成哈希值。该标签仅在 app.json5 文件中的 generateBuildHash 标签为 false 时使能。仅对预置应用生效。 | 布尔值 | 可缺省,缺省值为 false |
compressNativeLibs | 在打包 hap 时,该标签标识 libs 库是否以压缩存储的方式打包到 HAP。true 表示压缩存储,false 表示不压缩存储。 | 布尔值 | 可缺省,在打包 hap 时缺省值为 false |
extractNativeLibs | 标识应用安装时,libs 库是否解压到应用安装目录。当 compressNativeLibs 和 extractNativeLibs 都配置为 false 时,应用以不解压 libs 库的方式安装;其他场景,应用以解压 libs 库的方式安装。从 API version 20 开始支持。 | 布尔值 | 可缺省,缺省值为 true |
libIsolation | 在 libs 目录下是否生成模块名称目录存储 so,用于区分同一应用中不同 HAP 的 .so 文件,以防止 .so 文件冲突。true 表示当前 HAP 的 .so 文件会储存在 libs 目录中以 Module 名命名的路径下;false 表示直接储存在 libs 目录中。 | 布尔值 | 可缺省,缺省值为 false |
fileContextMenu | 标识当前 HAP 的右键菜单配置项,是一个 profile 文件资源。取值为长度不超过 255 字节的字符串。仅在 PC/2in1 设备上生效,仅允许在 entry 类型模块中配置。 | 字符串 | 可缺省,缺省值为空 |
querySchemes | 标识允许当前应用进行跳转查询的 URL schemes,只允许 entry 类型模块配置,每个字符串取值不超过 128 字节。从 API version 21 开始,最多允许配置 200 个 URL scheme;API version 20 及之前最多允许配置 50 个。 | 字符串数组 | 可缺省,缺省值为空 |
routerMap | 标识当前模块配置的路由表路径。取值为长度不超过 255 字节的字符串。 | 字符串 | 可缺省,缺省值为空 |
appEnvironments | 标识当前模块配置的应用环境变量,只允许 entry 和 feature 模块配置。 | 对象数组 | 可缺省,缺省值为空 |
appStartup | 标识当前 Module 启动框架配置路径,只允许 entry 类型模块配置。从 API version 18 开始,新增支持在 HSP、HAR 中配置。从 API version 20 开始,新增支持在 feature 类型的 Module 中配置。 | 字符串 | 可缺省,缺省值为空 |
hnpPackages | 标识当前应用包含的 Native 软件包信息。只允许 entry 类型模块配置。 | 对象数组 | 可缺省,缺省值为空 |
systemTheme | 标识当前使用的系统主题配置项。只允许 entry 类型模块配置。取值为不超过 255 字节的字符串。从 API version 20 开始支持。 | 字符串 | 可缺省,缺省值为空 |
abilitySrcEntryDelegator | 标识当前 Module 需要重定向到的 UIAbility 的名称,与 abilityStageSrcEntryDelegator 标签组合使用,共同指定重定向的目标对象。从 API version 17 开始支持。当 UIAbility 是通过 startAbilityByCall 接口启动时,该标签不生效。不支持在 HAR 的配置文件中配置该标签,也不支持重定向到 HAR 的 UIAbility。 | 字符串 | 可缺省,缺省值为空 |
abilityStageSrcEntryDelegator | 标识当前 Module 需要重定向到的 UIAbility 对应的 Module 名称(不可为当前 Module 名称),与 abilitySrcEntryDelegator 标签组合使用,共同指定重定向的目标对象。从 API version 17 开始支持。 | 字符串 | 可缺省,缺省值为空 |
crossAppSharedConfig | 标识应用间共享配置的配置文件名。取值为不超过 255 字节的字符串。用于发布配置给其他应用读取,在应用安装时生效,应用卸载时失效。从 API version 20 开始支持。 | 字符串 | 可缺省,缺省值为空 |
formWidgetModule | 在独立卡片包中,应用包需要配置该标签,用来关联卡片包。取值为卡片包的模块名称,对应卡片包 module.json5 中的 name 标签。从 API version 20 开始支持。 | 字符串 | 可缺省,缺省值为空 |
formExtensionModule | 在独立卡片包中,卡片包需要配置该标签,用来关联应用包。取值为应用包的模块名称,对应应用包 module.json5 中的 name 标签。从 API version 20 开始支持。 | 字符串 | 可缺省,缺省值为空 |
shareFiles | 标识应用沙箱中分享目录的配置文件路径,用于为应用文件提供有安全保障的开放范围,保护应用资产。只允许 entry 类型模块配置,取值为长度不超过 255 字节的字符串。从 API version 23 开始支持。 | 字符串 | 可缺省,缺省值为空 |
skillProfiles | 标识当前模块的技能配置信息,用于定义 AI 代理的技能能力。仅允许 type 字段取值为 entry、feature、shared、skill 的模块配置,对于 skill 类型的模块必须配置该标签。从 API 版本 26.0.0 开始支持。 | 对象数组 | 对于 skill 类型的模块不可缺省;对于其他类型的模块可缺省,缺省值为空 |
executableBinaryPaths | 标识应用内可执行二进制文件的路径信息。从 API version 24 开始支持,仅在 PC/2in1 设备上生效。 | 对象数组 | 可缺省,缺省值为空 |
uiSyntax | 标识当前 Module syntax 定义该 JS Component 的语法类型。hml 表示使用 hml/css/js 进行开发;ets 表示使用 ArkTS 声明式语法进行开发。从 API version 9 开始废弃。 | 字符串 | 可缺省,缺省值为 hml |
srcEntrance | 标识当前 Module 所对应的代码路径,标签值为字符串(最长为 127 字节)。从 API version 9 开始废弃,请使用 srcEntry 字段替代。 | 字符串 | 可缺省,缺省值为空 |
requiredDeviceFeatures | 标识当前 Module 运行所需要的特定的设备特性,应用市场可以根据此配置,将应用分发给支持该特性的设备。从 API version 19 开始支持。不支持插件应用配置。 | 对象 | 可缺省,缺省值为空 |
easyGo | 标识系统提供的一种兼容配置模式的配置文件路径,以满足不同产品的定制能力,当前仅支持平行视界分栏能力。只允许 entry 类型模块配置,取值为长度不超过 255 字节的字符串。从 API version 23 开始支持。 | 字符串 | 可缺省,缺省值为空 |
3.4 deviceTypes 标签
| 设备类型 | 枚举值 | 说明 |
|---|---|---|
| 手机 | phone | - |
| 平板 | tablet | - |
| PC/2in1 | 2in1 | 即 PC 设备,主要交互方式以多窗口、多任务及键盘鼠标操作为主。在 HarmonyOS 文档中,所有“2in1”均代表“PC/2in1”。 |
| 智慧屏 | tv | - |
| 智能手表 | wearable | 系统能力较丰富的手表,具备电话功能。 |
| 车机 | car | - |
| 默认设备 | default | 配置为 default 类型的应用,虽然可以正常编译构建,但是不支持发布上架。建议使用 phone 替代。 |
示例:
{
"module": {
"name": "myHapName",
"type": "feature",
"deviceTypes": [
"tv",
"tablet"
]
}
}
3.5 pages 标签
该标签是一个 profile 文件资源,用于指定描述页面信息的配置文件。
{
"module": {
"pages": "$profile:main_pages"
}
}
在开发视图的 resources/base/profile 下面定义配置文件 main_pages.json,其中文件名 main_pages 可自定义,需要和 pages 标签指定的信息对应。配置文件中列举了当前应用组件中的页面信息,包含页面的路由信息和显示窗口相关的配置。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
src | 标识当前 Module 中所有页面的路由信息,包括页面路径和页面名称。其中,页面路径是以当前 Module 的 src/main/ets 为基准。该标签取值为一个字符串数组,其中每个元素表示一个页面。 | 字符串数组 | 不可缺省 |
window | 标识用于定义与显示窗口相关的配置。 | 对象 | 可缺省,缺省值为空 |
window 标签说明:
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
designWidth | 标识页面设计基准宽度。以此为基准,根据实际设备宽度来缩放元素大小。 | 数值 | 可缺省,缺省值为 720px |
autoDesignWidth | 标识页面设计基准宽度是否自动计算。当配置为 true 时,designWidth 将会被忽略,设计基准宽度由设备宽度与屏幕密度计算得出。当配置为 false 时,设计基准宽度为 designWidth。 | 布尔值 | 可缺省,缺省值为 false |
示例:
{
"src": [
"pages/Index"
],
"window": {
"designWidth": 720,
"autoDesignWidth": false
}
}
3.6 metadata 标签
该标签标识 HAP 的自定义元信息,标签值为数组类型,包含 name、value、resource 三个子标签。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
name | 标识数据项的名称,取值为长度不超过 255 字节的字符串。 | 字符串 | 可缺省,缺省值为空 |
value | 标识数据项的值,取值为长度不超过 255 字节的字符串。 | 字符串 | 可缺省,缺省值为空 |
resource | 标识用户自定义数据,取值为长度不超过 255 字节的字符串,内容为该数据的资源索引,例如配置成 $profile:shortcuts_config,表示指向了 /resources/base/profile/shortcuts_config.json 配置文件。 | 字符串 | 可缺省,缺省值为空 |
示例:
{
"module": {
"metadata": [
{
"name": "pageConfig",
"value": "main page config of application",
"resource": "$profile:main_pages"
}
]
}
}
3.7 abilities 标签
abilities 标签描述 UIAbility 组件的配置信息,标签值为数组类型,该标签下的配置只对当前 UIAbility 生效。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
name | 标识当前 UIAbility 组件的名称,确保该名称在整个应用中唯一。取值为长度不超过 127 字节的字符串,以字母开头,可包含字母、数字、下划线或点号。 | 字符串 | 不可缺省 |
srcEntry | 标识当前 UIAbility 的代码路径,取值为长度不超过 127 字节的字符串。 | 字符串 | 不可缺省 |
launchType | 标识当前 UIAbility 组件的启动模式。支持 multiton、singleton、specified、standard。standard 是 multiton 的曾用名。元服务启动模式需要设置为单例模式。 | 字符串 | 可缺省,缺省为 singleton |
description | 标识当前 UIAbility 组件的描述信息,取值为长度不超过 255 字节的字符串。建议采用描述信息的资源索引,以支持多语言。 | 字符串 | 可缺省,缺省值为空 |
icon | 标识当前 UIAbility 组件的图标,取值为图标资源文件的索引,支持配置单层图标和分层图标。 | 字符串 | 可缺省,缺省值为空 |
label | 标识当前 UIAbility 组件对用户显示的名称,取值为字符串资源的索引,以支持多语言,长度不超过 255 字节。 | 字符串 | 可缺省,缺省值为空 |
permissions | 标识当前 UIAbility 组件的权限信息。其他应用访问该 UIAbility 时,需要申请相应的权限。一个数组元素为一个权限名称,不超过 255 字节。 | 字符串数组 | 可缺省,缺省值为空 |
metadata | 标识当前 UIAbility 组件的元信息,典型使用场景详见窗口元数据配置中的 metadata 标签。 | 对象数组 | 可缺省,缺省值为空 |
exported | 标识当前 UIAbility 组件是否可以被其他应用拉起。true 表示可以被其他应用拉起;false 表示只能由同应用或者具有 ohos.permission.START_INVISIBLE_ABILITY 权限的应用拉起。 | 布尔值 | 可缺省,缺省值为 false |
continuable | 标识当前 UIAbility 组件是否支持跨端迁移。true 表示支持,false 表示不支持。 | 布尔值 | 可缺省,缺省值为 false |
skills | 标识当前 UIAbility 组件能够接收的 Want 特征集,为数组格式。对于 Entry 类型的 HAP,应用可以配置多个具有入口能力的 skills 标签(即配置了 ohos.want.action.home 和 entity.system.home)。对于 Feature 类型的 HAP,只有应用可以配置具有入口能力的 skills 标签,服务不允许配置。 | 对象数组 | 可缺省,缺省值为空 |
backgroundModes | 标识当前 UIAbility 组件的长时任务集合,指定用于满足特定类型的长时任务。 | 字符串数组 | 可缺省,缺省值为空 |
startWindow | 标识当前 UIAbility 组件启动页面 profile 资源,取值为长度不超过 255 字节的字符串。如果配置了该标签,startWindowIcon 和 startWindowBackground 标签均不生效。从 API version 19 开始,支持使用该字段配置增强启动页。 | 字符串 | 可缺省,缺省值为空 |
startWindowIcon | 标识当前 UIAbility 组件启动页面图标资源文件的索引,取值为长度不超过 255 字节的字符串。 | 字符串 | 不可缺省 |
startWindowBackground | 标识当前 UIAbility 组件启动页面背景颜色资源文件的索引,取值为长度不超过 255 字节的字符串。取值示例:$color:red。 | 字符串 | 不可缺省 |
removeMissionAfterTerminate | 标识当前 UIAbility 组件销毁后,是否从任务列表中移除任务。true 表示销毁后移除任务;false 表示销毁后不移除任务。2in1 设备和平板设备的自由多窗模式下配置不生效,默认移除任务。 | 布尔值 | 可缺省,缺省值为 false |
allowSelfRedirect | 标识应用是否允许通过 App Linking 跳转自己。从 API version 23 开始支持。 | 布尔值 | 可缺省,缺省值为 true |
orientation | 标识当前 UIAbility 组件启动时的方向,支持配置枚举,或启动方向资源索引。枚举包括 unspecified、landscape、portrait、follow_recent、landscape_inverted、portrait_inverted、auto_rotation、auto_rotation_landscape、auto_rotation_portrait、auto_rotation_restricted、auto_rotation_landscape_restricted、auto_rotation_portrait_restricted、locked、auto_rotation_unspecified、follow_desktop。从 API version 14 开始支持配置启动方向资源索引。 | 字符串 | 可缺省,缺省值为 unspecified |
supportWindowMode | 标识当前 UIAbility 组件所支持的窗口模式。支持 fullscreen、split、floating。 | 字符串数组 | 可缺省,缺省值为 ["fullscreen", "split", "floating"] |
maxWindowRatio | 标识当前 UIAbility 组件支持的最大的宽高比。该标签最小取值为 0。 | 数值 | 可缺省,缺省值为平台支持的最大的宽高比 |
minWindowRatio | 标识当前 UIAbility 组件支持的最小的宽高比。该标签最小取值为 0。 | 数值 | 可缺省,缺省值为平台支持的最小的宽高比 |
maxWindowWidth | 标识当前 UIAbility 组件支持的最大的窗口宽度,宽度单位为 vp。 | 数值 | 可缺省,缺省值为平台支持的最大的窗口宽度 |
minWindowWidth | 标识当前 UIAbility 组件支持的最小的窗口宽度,宽度单位为 vp。 | 数值 | 可缺省,缺省值为平台支持的最小的窗口宽度 |
maxWindowHeight | 标识当前 UIAbility 组件支持的最大的窗口高度,高度单位为 vp。 | 数值 | 可缺省,缺省值为平台支持的最大的窗口高度 |
minWindowHeight | 标识当前 UIAbility 组件支持的最小的窗口高度,高度单位为 vp。 | 数值 | 可缺省,缺省值为平台支持的最小的窗口高度 |
excludeFromMissions | 标识当前 UIAbility 组件是否在最近任务列表中显示。true 表示不在任务列表中显示,false 表示在任务列表中显示。三方应用的配置不生效,当前配置仅在系统应用中有效。 | 布尔值 | 可缺省,缺省值为 false |
recoverable | 标识当前 UIAbility 组件是否支持在检测到应用故障后,恢复到应用原界面。true 表示支持,false 表示不支持。 | 布尔值 | 可缺省,缺省值为 false |
isolationProcess | 标识组件能否运行在独立的进程中。仅 2in1 和 tablet 设备支持将 UIAbility 设置为独立进程。 | 布尔值 | 可缺省,缺省值为 false |
excludeFromDock | 标识当前 UIAbility 组件是否支持从 dock 区域隐藏图标。该标签配置不生效。 | 布尔值 | 可缺省,缺省值为 false |
preferMultiWindowOrientation | 标识当前 UIAbility 组件多窗布局方向。支持 default、portrait、landscape、landscape_auto。 | 字符串 | 可缺省,缺省值为 default |
continueType | 标识当前 UIAbility 组件的跨端迁移类型。 | 字符串数组 | 可缺省,缺省值为当前组件的名称 |
continueBundleName | 标识当前应用支持跨端迁移的其它应用名称列表。不能配置为本应用包名,仅为了做异包名迁移使用。从 API version 13 开始支持。 | 字符串数组 | 可缺省,缺省值为空 |
process | 标识组件的进程名称。仅在 PC/2in1 和 Tablet 设备上生效。UIAbility 组件和 type 为 embeddedUI 的 ExtensionAbility 组件标签一致时运行在同一个进程中。从 API version 14 开始支持。 | 字符串 | 可缺省,缺省值为空 |
abilities 示例:
{
"abilities": [
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ets",
"launchType": "singleton",
"description": "$string:description_main_ability",
"icon": "$media:layered_image",
"label": "$string:EntryAbility_label",
"permissions": [],
"metadata": [],
"exported": true,
"continuable": true,
"skills": [
{
"actions": [
"ohos.want.action.home"
],
"entities": [
"entity.system.home"
],
"uris": []
}
],
"backgroundModes": [
"dataTransfer"
],
"startWindowIcon": "$media:icon",
"startWindowBackground": "$color:red",
"removeMissionAfterTerminate": true,
"allowSelfRedirect": true,
"orientation": "$string:orientation",
"supportWindowMode": [
"fullscreen",
"split",
"floating"
],
"maxWindowRatio": 3.5,
"minWindowRatio": 0.5,
"maxWindowWidth": 2560,
"minWindowWidth": 1400,
"maxWindowHeight": 300,
"minWindowHeight": 200,
"excludeFromMissions": false,
"preferMultiWindowOrientation": "default",
"isolationProcess": false,
"continueType": [
"continueType1",
"continueType2"
],
"continueBundleName": [
"com.example.myapplication1",
"com.example.myapplication2"
],
"process": ":processTag"
}
]
}
3.8 skills 标签
该标签标识 UIAbility 组件或者 ExtensionAbility 组件能够接收的 Want 的特征。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
actions | 标识能够接收的 Action 值集合,取值通常为系统预定义的 action 值,也允许自定义。一个 skill 中不建议配置多个 action,否则可能导致无法匹配预期场景。 | 字符串数组 | 可缺省,缺省值为空 |
entities | 标识能够接收的 Entity 值的集合。一个 skill 中不建议配置多个 entity,否则可能导致无法匹配预期场景。 | 字符串数组 | 可缺省,缺省值为空 |
uris | 标识与 Want 中 URI 相匹配的集合。 | 对象数组 | 可缺省,缺省值为空 |
permissions | 标识当前 UIAbility 或 ExtensionAbility 组件的权限信息。其他应用访问该组件时,需要申请相应的权限。一个数组元素为一个权限名称,不超过 255 字节。 | 字符串数组 | 可缺省,缺省值为空 |
domainVerify | 标识是否开启域名校验。true 表示开启,false 表示不开启。 | 布尔值 | 可缺省,缺省值为 false |
uris 标签说明:
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
scheme | 标识 URI 的协议名部分,常见的有 http、https、file、ftp 等。从 API 18 开始,该标签在参与隐式 Want 匹配时不区分大小写。 | 字符串 | uris 中仅配置 type 时可以缺省,缺省值为空,否则不可缺省 |
host | 标识 URI 的主机地址部分,该标签只有当 scheme 配置时才生效。常见方式:域名方式如 example.com,IP 地址方式如 10.10.10.1。从 API 18 开始,该标签在参与隐式 Want 匹配时不区分大小写。 | 字符串 | 可缺省,缺省值为空 |
port | 标识 URI 的端口部分。如 http 默认端口为 80,https 默认端口是 443,ftp 默认端口是 21。该标签只有当 scheme 和 host 都配置时才生效。 | 字符串 | 可缺省,缺省值为空 |
path、pathStartWith、pathRegex | 标识 URI 的路径部分,三者配置时三选一。path 标识 URI 与 want 中的路径部分全匹配,pathStartWith 标识允许前缀匹配,pathRegex 标识允许正则匹配。该标签只有当 scheme 和 host 都配置时才生效。 | 字符串 | 可缺省,缺省值为空 |
type | 标识与 Want 相匹配的数据类型,使用 MIME 类型规范和 UniformDataType 类型规范。可以与 scheme 同时配置,也可以单独配置。 | 字符串 | 可缺省,缺省值为空 |
utd | 标识与 Want 相匹配的标准化数据类型,适用于分享等场景。 | 字符串 | 可缺省,缺省值为空 |
maxFileSupported | 对于指定类型的文件,标识一次能接收或打开的最大数量,适用于分享等场景,需要与 utd 配合使用。 | 整数 | 可缺省,缺省值为 0 |
linkFeature | 标识 URI 提供的功能类型(如文件打开、分享、导航等),用于实现应用间跳转。取值为长度不超过 127 字节的字符串,不支持中文。同一 Bundle 中声明的 linkFeature 数量不能超过 150 个。 | 字符串 | 可缺省,缺省值为空 |
skills 示例:
{
"abilities": [
{
"skills": [
{
"actions": [
"ohos.want.action.home"
],
"entities": [
"entity.system.home"
],
"uris": [
{
"scheme": "http",
"host": "example.com",
"port": "80",
"path": "path",
"type": "text/*",
"linkFeature": "Login"
}
],
"permissions": [],
"domainVerify": false
}
]
}
]
}
3.9 extensionAbilities 标签
描述 extensionAbilities 的配置信息,标签值为数组类型,该标签下的配置只对当前 extensionAbilities 生效。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
name | 标识当前 ExtensionAbility 组件的名称,确保该名称在整个应用中唯一,取值为长度不超过 127 字节的字符串。 | 字符串 | 不可缺省 |
srcEntry | 标识当前 ExtensionAbility 组件所对应的代码路径,取值为长度不超过 127 字节的字符串。 | 字符串 | 不可缺省 |
description | 标识当前 ExtensionAbility 组件的描述,取值为长度不超过 255 字节的字符串,可以是对描述内容的资源索引,用于支持多语言。 | 字符串 | 可缺省,缺省值为空 |
icon | 标识当前 ExtensionAbility 组件的图标,取值为资源文件的索引。 | 字符串 | 可缺省,缺省值为空 |
label | 标识当前 ExtensionAbility 组件对用户显示的名称,取值为该名称的资源索引,以支持多语言,字符串长度不超过 255 字节。 | 字符串 | 可缺省,缺省值为空 |
type | 标识当前 ExtensionAbility 组件的类型。 | 字符串 | 不可缺省 |
permissions | 标识当前 ExtensionAbility 组件的权限信息。当其他应用访问该 ExtensionAbility 时,需要申请相应的权限。一个数组元素为一个权限名称,不超过 255 字节。 | 字符串数组 | 可缺省,缺省值为空 |
appIdentifierAllowList | 标识允许启动此 ExtensionAbility 的应用程序列表。一个数组元素为一个应用程序的 appIdentifier。仅当 ExtensionAbility 组件的 type 为 appService 和 embeddedUI 时支持配置该标签。从 API version 20 开始支持。从 API 版本 26.0.0 开始,embeddedUI 支持配置该标签且可配置 allow_all。 | 字符串数组 | 可缺省,缺省值为空 |
readPermission | 标识读取当前 ExtensionAbility 组件数据所需的权限,取值为长度不超过 255 字节的字符串。仅当预置的系统应用 ExtensionAbility 的 type 配置为 dataShare 时,该标签生效。 | 字符串 | 可缺省,缺省值为空 |
writePermission | 标识向当前 ExtensionAbility 组件写数据所需的权限,取值为长度不超过 255 字节的字符串。仅当预置的系统应用 ExtensionAbility 的 type 配置为 dataShare 时,该标签生效。 | 字符串 | 可缺省,缺省值为空 |
uri | 标识当前 ExtensionAbility 组件提供的数据 URI,取值为长度不超过 255 字节的字符数组,用反向域名的格式表示。该标签在 type 为 dataShare 类型的 ExtensionAbility 时不可缺省。 | 字符串 | 可缺省,缺省值为空 |
skills | 标识当前 ExtensionAbility 组件能够接收的 Want 的特征集。 | 数组 | 可缺省,缺省值为空 |
metadata | 标识当前 ExtensionAbility 组件的元信息。该标签在 type 为 form 时不可缺省,且必须存在一个 name 为 ohos.extension.form 的对象值,其对应的 resource 值不能缺省。 | 对象数组 | 可缺省,缺省值为空 |
exported | 标识当前 ExtensionAbility 组件是否可以被其他应用调用。true 表示可以被其他应用调用,false 表示不可以被其他应用调用,包括无法被 aa 工具命令拉起应用。 | 布尔值 | 可缺省,缺省值为 false |
extensionProcessMode | 标识当前 ExtensionAbility 组件的进程模型。支持 instance、type、bundle、runWithMainProcess。 | 字符串 | 可缺省,缺省值为 bundle |
dataGroupIds | 标识当前 ExtensionAbility 组件的 dataGroupId 集合。 | 字符串数组 | 可缺省,缺省值为空 |
process | 标识组件的进程名称,只有 type 为 embeddedUI 时可以配置该标签。仅在 PC/2in1 和 Tablet 设备上生效。从 API version 14 开始支持。 | 字符串 | 可缺省,缺省值为空 |
isolationProcess | 标识 ExtensionAbility 组件能否运行在独立的进程中。仅当 ExtensionAbility 组件的 type 为 sys/commonUI 时该标签配置生效。从 API version 20 开始支持。 | 布尔值 | 可缺省,缺省值为 false |
skipAbilityStageLifecycle | 标识 type 为 backup 的 ExtensionAbility 组件是否跳过 AbilityStage 生命周期回调。从 API 版本 26.0.0 开始支持。 | 布尔值 | 可缺省,缺省值为 false |
extensionAbilities 示例:
{
"extensionAbilities": [
{
"name": "FormName",
"srcEntry": "./ets/form/MyForm.ets",
"icon": "$media:icon",
"label": "$string:extension_name",
"description": "$string:form_description",
"type": "form",
"permissions": ["ohos.permission.ACCESS_BLUETOOTH"],
"exported": true,
"uri": "scheme://authority/path/query",
"skills": [
{
"actions": [],
"entities": [],
"uris": [],
"permissions": []
}
],
"metadata": [
{
"name": "ohos.extension.form",
"resource": "$profile:form_config"
}
],
"extensionProcessMode": "instance",
"dataGroupIds": [
"testGroupId1"
]
}
]
}
3.10 type 标签
标识当前 ExtensionAbility 组件的类型,支持的取值如下:
| 标签取值 | 含义 |
|---|---|
form | 卡片的 ExtensionAbility。 |
workScheduler | 延时任务的 ExtensionAbility。 |
inputMethod | 输入法的 ExtensionAbility。 |
share | 提供内容分享处理功能的 ShareExtensionAbility。 |
service | 后台运行的 service 组件,三方配置无法安装应用,需要申请特权。 |
accessibility | 辅助能力的 ExtensionAbility。 |
fileAccess | 公共数据访问的 ExtensionAbility,允许应用程序提供文件和文件夹给文件管理类应用展示。三方应用配置不生效,当前配置仅在系统应用中有效。 |
dataShare | 数据共享的 ExtensionAbility,三方配置无法安装应用,需要申请特权。 |
staticSubscriber | 静态广播的 ExtensionAbility,三方应用配置不生效,当前配置仅在系统应用中有效。 |
fileShare | 文件共享的 ExtensionAbility。 |
vpn | 为开发者提供三方 VPN 能力的 ExtensionAbility。 |
wallpaper | 壁纸的 ExtensionAbility。 |
backup | 数据备份的 ExtensionAbility。 |
enterpriseAdmin | 企业设备管理的 ExtensionAbility。企业设备管理应用必须拥有此类型的 ExtensionAbility。 |
window | 该 ExtensionAbility 会在启动过程中创建一个 window,为开发者提供界面开发。三方应用配置不生效,当前配置仅在系统应用中有效。 |
thumbnail | 获取文件缩略图的 ExtensionAbility。预留字段,暂不支持使用。 |
preview | 该 ExtensionAbility 会将文件解析后在一个窗口中显示。预留字段,暂不支持使用。 |
print | 打印框架的 ExtensionAbility。 |
push | 推送的 ExtensionAbility。 |
driver | 驱动框架的 ExtensionAbility。 |
remoteNotification | 远程通知的 ExtensionAbility。 |
remoteLocation | 远程定位的 ExtensionAbility。 |
voip | 网络音视频通话的 ExtensionAbility。 |
action | 自定义操作业务模板的 ExtensionAbility。 |
adsService | 广告业务的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
embeddedCashier | 支付业务的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效,仅支持 TV 设备使用。 |
embeddedUI | 嵌入式 UI 扩展能力,提供跨进程界面嵌入的能力。 |
insightIntentUI | 为开发者提供能被系统入口调用,以窗口形态呈现内容的扩展能力。 |
ads | 广告业务的 ExtensionAbility。仅支持设备厂商使用。 |
photoEditor | 图片编辑业务的 ExtensionAbility。 |
appAccountAuthorization | 应用账号授权扩展能力的 ExtensionAbility。 |
autoFill/password | 用于账号和密码自动填充业务的 ExtensionAbility。 |
hms/account | 应用账号管理能力的 ExtensionAbility。 |
sysDialog/atomicServicePanel | 提供构建元服务服务面板的基础能力的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sysDialog/userAuth | 本地用户鉴权的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sysDialog/common | 通用弹窗的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sysDialog/power | 关机重启弹窗的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sysDialog/print | 打印模态弹窗的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sysDialog/meetimeCall | 畅连通话的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sysDialog/meetimeContact | 畅连联系人的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sysDialog/meetimeMessage | 畅连消息的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sysPicker/meetimeContact | 畅连联系人列表的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sysPicker/meetimeCallLog | 畅连通话记录列表的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sysPicker/share | 系统分享的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sysPicker/mediaControl | 投播组件的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sysPicker/photoPicker | 三方应用通过对应的 UIExtensionType 拉起图库 picker 界面。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sysPicker/filePicker | 文件下载弹窗的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sysPicker/audioPicker | 音频管理弹窗的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sysPicker/photoEditor | 图片编辑弹窗的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sys/commonUI | 非通用的 ExtensionAbility,提供业务属性强相关的嵌入式显示或弹框。三方应用配置不生效,当前配置仅在系统应用中有效。 |
autoFill/smart | 用于情景化场景自动填充业务的 ExtensionAbility。 |
modularObject | 模块化对象管理的 ExtensionAbility。从 API 版本 26.0.0 开始支持。 |
uiService | 弹窗服务组件,在启动过程中会创建 Window,并支持双向通信。三方应用配置不生效,当前配置仅在系统应用中有效。 |
recentPhoto | 最近照片推荐的 ExtensionAbility。 |
fence | 地理围栏的 ExtensionAbility。 |
callerInfoQuery | 企业联系人查询的 ExtensionAbility。 |
assetAcceleration | 资源预下载的 ExtensionAbility。 |
formEdit | 卡片编辑的 ExtensionAbility。 |
distributed | 分布式扩展的 ExtensionAbility。 |
liveForm | 互动卡片的 ExtensionAbility。 |
appService | 为应用提供后台服务相关扩展能力 AppServiceExtensionAbility。 |
webNativeMessaging | 为开发者提供 Web 消息通信能力的 ExtensionAbility。 |
faultLog | 故障延迟通知的 ExtensionAbility。 |
notificationSubscriber | 提供通知订阅相关功能的 ExtensionAbility。 |
crypto | 外部密钥管理扩展的 ExtensionAbility。 |
partnerAgent | 基于蓝牙通信技术,提供设备发现与设备下线的通知功能的 ExtensionAbility。 |
contentEmbed | 对象插入编辑框架的 ExtensionAbility。 |
selection | 划词扩展的 ExtensionAbility。从 API version 20 开始,仅支持系统应用配置;从 API version 24 开始,支持三方应用配置。 |
awc/webpage | 通用网页浏览的 ExtensionAbility。 |
awc/newsfeed | 信息流资讯业务的 ExtensionAbility。 |
assetCache | 提供通用应用数据缓存能力的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
statusBarView | 状态栏开放服务的 ExtensionAbility。 |
liveViewLockScreen | 实况窗锁屏沉浸态的 ExtensionAbility。 |
liveViewCard | 实况窗卡片自定义扩展区的 ExtensionAbility。从 API 版本 26.0.0 开始支持。 |
accountLogout | 华为账号登出能力的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sysPicker/navigation | 拉起系统导航类应用面板的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sysPicker/appSelector | 拉起系统应用选择弹框的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
sys/visualExtension | 智能图片类控件视觉搜索的 ExtensionAbility。三方应用配置不生效,当前配置仅在系统应用中有效。 |
screenTimeGuard | 屏幕时间守护开放服务的 ExtensionAbility。 |
3.11 shortcuts 标签
shortcuts 标识应用的快捷方式信息。标签值为数组,包含四个子标签 shortcutId、label、icon、wants。
metadata 中指定 shortcut 信息,其中:
name:指定 shortcuts 的名称,使用ohos.ability.shortcuts作为 shortcuts 信息的标识。resource:指定 shortcuts 信息的资源位置。
说明:桌面展示快捷方式的数量有上限要求,最多展示 4 个。
| 属性名称 | 含义 | 类型 | 是否可缺省 |
|---|---|---|---|
shortcutId | 标识快捷方式的 ID,取值为长度不超过 63 字节的字符串。不支持通过资源索引的方式配置该标签。 | 字符串 | 不可缺省 |
label | 标识快捷方式的标签信息,即快捷方式对外显示的文字描述信息。取值为长度不超过 255 字节的字符串,可以是描述性内容,也可以是标识 label 的资源索引。 | 字符串 | 可缺省,缺省值为空 |
icon | 标识快捷方式的图标,取值为资源文件的索引。推荐使用分层图标:前景图图标显示大小为 450*450px,资源大小为 1024*1024px 的透明图层;背景图大小为 1024*1024px。 | 字符串 | 可缺省,缺省值为空 |
visible | 标识快捷方式是否显示,取值为 true 时显示快捷方式,取值为 false 时不显示快捷方式。从 API version 20 开始支持该标签。 | 布尔值 | 可缺省,缺省为 true |
wants | 标识快捷方式内定义的目标 wants 信息集合,在调用 launcherBundleManager 的 startShortcut 接口时,会拉起 wants 标签里的第一个目标组件,推荐只配置一个 wants 元素。 | 对象 | 可缺省,缺省为空 |
在 /resources/base/profile/ 目录下配置 shortcuts_config.json 配置文件:
{
"shortcuts": [
{
"shortcutId": "id_test1",
"label": "$string:shortcut",
"icon": "$media:aa_icon",
"visible": true,
"wants": [
{
"bundleName": "com.ohos.hello",
"moduleName": "entry",
"abilityName": "EntryAbility",
"parameters": {
"testKey": "testValue"
}
}
]
}
]
}
在 module.json5 配置文件的 abilities 标签中,针对需要添加快捷方式的 UIAbility 进行配置 metadata 标签,使 shortcut 配置文件对该 UIAbility 生效:
{
"module": {
"abilities": [
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ets",
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"ohos.want.action.home"
]
}
],
"metadata": [
{
"name": "ohos.ability.shortcuts",
"resource": "$profile:shortcuts_config"
}
]
}
]
}
}
3.12 wants 标签
此标签用于标识快捷方式内定义的目标 wants 信息集合。
| 属性名称 | 含义 | 类型 | 是否可缺省 |
|---|---|---|---|
bundleName | 表示快捷方式的目标包名。 | 字符串 | 可缺省 |
moduleName | 表示快捷方式的目标模块名。 | 字符串 | 可缺省 |
abilityName | 表示快捷方式的目标组件名。 | 字符串 | 可缺省 |
parameters | 表示拉起快捷方式时的自定义数据,仅支持配置字符串类型的数据。其中键值均最大支持 1024 长度的字符串。 | 对象 | 可缺省 |
示例:
{
"wants": [
{
"bundleName": "com.ohos.hello",
"moduleName": "entry",
"abilityName": "EntryAbility",
"parameters": {
"testKey": "testValue"
}
}
]
}
3.13 distributionFilter 标签
该标签用于定义 HAP 对应的细分设备规格的分发策略,以便在应用市场进行云端分发应用包时做精准匹配。
说明:
- 该标签从 API version 10 及以后版本开始生效,API version 9 及以前版本使用
distroFilter标签。 - 适用场景:当一个工程中存在多个 Entry,且多个 Entry 配置的
deviceTypes存在交集时,则需要通过该标签进行区分。 - 配置规则:该标签支持配置四个属性,包括屏幕形状
screenShape、窗口分辨率screenWindow、屏幕像素密度screenDensity、设备所在国家与地区countryCode。 - 在分发应用包时,通过
deviceTypes与这四个属性的匹配关系,唯一确定一个用于分发到设备的 HAP。 - 如果需要配置该标签,则至少包含一个属性。
- 如果一个 Entry 中配置了任意一个或多个属性,则其他 Entry 也必须包含相同的属性。
screenShape和screenWindow属性仅适用于轻量级智能穿戴设备。- 配置方式:该标签需要配置在
/resources/base/profile资源目录下,并在metadata的resource标签中引用。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
screenShape | 标识屏幕形状的支持策略。 | 对象数组 | 可缺省,缺省值为空 |
screenWindow | 标识应用运行时的窗口分辨率的支持策略。 | 对象数组 | 可缺省,缺省值为空 |
screenDensity | 标识屏幕的像素密度的支持策略。 | 对象数组 | 可缺省,缺省值为空 |
countryCode | 标识国家与地区的支持策略,取值参考 ISO-3166-1 标准。支持多个国家和地区枚举定义。 | 对象数组 | 可缺省,缺省值为空 |
screenShape 标签:
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
policy | 标识条件属性的过滤规则。exclude 表示需要排除的 value 属性;include 表示需要包含的 value 属性。 | 字符串 | 不可缺省 |
value | 支持的取值为 circle、rect。 | 字符串数组 | 不可缺省 |
screenWindow 标签:
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
policy | 标识条件属性的过滤规则。当前取值仅支持 include。 | 字符串 | 不可缺省 |
value | 单个字符串的取值格式为“宽 * 高”,取值为整数像素值,例如 454 * 454。 | 字符串数组 | 不可缺省 |
screenDensity 标签:
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
policy | 标识条件属性的过滤规则。exclude 表示需要排除的 value 属性;include 表示需要包含的 value 属性。 | 字符串 | 不可缺省 |
value | 标识屏幕的像素密度。支持 sdpi、mdpi、ldpi、xldpi、xxldpi、xxxldpi。 | 字符串数组 | 不可缺省 |
countryCode 标签:
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
policy | 标识条件属性的过滤规则。exclude 表示需要排除的 value 属性;include 表示需要包含的 value 属性。 | 字符串 | 不可缺省 |
value | 标识应用需要分发的国家地区码。 | 字符串数组 | 不可缺省 |
示例:
在开发视图的 resources/base/profile 下定义配置文件,文件名为 distributionFilter_config.json,文件名可以自定义。
{
"distributionFilter": {
"screenShape": {
"policy": "include",
"value": [
"circle",
"rect"
]
},
"screenWindow": {
"policy": "include",
"value": [
"454*454",
"466*466"
]
},
"screenDensity": {
"policy": "exclude",
"value": [
"ldpi",
"xldpi"
]
},
"countryCode": {
"policy": "include",
"value": [
"CN"
]
}
}
}
在 module.json5 配置文件的 module 标签中定义 metadata 信息:
{
"module": {
"metadata": [
{
"name": "ohos.module.distribution",
"resource": "$profile:distributionFilter_config"
}
]
}
}
3.14 testRunner 标签
此标签用于支持对测试框架的配置。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
name | 标识测试框架对象名称,取值为长度不超过 255 字节的字符串。 | 字符串 | 不可缺省 |
srcPath | 标识测试框架代码路径,取值为长度不超过 255 字节的字符串。 | 字符串 | 不可缺省 |
示例:
{
"module": {
"testRunner": {
"name": "myTestRunnerName",
"srcPath": "etc/test/TestRunner.ts"
}
}
}
3.15 atomicService 标签
此标签用于支持对元服务的配置。此标签仅在 app.json5 中将 bundleType 设置为 atomicService 时生效。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
preloads | 标识元服务中预加载列表。 | 对象数组 | 可缺省,缺省值为空 |
resizeable | 标识元服务是否支持自适应窗口大小显示。当标签配置成 true 时,平板横屏模式切换或者折叠屏展开关闭,会自适应屏幕窗口的宽高,使得屏幕显示正常。从 API version 20 开始支持。 | 布尔值 | 可缺省,缺省值为 false |
preloads 标签:
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
moduleName | 标识元服务中当前模块被加载时,需预加载的模块名。不能配置自身 module name,且必须有对应的模块,取值为长度不超过 31 字节的字符串。 | 字符串 | 不可缺省 |
示例:
{
"module": {
"atomicService": {
"preloads": [
{
"moduleName": "feature"
}
],
"resizeable": true
}
}
}
3.16 dependencies 标签
此标签标识模块运行时依赖的共享库列表。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
bundleName | 标识当前模块依赖的共享包包名。取值为长度 7~128 字节的字符串。 | 字符串 | 可缺省,缺省值为空 |
moduleName | 标识当前模块依赖的共享包模块名。取值为长度不超过 31 字节的字符串。 | 字符串 | 不可缺省 |
versionCode | 标识当前模块依赖的共享包的版本号。取值范围为 0~2147483647。 | 数值 | 可缺省,缺省值为空 |
示例:
{
"module": {
"dependencies": [
{
"bundleName": "com.share.library",
"moduleName": "library",
"versionCode": 10001
}
]
}
}
3.17 proxyData 标签
此标签标识模块提供的数据代理列表,仅限 entry 和 feature 配置。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
uri | 标识用于访问该数据代理的 URI,不同的数据代理配置的 URI 不可重复,且需要满足 datashareproxy://当前应用包名/xxx 的格式。取值为长度不超过 255 字节的字符串。 | 字符串 | 不可缺省 |
requiredReadPermission | 标识从该数据代理中读取数据所需要的权限。若不配置,则其他应用无法使用该代理。 | 字符串 | 可缺省,缺省值为空 |
requiredWritePermission | 标识向该数据代理中写入数据所需要的权限。若不配置,则其他应用无法使用该代理。 | 字符串 | 可缺省,缺省值为空 |
metadata | 标识该数据代理的元信息,只支持配置 name 和 resource 标签。 | 对象 | 可缺省,缺省值为空 |
示例:
{
"module": {
"proxyData": [
{
"uri": "datashareproxy://ohos.app.hap.myapplication/event/Meeting",
"requiredReadPermission": "ohos.permission.SYSTEM_FLOAT_WINDOW",
"requiredWritePermission": "ohos.permission.SYSTEM_FLOAT_WINDOW",
"metadata": {
"name": "datashare_metadata",
"resource": "$profile:datashare"
}
}
]
}
}
3.18 routerMap 标签
此标签标识模块配置的路由表的路径。routerMap 配置文件描述模块的路由表信息,routerMap 标签的值为数组类型。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
name | 标识跳转页面的名称。取值为长度不超过 1023 字节的字符串。 | 字符串 | 不可缺省 |
pageSourceFile | 标识页面在模块内的路径。取值为长度不超过 255 字节的字符串。 | 字符串 | 不可缺省 |
buildFunction | 标识被 @Builder 修饰的函数,该函数描述页面的 UI。取值为长度不超过 1023 字节的字符串。 | 字符串 | 不可缺省 |
data | 标识字符串类型的自定义数据,开发者自行扩展能力,可以通过 HapModuleInfo 对象中 routerMap 集合对象下的 data 获取标签内容,该标签已由系统解析,无需开发者自行解析。每个自定义数据字符串取值不超过 128 字节。 | 对象 | 可缺省,缺省值为空 |
customData | 标识任意类型的自定义数据,开发者自行扩展能力,可以通过 HapModuleInfo 对象中 routerMap 集合对象下的 customData 获取标签内容,开发者需要调用 JSON.parse 函数解析出具体内容。总长度不超过 4096 字节。 | 对象 | 可缺省,缺省值为空 |
示例:
在开发视图的 resources/base/profile 下面定义配置文件,文件名可以自定义,例如 router_map.json。
{
"routerMap": [
{
"name": "DynamicPage1",
"pageSourceFile": "src/main/ets/pages/pageOne.ets",
"buildFunction": "myFunction",
"customData": {
"stringKey": "data1",
"numberKey": 123,
"booleanKey": true,
"objectKey": {
"name": "test"
},
"arrayKey": [
{
"id": 123
}
]
}
},
{
"name": "DynamicPage2",
"pageSourceFile": "src/main/ets/pages/pageTwo.ets",
"buildFunction": "myBuilder",
"data": {
"key1": "data1",
"key2": "data2"
}
}
]
}
在 module.json5 配置文件的 module 标签中定义 routerMap 标签,指向定义的路由表配置文件,例如:
{
"module": {
"routerMap": "$profile:router_map"
}
}
3.19 data 标签与 customData 标签
data 标签用于支持在路由表中配置自定义的字符串数据。
{
"routerMap": [
{
"name": "DynamicPage",
"pageSourceFile": "src/main/ets/pages/pageOne.ets",
"buildFunction": "myBuilder",
"data": {
"key1": "data1",
"key2": "data2"
}
}
]
}
customData 标签用于支持在路由表中配置自定义数据。customData 对象内部,可以配置任意类型的自定义数据。
{
"routerMap": [
{
"name": "DynamicPage",
"pageSourceFile": "src/main/ets/pages/pageOne.ets",
"buildFunction": "myBuilder",
"customData": {
"stringKey": "data1",
"numberKey": 123,
"booleanKey": true,
"objectKey": {
"name": "test"
},
"arrayKey": [
{
"id": 123
}
]
}
}
]
}
3.20 appEnvironments 标签
此标签标识模块配置的应用环境变量。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
name | 标识环境变量的变量名称。取值为长度不超过 4096 字节的字符串。 | 字符串 | 可缺省,缺省值为空 |
value | 标识环境变量的值。取值为长度不超过 4096 字节的字符串。 | 字符串 | 可缺省,缺省值为空 |
示例:
{
"module": {
"appEnvironments": [
{
"name": "name1",
"value": "value1"
}
]
}
}
3.21 hnpPackages 标签
该标签标识应用包含的 Native 软件包信息。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
package | 标识 Native 软件包名称。 | 字符串 | 不可缺省 |
type | 标识 Native 软件包类型。支持 public、private。 | 字符串 | 不可缺省 |
independentSign | 标识 Native 软件包是否支持独立签名。从 API version 23 开始支持。 | 布尔值 | 可缺省,缺省值为 false |
示例:
{
"module": {
"hnpPackages": [
{
"package": "hnpsample.hnp",
"type": "public",
"independentSign": true
}
]
}
}
3.22 startWindow 标签
该标签指向一个 profile 文件资源,用于指定 UIAbility 组件启动页面的配置文件。在开发视图的 resources/base/profile 下面定义配置文件 start_window.json。如果配置了该标签,startWindowIcon 和 startWindowBackground 标签将不生效。
从 API version 19 开始,支持使用该字段配置增强启动页。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
startWindowType | 标识当前 UIAbility 组件是否隐藏启动页。支持 REQUIRED_SHOW、REQUIRED_HIDE、OPTIONAL_SHOW。从 API version 20 开始支持。 | 字符串 | 可缺省,缺省值为 REQUIRED_SHOW |
startWindowAppIcon | 标识当前 UIAbility 组件启动页面图标资源文件的索引。从 API version 19 开始支持。 | 字符串 | 可缺省,缺省值为空 |
startWindowIllustration | 标识当前 UIAbility 组件启动页面插画资源文件的索引。从 API version 19 开始支持。 | 字符串 | 可缺省,缺省值为空 |
startWindowBrandingImage | 标识当前 UIAbility 组件启动页面品牌标识资源文件的索引。从 API version 19 开始支持。 | 字符串 | 可缺省,缺省值为空 |
startWindowBackgroundColor | 标识当前 UIAbility 组件启动页面背景颜色资源文件的索引。从 API version 19 开始支持。 | 字符串 | 不可缺省 |
startWindowBackgroundImage | 标识当前 UIAbility 组件启动页面背景图片资源文件的索引。从 API version 19 开始支持。 | 字符串 | 可缺省,缺省值为空 |
startWindowBackgroundImageFit | 标识当前 UIAbility 组件启动页面背景图像适应方式。支持 Contain、Cover、Auto、Fill、ScaleDown、None。从 API version 19 开始支持。 | 字符串 | 可缺省,缺省值为 Cover |
startWindowColorModeType | 标识当前 UIAbility 组件启动页深浅色模式,仅作用于同进程间拉起场景。支持 FOLLOW_SYSTEM、FOLLOW_APPLICATION。从 API version 20 开始支持。 | 字符串 | 可缺省,缺省值为 FOLLOW_SYSTEM |
resources/base/profile 路径下的 start_window.json 资源文件示例:
{
"startWindowType": "REQUIRED_SHOW",
"startWindowColorModeType": "FOLLOW_SYSTEM",
"startWindowAppIcon": "$media:start_window_app_icon",
"startWindowIllustration": "$media:start_window_illustration",
"startWindowBrandingImage": "$media:start_window_branding_image",
"startWindowBackgroundColor": "$color:start_window_back_ground_color",
"startWindowBackgroundImage": "$media:start_window_back_ground_image",
"startWindowBackgroundImageFit": "Cover"
}
3.23 systemTheme 标签
该标签指向一个 profile 文件资源,用于指定当前应用使用的系统主题配置文件。从 API version 20 开始支持该标签。
示例:
{
"module": {
"systemTheme": "$profile:theme_config"
}
}
在开发视图的 resources/base/profile 下面定义配置文件 theme_config.json,其中文件名可自定义为 theme_config 开头文件名,例如 theme_config、theme_config_1。需要和 systemTheme 标签指定的信息对应。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
systemTheme | 标识当前应用使用的系统主题,取值为引用系统主题名称的枚举。枚举支持的取值如下:$ohos:theme:ohos_theme 系统默认的主题。 | 字符串 | 不可缺省 |
resources/base/profile 路径下的 theme_config.json 资源文件示例:
{
"systemTheme": "$ohos:theme:ohos_theme"
}
3.24 requiredDeviceFeatures 标签
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
phone | 手机设备需要支持的设备特性。当前支持 large_screen、paint。 | 字符串数组 | 可缺省,缺省值为空数组 |
2in1 | PC/2in1 设备需要支持的设备特性。当前支持 paint。从 API version 23 开始支持使用该字段配置。 | 字符串数组 | 可缺省,缺省值为空数组 |
wearable | 智能表需要支持的设备特性。当前支持 child。从 API version 24 开始支持使用该字段配置。 | 字符串数组 | 可缺省,缺省值为空数组 |
示例:
{
"module": {
"requiredDeviceFeatures": {
"phone": [
"large_screen"
],
"2in1": [
"paint"
]
}
}
}
3.25 executableBinaryPaths 标签
标识应用内可执行二进制文件的路径信息,仅在 PC/2in1 设备上生效。从 API version 24 开始支持该标签。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
path | 标识可执行文件的路径。该路径是相对路径,必须以 libs/{abi}/ 为前缀,其中 {abi} 为设备 CPU 架构类型(如 arm64-v8a、x86_64、armeabi-v7a),即可执行二进制文件必须配置在 libs/{abi}/ 目录下。 | 字符串 | 不可缺省 |
示例:
{
"module": {
"executableBinaryPaths": [
{
"path": "libs/arm64-v8a/test.bin"
}
]
}
}
3.26 skillProfiles 标签
从 API 版本 26.0.0 开始,新增 skillProfiles 标签。该标签标识当前模块的技能配置信息,用于定义 AI 代理的技能能力。通过定义技能,应用可以将 AI 代理的能力暴露给系统或其他应用,使其能够被其他应用发现和调用。仅 type 取值为 entry、feature、shared、skill 的模块配置该标签生效。
| 属性名称 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
name | 标识技能的名称,确保该名称在当前模块中唯一。命名规则:仅允许使用小写字母、数字和连字符 -;必须以小写字母或数字开头;必须以小写字母或数字结尾;不能以连字符开头或结尾,且不得出现连续的连字符;最大长度为 64 字节。 | 字符串 | 不可缺省 |
abilityName | 标识与该技能关联的组件名称,必须配置为 abilities 标签下的 UIAbility 或 extensionAbilities 标签下 type 为 service 的 ServiceExtension 组件名称。取值为长度不超过 127 字节的字符串,以字母开头,可包含字母、数字、下划线或点号。该字段仅适用于 entry、feature、shared 类型的模块。对于 skill 类型的模块,不支持该字段。 | 字符串 | 可缺省,缺省值为入口 Ability 名称。如果没有入口 Ability,则取值为空字符串 |
srcEntries | 标识实现技能的代码文件路径列表,指向技能实现逻辑的 .ets 文件。数组中的每个元素都是相对于当前模块的 skills 目录的文件路径。srcEntries 指定的 .ets 文件应放置在 skills/{skill-name}/scripts 目录下,其中 {skill-name} 为 skillProfiles 中配置的技能名称。最多支持 100 个文件路径。 | 字符串数组 | 可缺省,缺省值为空 |
permissions | 标识调用该技能所需要的权限列表。当其他应用调用该技能时,需要申请相应的权限。一个数组元素为一个权限名称,不超过 255 字节。 | 字符串数组 | 可缺省,缺省值为空 |
version | 标识技能的版本号,格式为主版本号.次版本号.补丁版本号,其中各版本号均为非负整数,且不能以 0 开头(除非本身为 0)。示例:"1.0.1"、"0.1.1"。 | 字符串 | 不可缺省 |
visibility | 标识技能的可见性,用于控制技能的可见范围。支持 private、system、public。缺省值为 system。 | 字符串 | 可缺省,缺省值为 system |
示例:
{
"module": {
"skillProfiles": [
{
"name": "my-skill",
"abilityName": "EntryAbility",
"version": "1.0.0",
"visibility": "public",
"srcEntries": [
"../../my-skill/scripts/Test.ets"
],
"permissions": []
}
]
}
}
四、总结
鸿蒙应用开发配置文件主要分为应用级配置文件和模块级配置文件:
app.json5:位于工程名称/AppScope/app.json5,是应用级配置文件,负责应用全局信息、版本、图标、设备特殊配置、多开模式、环境变量、字体大小配置、备选图标等。module.json5:位于工程名称/模块名称/src/main/module.json5,是模块级配置文件,负责 Module 基本信息、设备类型、页面、UIAbility、ExtensionAbility、权限、快捷方式、路由表、元服务、依赖共享库、数据代理、技能配置等。
在 Stage 模型下,每个工程必须包含一个 app.json5,每个模块必须包含一个 module.json5。编译后,单个模块的编译产物中,app.json5 和 module.json5 的内容会合并到一个 module.json 文件中。
配置文件中字段可以重复,以最后一个配置为准;示例代码直接拷贝到工程中可能编译不通过,需要根据需求配置,并确保 $ 引用的资源文件存在或替换为实际资源文件。
更多推荐


所有评论(0)