HarmonyOS应用的每个HAP的根目录下都存在一个config.json配置文件,如图4-10所示。
图4-10 配置文件
配置文件的内容主要涵盖以下3个方面:
· 应用的全局配置信息,包含应用的包名、生产厂商、版本号等基本信息。
· 应用在具体设备上的配置信息,包含应用的备份恢复、网络安全等能力。
· HAP包的配置信息,包含每个Ability必须定义的基本属性(如包名、类名、类型以及Ability提供的能力),以及应用访问系统或其他应用受保护部分所需的权限等。
配置文件config.json采用JSON文件格式,其中包含一系列配置项,每个配置项由属性和值两部分构成。
· 属性:属性出现顺序不分先后,且每个属性最多只允许出现一次。
· 值:每个属性的值为JSON的基本数据类型(数值、字符串、布尔值、数组、对象或者null类型)。
应用的配置文件config.json由app、deviceConfig和module三个部分组成,缺一不可。配置文件的内部结构说明参见表4-3。
表4-3 配置文件的内部结构说明
以下是HelloWorld应用的配置文件:
接下来详细介绍上述配置的含义。
app对象包含应用的全局配置信息,内部结构说明如下。
· bundleName:表示应用的包名,用于标识应用的唯一性。包名是由字母、数字、下画线(_)和点号(.)组成的字符串,必须以字母开头。包名支持的字符串长度为7~127字节。包名通常采用业界常用的反域名形式表示(例如com.waylau.hmos)。建议第一级为域名后缀com,第二级为厂商/个人名,第三级为应用名,也可以采用多级。
· vendor:表示对应用开发厂商的描述。字符串长度不超过255字节。该值可缺省,缺省值为空。
· version:表示应用的版本信息。
code:表示应用的版本号,仅用于HarmonyOS管理该应用,不对应用的终端用户呈现。在API 5及更早的版本中,code的取值规则为二进制32位以内的非负整数,需要从version.name的值转换得到。从API 6版本起,code的取值不与version.name字段的取值关联,开发者可以自定义code的取值,取值范围为小于231的非负整数,但是每次应用的版本更新均需更新code字段的值,新版本code的值必须大于旧版本code的值。
name:表示应用的版本号,用于向应用的终端用户呈现。取值可以自定义,长度不超过127字节。在API 5及更早版本中,推荐使用三段式数字版本号(也兼容两段式版本号),如A.B.C(也兼容A.B),其中A、B、C取值为0~999范围内的整数。从API 6版本起,推荐采用四段式数字版本号,如A.B.C.D,其中A、B、C取值为0~99范围内的整数,D取值为0~999范围内的整数。
minCompatibleVersionCode:表示应用可兼容的最低版本号,用于在跨设备场景下判断其他设备上该应用的版本是否兼容。格式与version.code字段的格式要求相同。
· multiFrameworkBundle:表示应用是否为混合打包的HarmonyOS应用。混合打包场景配置为true,非混合打包场景配置为false。该标签值由IDE自动配置。
· smartWindowSize:该标签用于在悬浮窗场景下表示应用的模拟窗口的尺寸。配置格式为“正整数*正整数”,单位为vp。正整数取值范围为[200,2000]。
· smartWindowDeviceType:表示应用可以在哪些设备上使用模拟窗口打开,取值为phone(智能手机)、tablet(平板)、tv(智慧屏)。
· targetBundleList:表示允许以免安装方式拉起的其他HarmonyOS应用,列表取值为每个HarmonyOS应用的bundleName,多个bundleName之间用英文逗号“,”区分,最多配置10个bundleName。如果被拉起的应用不支持免安装方式,则拉起失败。
deviceConfig包含在具体设备上的应用配置信息可以包含default、phone、tablet、tv、car、wearable、liteWearable和smartVision等属性。default标签内的配置是所有设备通用的,其他设备类型如果有特殊的需求,则需要在该设备类型的标签下进行配置。
· default:表示所有设备通用的应用配置信息。
· phone:表示手机类设备的应用信息配置。
· tablet:表示平板的应用配置信息。
· tv:表示智慧屏特有的应用配置信息。
· car:表示车机特有的应用配置信息。
· wearable:表示智能穿戴特有的应用配置信息。
· liteWearable:表示轻量级智能穿戴特有的应用配置信息。
· smartVision:表示智能摄像头特有的应用配置信息。
default、phone、tablet、tv、car、wearable、liteWearable和smartVision等对象的内部结构说明,可参见表4-4。
表4-4 不同设备的内部结构说明
表4-4中的network对象的内部结构说明见表4-5。
表4-5 network对象的内部结构说明
表4-5中的securityConfig对象的domainSettings属性的内部结构说明见表4-6。
表4-6
deviceConfig示例如下:
module对象包含HAP包的配置信息,内部结构说明参见表4-7。
表4-7 module对象的内部结构说明
在表4-7中,distro对象的内部结构说明参见表4-8。
表4-8 distro对象的内部结构说明
在表4-7中,distro对象的内部结构说明参见表4-9。
表4-9 abilities对象的内部结构说明
(续表)
(续表)
(续表)
更多配置项的含义可参阅官方文档。