当前位置: 首页 > 科技观察

HarmonyOS应用配置文件config.json

时间:2023-03-12 08:25:19 科技观察

更多信息请访问:Harmonyos技术社区https://harmonyos.51cto.com一个项目中有两个配置文件,一个是main的配置文件config.json模块入口,一个是应用环境的配置文件build.gradle。其中至少有两个config.json,一个位于入口下,一个位于应用根目录下。每添加一个功能模块,都会相应添加一个build.gradle文件。1.config.jsonDevEcoStudio提供了两种方式来编辑“config.json”文件。在“config.json”的编辑窗口中,可以在右上角切换代码编辑视图和可视化编辑视图(如下图)。“config.json”由三部分组成:“app”、“deviceConfig”和“module”。各部分含义如下表所示。(1)app属性对象的内部结构描述如下:bundleName:表示应用的包名,用于标识应用的唯一性。包名是由字母、数字、下划线(_)和句点(.)组成的字符串,必须以字母开头。支持的字符串长度为7~127字节。通常以反域名的形式表示。vendor:表示对应用开发厂商的描述。字符串长度不能超过255字节。version:表示应用的版本信息。apiVersion:(可选)表示应用所依赖的HarmonyOS的API版本。兼容表示应用程序运行所需的最低API版本。该值是一个大于零的整数。(添加APIVersion属性后,该子属性不能默认)。target表示应用程序运行所需的API目标版本。该值是一个大于零的整数。可以默认。releaseType表示应用程序运行所需的API目标版本类型。取值可以是“CanaryN”(限量版)、“BetaN”(公测版)或“Release”(公版),其中N代表大于零的整数。app属性定义示例如下:"app":{"bundleName":"com.huawei.hiworld.example","vendor":"huawei","version":{"code":2、"name":"2.0"},"apiVersion":{"compatible":3,"target":3,"releaseType":"Beta1"}}(2)deviceConfig属性objectsetting包含特定设备上的Application配置信息,可以包括default、phone、tablet、tv、car、wearable、liteWearable、smartVision等属性。default标签中的配置适用于所有设备。如果其他设备类型有特殊要求,需要通过default(所有设备)、phone(手机)、tablet(平板电脑)、tv(智慧屏)、car(车载)、wearable(智能穿戴设备)、liteWearable(轻量级)smartwearabledevice)和smartVision(智能相机)等子属性对象进行配置。如果对设备没有特殊要求,可以将属性对象设置为空,即"deviceConfig":{}。deviceConfig属性对象内部属性结构如下:default,phone,tablet,tv,car,wearable,liteWearable,smartVision对象内部结构如下:network对象内部属性结构如下:securityConfig对象的内部属性结构说明如下:deviceConfig属性定义示例如下所示。本例主要配置应用进程名称、是否支持备份、网络安全等。"deviceConfig":{"default":{"process":"com.huawei.hiworld.example","supportBackup":false,"network":{"cleartextTraffic":true,"securityConfig":{"domainSettings":{"cleartextPermitted":true,"domains":[{"subdomains":true,"name":"example.ohos.com"}]}}}}}(3)模块属性对象包含了HAP包的配置信息,其常用的子属性对象及其含义解释如下:1)mainAbility:表示HAP包的入口能力名称。2)package:表示HAP的包结构名,在应用内应该是唯一的。反向域名格式。3)name:表示HAP的类名。反向域名用于表示前缀需要与同级包标签指定的包名一致,以“.”开头的命名方式。也可以使用。字符串长度不能超过255个字节。4)description:表示HAP的描述信息。字符串长度不能超过255个字节。如果字符串超过长度或者需要支持多种语言,可以使用资源索引添加描述内容。5)supportedModes:表示应用支持的工作模式。目前只定义了驱动模式(drive)。此标签仅适用于车辆。6)deviceType:表示允许Ability运行的设备类型。系统预定义的设备类型包括:phone(手机)、tablet(平板电脑)、tv(智慧屏)、car(车载机)、wearable(智能穿戴)、liteWearable(轻量化智能穿戴)等。7)distro:表示HAP版本的具体描述。deliveryWithInstall:表示当前HAP是否支持随应用安装。true:支持随app安装。False:不支持随应用安装(最终应用发布时可能会导致应用市场异常)。moduleName:表示当前HAP的名称。moduleType:表示当前HAP的类型,包括两种类型:entry和feature。8)abilities:表示当前模块中所有Abilities的配置信息。在对象数组格式中,每个元素代表一个Ability对象。其内部子属性说明如下:name:表示Ability的名称。该值可以用反向域名表示,由包名和类名组成。description:表示对Ability的描述。该值可以是描述性内容,也可以是描述性内容的资源索引,以支持多种语言。icon:表示技能图标资源文件的索引。如果技能的“skills”属性中,“actions”的值包含“action.system.home”,“entities”的值包含“entity.system.home”,则技能的图标为同时用作应用程序的图标。如果有多个Ability满足条件,则取位置最高的Ability的图标作为应用程序的图标。label:Ability显示给用户的名称。该值可以是能力的名称,也可以是名称的资源索引,以支持多种语言。如果在Ability的“skills”属性中,“actions”的值包含“action.system.home”,“entities”的值包含“entity.system.home”,则该Ability的标签为同时用作应用程序的标签。如果有多个Ability满足条件,则取位置最高的Ability的标签作为应用的标签。uri:表示Ability的统一资源标识符。格式为:launchType:表示Ability的启动方式,支持“standard”、“singleMission”和“singleton”三种模式:standard:表示Ability可以有多个实例。“标准”模式适用于大多数应用场景。singleMission:表示该Ability在每个任务栈中只能有一个实例。单例:表示该能力在所有任务栈中只能有一个实例。例如,全局唯一的来电接口采用“单例”模式。shortcuts:(默认)表示应用程序的快捷方式信息。采用对象数组的形式,其中每个元素代表一个快捷方式对象。visible:表示该Ability是否可以被其他应用程序调用。true:可以被其他应用程序调用。false:不能被其他应用程序调用。permissions:表示其他应用的Ability调用该Ability时需要申请的权限。通常采用反向域名格式,取值可以是系统预定义的权限,也可以是开发者自定义的权限。如果是自定义权限,则该值必须与“defPermissions”标签中定义的权限的“name”标签值一致。skills:表示Ability能够接收到的Intent的特性。deviceCapability:表示Ability运行时设备需要的能力,以字符串数组的形式表示。metaData:表示Ability的元信息。调用Ability时调用参数的元信息,如参数个数、类型等。Ability执行后返回值的元信息,如返回值的个数、类型等。type:表示能力的类型。取值范围如下:page:表示基于Page模板开发的FA,用于提供与用户交互的能力。service:表示基于Service模板开发的PA,用于提供后台运行任务的能力。data:表示基于Data模板开发的PA,用于对外提供统一的数据访问抽象。CA:表示支持其他应用以窗口方式调用该Ability。orientation:表示Ability的显示方式。此标签仅适用于页面类型的能力。取值范围如下:未指定:显示方向由系统自动确定。风景:风景模式。纵向:纵向模式。followRecent:关注堆栈中最近的应用程序。backgroundModes:表示后台服务类型,一个服务可以配置多个后台服务类型。该标签仅适用于服务类型的能力。取值范围如下:dataTransfer:通过网络/对端设备进行数据下载、备份、共享、传输等服务。audioPlayback:音频输出服务。audioRecording:音频输入服务。pictureInPicture:画中画,小窗口视频播放。voip:音视频通话、VOIP服务。location:定位导航服务。bluetoothInteraction:蓝牙扫描、连接、传输服务。wifiInteraction:WLAN扫描、连接、传输服务。screenFetch:屏幕录制和屏幕截图服务。multiDeviceConnection:多设备互联服务。readPermission:表示读取Ability数据所需的权限。该标签仅适用于数据类型的能力。该值为长度不超过255字节的字符串。writePermission:表示向Ability写入数据所需要的权限。该标签仅适用于数据类型的能力。该值为长度不超过255字节的字符串。mission:表示Ability指定的任务栈。此标签仅适用于页面类型的能力。默认情况下,应用程序中的所有能力都属于同一个任务堆栈。targetAbility:表示当前Ability要复用的目标Ability。此标签仅适用于页面类型的能力。如果配置了targetAbility属性,则当前Ability(即别名Ability)的属性中只有name、icon、label、visible、permissions、skill有效,其他属性跟随targetAbility中的属性值.目标Ability必须与别名Ability在同一个应用程序中,并且目标Ability必须在配置文件中的别名之前声明。multiUserShared:表示Ability是否支持多用户状态共享。该标签仅适用于数据类型的能力。当配置为“true”时,表示多用户下存储数据只有一份。需要注意的是,该属性会使visible属性失效。supportPipMode:表示Ability是否支持用户进入PIP模式(用于在页面顶层悬浮一个小窗口,俗称“画中画”,常用于视频播放等场景)。此标签仅适用于页面类型的能力。formsEnabled:表示Ability是否支持卡片(表单)功能。此标签仅适用于页面类型的能力。true:支持卡片功能。false:不支持卡片功能。resizeable:表示Ability是否支持多窗口特性。forms:业务卡的属性。这个标签只有在“formsEnabled”为“true”时才会生效。该属性有一系列的子属性来详细设置卡片类型、主题风格、外观规格等;9)js:(默认)表示基于JSUI框架开发的JS模块的集合,每个元素代表一个JS模块的信息。10)reqPermissions:表示应用运行时应用到系统的权限。11)defPermissions:表示应用程序定义的权限。应用程序的调用者必须申请这些权限才能正常调用应用程序。12)colorMode:表示应用程序本身的颜色模式。dark:表示在暗模式下选择资源。light:表示以浅色模式选??择资源。auto:表示根据系统的颜色模式值选择资源。模块属性对象定义示例如下:"description":"$string:description_application","supportedModes":["drive"],"deviceType":["car"],"distro":{"deliveryWithInstall":true,"moduleName":"ohos_entry","moduleType":"entry"},"abilities":[...],"shortcuts":[...],"js":[...],"reqPermissions":[...],"defPermissions":[...],"colorMode":"light"}更多信息,请访问:https://harmonyos.51cto.com,与华为共建的鸿蒙技术社区