鸿蒙学习之路(1)config.json 配置文件

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容