config.json 配置文件
- 应用的全局配置信息,包含应用的包名、生产厂商、版本号等基本信息。
- 应用在具体设备上的配置信息,包含应用的备份恢复、网络安全等能力。
- HAP包的配置信息,包含每个Ability必须定义的基本属性(如包名、类名、类型以及Ability提供的能力),
- 以及应用访问系统或其他应用受保护部分所需的权限等
app{}
"app": {
"bundleName": "com.xxx.example",
"vendor": "xxx",
"version": {
"code": 1,
"name": "1.0.0"
}
}
bundleName 【字符串 必填】
表示应用的包名,用于标识应用的唯一性。
包名是由字母、数字、下划线(_)和点号(.)组成的字符串,必须以字母开头。支持的字符串长度为7~127字节。
包名通常采用反域名形式表示(例如,“com.example.myapplication”)。建议第一级为域名后缀“com”,第二级为厂商/个人名,第三级为应用名,也可以采用多级。
对于原子化服务,其包名必须以“.hmservice”结尾。
例如,“com.example.myapplication.hmservice”。
使用DevEco Studio创建原子化服务(Atomic Service)时,会自动添加“.hmservice”。
vendor 【字符串 非必填】
表示对应用开发厂商的描述。字符串长度不超过255字节
version 【版本信息】
smartWindowSize 【字符串 非必填】
该标签用于在悬浮窗场景下表示应用的模拟窗口的尺寸。
配置格式为“正整数*正整数”,单位为vp。
正整数取值范围为[200,2000]
smartWindowDeviceType 【字符串 非必填】
表示应用可以在哪些设备上使用模拟窗口打开。
取值为:
- 智能手机:phone
- 平板:tablet
- 智慧屏:tv
targetBundleList 【字符串 非必填】
表示允许以免安装方式拉起的其他HarmonyOS应用,
列表取值为每个HarmonyOS应用的bundleName,
多个bundleName之间用英文“,”区分,最多配置5个bundleName。
如果被拉起的应用不支持免安装方式,则拉起失败
deviceConfig{} 【非必传】
deviceConfig包含在具体设备上的应用配置信息,
可以包含default、phone、tablet、tv、car、wearable、liteWearable和smartVision等属性。
default标签内的配置是适用于所有设备通用,其他设备类型如果有特殊的需求,
则需要在该设备类型的标签下进行配置
"deviceConfig": {
"default": {
"process": "com.example.application",
"supportBackup": false,
"network": {
"cleartextTraffic": true,
"securityConfig": {
"domainSettings": {
"cleartextPermitted": true,
"domains": [
{
"subdomains": true,
"name": "example.ohos.com"
}
]
}
}
}
}
}
process
表示应用或者Ability的进程名。
如果在deviceConfig标签下配置了process标签,
则该应用的所有Ability都运行在这个进程中。
如果在abilities标签下也为某个Ability配置了process标签,
则该Ability就运行在这个进程中
network 【非必传】
表示网络安全性配置。该标签允许应用通过配置文件的安全声明来自定义其网络安全,
无需修改应用代码
cleartextTraffic 【默认fasle】
表示是否允许应用使用明文网络流量(例如,明文HTTP)。
- true:允许应用使用明文流量的请求。
- false:拒绝应用使用明文流量的请求
securityConfig 【非必传】
表示应用的网络安全配置信息
module{}
mainAbility
表示HAP包的入口ability名称。
该标签的值应配置为“module > abilities”中存在的Page类型ability的名称
package
表示HAP的包结构名称,在应用内应保证唯一性
name
表示HAP的类名。采用反向域名方式表示,
前缀需要与同级的package标签指定的包名一致,也可采用“.”开头的命名方式
description
表示HAP的描述信息。字符串长度不超过255字节
supportedModes
表示应用支持的运行模式。当前只定义了驾驶模式(drive)。
该标签仅适用于车机
deviceType
表示允许Ability运行的设备类型。系统预定义的设备类型包括:
phone(手机)、tablet(平板)、tv(智慧屏)、car(车机)、wearable(智能穿戴)、liteWearable(轻量级智能穿戴)等
distro{} 【必传】
deliveryWithInstall
表示当前HAP是否支持随应用安装。
- true:支持随应用安装。
- false:不支持随应用安装
moduleName
表示当前HAP的名称
moduleType
表示当前HAP的类型,包括两种类型:entry和feature。
另外,如果表示HAR类型,请设置为har
installationFree
表示当前HAP是否支持免安装特性。
- true:表示支持免安装特性,且符合免安装约束。
- false:表示不支持免安装特性。
另外还需注意:
当entry.hap该字段配置为true时,与该entry.hap相关的所有feature.hap该字段也需要配置为true。
当entry.hap该字段配置为false时,与该entry.hap相关的各feature.hap该字段可按业务需求配置true或false。
metaData
表示HAP的元信息
"metaData": {
"parameters" : [{
"name" : "string",
"type" : "Float",
"description" : "$string:parameters_description"
}],
"results" : [{
"name" : "string",
"type" : "Float",
"description" : "$string:results_description"
}],
"customizeData" : [{
"name" : "string",
"value" : "string",
"extra" : "$string:customizeData_description"
}]
}
- parameters:表示调用Ability时所有调用参数的元信息。每个调用参数的元信息由以下三个标签组成:description、name、type
- results:表示Ability返回值的元信息。每个返回值的元信息由以下三个标签组成:description、name、type
- customizeData:表示父级组件的自定义元信息,parameters和results在module中不可配
abilities
表示当前模块内的所有Ability。采用对象数组格式,其中每个元素表示一个Ability对象
"abilities": [
{
"name": ".MainAbility",
"description": "himusic main ability",
"icon": "$media:ic_launcher",
"label": "HiMusic",
"launchType": "standard",
"orientation": "unspecified",
"permissions": [
],
"visible": true,
"skills": [
{
"actions": [
"action.system.home"
],
"entities": [
"entity.system.home"
]
}
],
"configChanges": [
"locale",
"layout",
"fontSize",
"orientation"
],
"type": "page"
},
{
"name": ".PlayService",
"description": "himusic play ability",
"icon": "$media:ic_launcher",
"label": "HiMusic",
"launchType": "standard",
"orientation": "unspecified",
"visible": false,
"skills": [
{
"actions": [
"action.play.music",
"action.stop.music"
],
"entities": [
"entity.audio"
]
}
],
"type": "service",
"backgroundModes": [
"audioPlayback"
]
},
{
"name": ".UserADataAbility",
"type": "data",
"uri": "dataability://com.huawei.hiworld.himusic.UserADataAbility",
"visible": true
}
]
name
Ability的名称,需在一个应用的范围内保证唯一
description
表示对Ability的描述。取值可以是描述性内容,也可以是对描述性内容的资源索引,以支持多语言
icon
表示Ability图标资源文件的索引。取值示例:$media:ability_icon。
如果在该Ability的skills属性中,actions的取值包含 “action.system.home”,
entities取值中包含“entity.system.home”,
则该Ability的icon将同时作为应用的icon。如果存在多个符合条件的Ability,
则取位置靠前的Ability的icon作为应用的icon
label
表示Ability对用户显示的名称。取值可以是Ability名称,也可以是对该名称的资源索引,以支持多语言。
如果在该Ability的skills属性中,actions的取值包含 “action.system.home”,
entities取值中包含“entity.system.home”,
则该Ability的label将同时作为应用的label。如果存在多个符合条件的Ability,
则取位置靠前的Ability的label作为应用的label
uri
表示Ability的统一资源标识符。格式为[scheme:][//authority][path][?query][#fragment]
launchType
表示Ability的启动模式,支持“standard”、“singleMission”和“singleton”三种模式:
standard:表示该Ability可以有多实例。“standard”模式适用于大多数应用场景。
singleMission:表示此Ability在每个任务栈中只能有一个实例。
singleton:表示该Ability在所有任务栈中仅可以有一个实例。
例如,具有全局唯一性的呼叫来电界面即采用“singleton”模式
visible
表示Ability是否可以被其他应用调用。
- true:可以被其他应用调用。
- false:不能被其他应用调用
permissions 【权限】
skills [表示Ability能够接收的Intent的特征]
- actions:表示能够接收的Intent的action值,可以包含一个或多个action
- entities:表示能够接收的Intent的Ability的类别(如视频、桌面应用等),可以包含一个或多个entity
- uris:表示能够接收的Intent的uri,可以包含一个或者多个uri
- scheme
- host
- port
- path
- type:"text/*"
deviceCapability
表示Ability运行时要求设备具有的能力,采用字符串数组的格式表示
metaData
表示Ability的元信息。
调用Ability时调用参数的元信息,例如:参数个数和类型。
Ability执行完毕返回值的元信息,例如:返回值个数和类型
type
表示Ability的类型。取值范围如下:
page:表示基于Page模板开发的FA,用于提供与用户交互的能力。
service:表示基于Service模板开发的PA,用于提供后台运行任务的能力。
data:表示基于Data模板开发的PA,用于对外部提供统一的数据访问抽象。
CA:表示支持其他应用以窗口方式调起该Ability
orientation
表示该Ability的显示模式。该标签仅适用于page类型的Ability。取值范围如下:
- unspecified:由系统自动判断显示方向。
- landscape:横屏模式。
- portrait:竖屏模式。
- followRecent:跟随栈中最近的应用
backgroundModes
表示后台服务的类型,可以为一个服务配置多个后台服务类型。该标签仅适用于service类型的Ability。取值范围如下:
- dataTransfer:通过网络/对端设备进行数据下载、备份、分享、传输等业务。
- audioPlayback:音频输出业务。
- audioRecording:音频输入业务。
- pictureInPicture:画中画、小窗口播放视频业务。
- voip:音视频电话、VOIP业务。
- location:定位、导航业务。
- bluetoothInteraction:蓝牙扫描、连接、传输业务。
- wifiInteraction:WLAN扫描、连接、传输业务。
- screenFetch:录屏、截屏业务。
- multiDeviceConnection:多设备互联业务
readPermission
表示读取Ability的数据所需的权限。该标签仅适用于data类型的Ability。取值为长度不超过255字节的字符串
writePermission
表示向Ability写数据所需的权限。该标签仅适用于data类型的Ability。取值为长度不超过255字节的字符串
configChanges
表示Ability关注的系统配置集合。当已关注的配置发生变更后,Ability会收到onConfigurationUpdated回调
mission
表示Ability指定的任务栈。该标签仅适用于page类型的Ability。默认情况下应用中所有Ability同属一个任务栈
targetAbility
表示当前Ability重用的目标Ability。该标签仅适用于page类型的Ability
multiUserShared
表示Ability是否支持多用户状态进行共享,该标签仅适用于data类型的Ability
supportPipMode
表示Ability是否支持用户进入PIP模式(用于在页面最上层悬浮小窗口,俗称“画中画”,常见于视频播放等场景)。该标签仅适用于page类型的Ability
formsEnabled
表示Ability是否支持卡片(forms)功能。该标签仅适用于page类型的Ability。
- true:支持卡片能力。
- false:不支持卡片能力。
forms
表示服务卡片的属性。该标签仅当formsEnabled为“true”时,才能生效
- name:表示卡片的类名。字符串最大长度为127字节
- description:表示卡片的描述
- isDefault:表示该卡片是否为默认卡片,每个Ability有且只有一个默认卡片。
- true:默认卡片。
- false:非默认卡片
- type:表示卡片的类型。取值范围如下:
- Java:Java卡片。
- JS:JS卡片
- colorMode:表示卡片的主题样式,取值范围如下:
- auto:自适应。
- dark:深色主题。
- light:浅色主题
- supportDimensions:表示卡片支持的外观规格,取值范围:
- 1*2:表示1行2列的二宫格。
- 2*2:表示2行2列的四宫格。
- 2*4:表示2行4列的八宫格。
- 4*4:表示4行4列的十六宫格
- defaultDimension:表示卡片的默认外观规格,取值必须在该卡片supportDimensions配置的列表中
- landscapeLayouts:表示卡片外观规格对应的横向布局文件,与supportDimensions中的规格一一对应。
- 仅当卡片类型为Java卡片时,需要配置该标签
- portraitLayouts:表示卡片外观规格对应的竖向布局文件,与supportDimensions中的规格一一对应
- updateEnabled:表示卡片是否支持周期性刷新,取值范围:
- true:表示支持周期性刷新,可以在定时刷新(updateDuration)和定点刷新(scheduledUpdateTime)两种方式任选其一,优先选择定时刷新。
- false:表示不支持周期性刷新
- scheduledUpdateTime:表示卡片的定点刷新的时刻,采用24小时制,精确到分钟
- updateDuration:表示卡片定时刷新的更新周期,单位为30分钟,取值为自然数。
- 当取值为0时,表示该参数不生效。
- 当取值为正整数N时,表示刷新周期为30*N分钟
- formConfigAbility:表示卡片的配置跳转链接,采用URI格式
- jsComponentName:表示JS卡片的Component名称。字符串最大长度为127字节。
- 仅当卡片类型为JS卡片时,需要配置该标签
- metaData:表示卡片的自定义信息,包含customizeData数组标签
- customizeData:表示自定义的卡片信息
- name:表示数据项的键名称。字符串最大长度为255字节
- value:表示数据项的值。字符串最大长度为255字节
resizeable
表示Ability是否支持多窗口特性
js
表示基于ArkUI框架开发的JS模块集合,其中的每个元素代表一个JS模块的信息
shortcuts
表示应用的快捷方式信息。采用对象数组格式,其中的每个元素表示一个快捷方式对象
defPermissions 【数组类型 非必传】
权限定义字段说明
- name:必填,权限名称
- grantMode:必填,权限授予方式
- user_grant(用户授权)
- system_grant(系统授权)
- availableScope:选填,权限限制范围
- signature:需要开发者申请对应证书后才能被使用的特殊权限
- privileged:权限定义方和使用方的签名一致。需在“config.json”里面声明后,由权限管理模块负责签名校验一致后,可使用
- restricted:预置在系统版本中的特权应用可申请的权限
- label:选填,权限的简短描述
- description:选填,权限的详细描述,若未填写
reqPermissions 【数组类型 非必传】
表示应用运行时向系统申请的权限
[{
"name": "ohos.permission.servicebus.ACCESS_SERVICE",
"reason":"user_grant权限必填,否则不允许在应用市场上架",
"usedScene":
{
"ability": ["com.mycamera.Ability", "com.mycamera.AbilityBackground"],
"when": "always"
}
// usedScene user_grant权限必填ability,可选填when
}]
colorMode
表示应用自身的颜色模式。
- dark:表示按照深色模式选取资源。
- light:表示按照浅色模式选取资源。
- auto:表示跟随系统的颜色模式值选取资源
resizeable
表示应用是否支持多窗口特性
distroFilter
表示应用的分发规则。
该标签用于定义HAP包对应的细分设备规格的分发策略,以便在应用市场进行云端分发应用包时做精准匹配。
该标签可配置的分发策略维度包括API Version、屏幕形状、屏幕分辨率。在进行分发时,通过deviceType与这三个属性的匹配关系,唯一确定一个用于分发到对应设备的HAP