HarmonyOS應(yīng)用配置文件config.json
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
一個(gè)工程中的配置文件有兩種,一種是主模塊entry的配置文件config.json,另一種是應(yīng)用程序環(huán)境的配置文件build.gradle。其中config.json至少有2個(gè),一個(gè)位于entry下,另一個(gè)位于應(yīng)用根目錄下。每增加一個(gè)feature模塊,也會相應(yīng)增加一個(gè)build.gradle文件。
1.config.json
DevEco Studio提供了兩種編輯“config.json”文件的方式。在“config.json”的編輯窗口中,可在右上角切換代碼編輯視圖或可視化編輯視圖(如下圖所示)。

“config.json”由“app”、“deviceConfig”和“module”三個(gè)部分組成,各部分含義如下表所示。
(1)app屬性對象的內(nèi)部結(jié)構(gòu)說明如下:
bundleName: 表示應(yīng)用的包名,用于標(biāo)識應(yīng)用的唯一性。包名是由字母、數(shù)字、下劃線(_)和點(diǎn)號(.)組成的字符串,必須以字母開頭。支持的字符串長度為7~127字節(jié)。通常采用反域名形式表示。
vendor: 表示對應(yīng)用開發(fā)廠商的描述。字符串長度不超過255字節(jié)。
version: 表示應(yīng)用的版本信息。
apiVersion:(可不設(shè)置)表示應(yīng)用依賴的HarmonyOS的API版本。compatible表示應(yīng)用運(yùn)行需要的API最小版本。取值為大于零的整數(shù)。(一旦添加了APIVersion屬性,則該子屬性不可缺省)。target表示應(yīng)用運(yùn)行需要的API目標(biāo)版本。取值為大于零的整數(shù)??扇笔?。releaseType表示應(yīng)用運(yùn)行需要的API目標(biāo)版本的類型。取值為“CanaryN”(受限發(fā)布的版本)、“BetaN”(公開發(fā)布的Beta版本)或者“Release”(公開發(fā)布的正式版本),其中,N代表大于零的整數(shù)。
app屬性定義示例如下所示:
- "app": {
- "bundleName": "com.huawei.hiworld.example",
- "vendor": "huawei",
- "version": {
- "code": 2,
- "name": "2.0"
- },
- "apiVersion": {
- "compatible": 3,
- "target": 3,
- "releaseType": "Beta1"
- }
- }
(2)deviceConfig屬性對象設(shè)置包含在具體設(shè)備上的應(yīng)用配置信息,可以包含default、phone、tablet、tv、car、wearable、liteWearable和smartVision等屬性。default標(biāo)簽內(nèi)的配置是適用于所有設(shè)備通用,其他設(shè)備類型如果有特殊的需求,則需要在該設(shè)備類型的標(biāo)簽下通過default(所有設(shè)備)、phone(手機(jī))、tablet(平板)、tv(智慧屏)、car(車機(jī))、wearable(智能穿戴設(shè)備)、liteWearable(輕量級智能穿戴設(shè)備)和smartVision(智能攝像頭)等子屬性對象進(jìn)行配置。如果沒有對設(shè)備的特殊需求,可以設(shè)置該屬性對象為空,即"deviceConfig": {}。deviceConfig屬性對象的內(nèi)部屬性結(jié)構(gòu)說明如下:
default、phone、tablet、tv、car、wearable、liteWearable和smartVision等對象的內(nèi)部結(jié)構(gòu)說明如下所示:
其中network對象的內(nèi)部屬性結(jié)構(gòu)說明如下:
securityConfig對象的內(nèi)部屬性結(jié)構(gòu)說明如下:
deviceConfig屬性定義示例如下所示,該示例中主要對應(yīng)用的進(jìn)程名、是否支持備份、網(wǎng)絡(luò)安全進(jìn)行配置。
- "deviceConfig": {
- "default": {
- "process": "com.huawei.hiworld.example",
- "supportBackup": false,
- "network": {
- "cleartextTraffic": true,
- "securityConfig": {
- "domainSettings": {
- "cleartextPermitted": true,
- "domains": [
- {
- "subdomains": true,
- "name": "example.ohos.com"
- }
- ]
- }
- }
- }
- }
- }
(3)module屬性對象包含HAP包的配置信息,其常用子屬性對象及含義說明如下:
1)mainAbility: 表示HAP包的入口ability名稱。
2)package: 表示HAP的包結(jié)構(gòu)名稱,在應(yīng)用內(nèi)應(yīng)保證唯一性。反向域名格式。
3)name: 表示HAP的類名。采用反向域名方式表示,前綴需要與同級的package標(biāo)簽指定的包名一致,也可采用“.”開頭的命名方式。字符串長度不超過255字節(jié)。
4)description: 表示HAP的描述信息。字符串長度不超過255字節(jié)。如果字符串超出長度或者需要支持多語言,可以采用資源索引的方式添加描述內(nèi)容。
5)supportedModes: 表示應(yīng)用支持的運(yùn)行模式。當(dāng)前只定義了駕駛模式(drive)。該標(biāo)簽僅適用于車機(jī)。
6)deviceType: 表示允許Ability運(yùn)行的設(shè)備類型。系統(tǒng)預(yù)定義的設(shè)備類型包括:phone(手機(jī))、tablet(平板)、tv(智慧屏)、car(車機(jī))、wearable(智能穿戴)、liteWearable(輕量級智能穿戴)等。
7)distro: 表示HAP發(fā)布的具體描述。
deliveryWithInstall:表示當(dāng)前HAP是否支持隨應(yīng)用安裝。true:支持隨應(yīng)用安裝。false:不支持隨應(yīng)用安裝(可能導(dǎo)致最終應(yīng)用上架應(yīng)用市場異常)。
moduleName: 表示當(dāng)前HAP的名稱。
moduleType: 表示當(dāng)前HAP的類型,包括兩種類型:entry和feature。
8)abilities: 表示當(dāng)前模塊內(nèi)的所有Ability的配置信息。采用對象數(shù)組格式,其中每個(gè)元素表示一個(gè)Ability對象。其內(nèi)部子屬性說明如下:
name:表示Ability名稱。取值可采用反向域名方式表示,由包名和類名組成。
description:表示對Ability的描述。取值可以是描述性內(nèi)容,也可以是對描述性內(nèi)容的資源索引,以支持多語言。
icon:表示Ability圖標(biāo)資源文件的索引。如果在該Ability的“skills”屬性中,“actions”的取值包含 “action.system.home”,“entities”取值中包含“entity.system.home”,則該Ability的icon將同時(shí)作為應(yīng)用的icon。如果存在多個(gè)符合條件的Ability,則取位置靠前的Ability的icon作為應(yīng)用的icon。
label:表示Ability對用戶顯示的名稱。取值可以是Ability名稱,也可以是對該名稱的資源索引,以支持多語言。如果在該Ability的“skills”屬性中,“actions”的取值包含 “action.system.home”,“entities”取值中包含“entity.system.home”,則該Ability的label將同時(shí)作為應(yīng)用的label。如果存在多個(gè)符合條件的Ability,則取位置靠前的Ability的label作為應(yīng)用的label。
uri:表示Ability的統(tǒng)一資源標(biāo)識符。格式為:

launchType:表示Ability的啟動(dòng)模式,支持“standard”、“singleMission”和“singleton”三種模式:
standard:表示該Ability可以有多實(shí)例。“standard”模式適用于大多數(shù)應(yīng)用場景。
singleMission:表示此Ability在每個(gè)任務(wù)棧中只能有一個(gè)實(shí)例。
singleton:表示該Ability在所有任務(wù)棧中僅可以有一個(gè)實(shí)例。例如,具有全局唯一性的呼叫來電界面即采用“singleton”模式。
shortcuts: (可缺省)表示應(yīng)用的快捷方式信息。采用對象數(shù)組格式,其中的每個(gè)元素表示一個(gè)快捷方式對象。
visible:表示Ability是否可以被其他應(yīng)用調(diào)用。
true:可以被其他應(yīng)用調(diào)用。
false:不能被其他應(yīng)用調(diào)用。
permissions:表示其他應(yīng)用的Ability調(diào)用此Ability時(shí)需要申請的權(quán)限。通常采用反向域名格式,取值可以是系統(tǒng)預(yù)定義的權(quán)限,也可以是開發(fā)者自定義的權(quán)限。如果是自定義權(quán)限,取值必須與“defPermissions”標(biāo)簽中定義的某個(gè)權(quán)限的“name”標(biāo)簽值一致。
skills:表示Ability能夠接收的Intent的特征。
deviceCapability:表示Ability運(yùn)行時(shí)要求設(shè)備具有的能力,采用字符串?dāng)?shù)組的格式表示。
metaData:表示Ability的元信息。
調(diào)用Ability時(shí)調(diào)用參數(shù)的元信息,例如:參數(shù)個(gè)數(shù)和類型。
Ability執(zhí)行完畢返回值的元信息,例如:返回值個(gè)數(shù)和類型。
type:表示Ability的類型。取值范圍如下:
page:表示基于Page模板開發(fā)的FA,用于提供與用戶交互的能力。
service:表示基于Service模板開發(fā)的PA,用于提供后臺運(yùn)行任務(wù)的能力。
data:表示基于Data模板開發(fā)的PA,用于對外部提供統(tǒng)一的數(shù)據(jù)訪問抽象。
CA:表示支持其他應(yīng)用以窗口方式調(diào)起該Ability。
orientation:示該Ability的顯示模式。該標(biāo)簽僅適用于page類型的Ability。取值范圍如下:
unspecified:由系統(tǒng)自動(dòng)判斷顯示方向。
landscape:橫屏模式。
portrait:豎屏模式。
followRecent:跟隨棧中最近的應(yīng)用。
backgroundModes:表示后臺服務(wù)的類型,可以為一個(gè)服務(wù)配置多個(gè)后臺服務(wù)類型。該標(biāo)簽僅適用于service類型的Ability。取值范圍如下:
dataTransfer:通過網(wǎng)絡(luò)/對端設(shè)備進(jìn)行數(shù)據(jù)下載、備份、分享、傳輸?shù)葮I(yè)務(wù)。
audioPlayback:音頻輸出業(yè)務(wù)。
audioRecording:音頻輸入業(yè)務(wù)。
pictureInPicture:畫中畫、小窗口播放視頻業(yè)務(wù)。
voip:音視頻電話、VOIP業(yè)務(wù)。
location:定位、導(dǎo)航業(yè)務(wù)。
bluetoothInteraction:藍(lán)牙掃描、連接、傳輸業(yè)務(wù)。
wifiInteraction:WLAN掃描、連接、傳輸業(yè)務(wù)。
screenFetch:錄屏、截屏業(yè)務(wù)。
multiDeviceConnection:多設(shè)備互聯(lián)業(yè)務(wù)。
readPermission:表示讀取Ability的數(shù)據(jù)所需的權(quán)限。該標(biāo)簽僅適用于data類型的Ability。取值為長度不超過255字節(jié)的字符串。
writePermission:表示向Ability寫數(shù)據(jù)所需的權(quán)限。該標(biāo)簽僅適用于data類型的Ability。取值為長度不超過255字節(jié)的字符串。
mission:表示Ability指定的任務(wù)棧。該標(biāo)簽僅適用于page類型的Ability。默認(rèn)情況下應(yīng)用中所有Ability同屬一個(gè)任務(wù)棧。
targetAbility:表示當(dāng)前Ability重用的目標(biāo)Ability。該標(biāo)簽僅適用于page類型的Ability。如果配置了targetAbility屬性,則當(dāng)前Ability(即別名Ability)的屬性中僅name、icon、label、visible、permissions、skills生效,其它屬性均沿用targetAbility中的屬性值。目標(biāo)Ability必須與別名Ability在同一應(yīng)用中,且在配置文件中目標(biāo)Ability必須在別名之前進(jìn)行聲明。
multiUserShared:表示Ability是否支持多用戶狀態(tài)進(jìn)行共享,該標(biāo)簽僅適用于data類型的Ability。配置為“true”時(shí),表示在多用戶下只有一份存儲數(shù)據(jù)。需要注意的是,該屬性會使visible屬性失效。
supportPipMode:表示Ability是否支持用戶進(jìn)入PIP模式(用于在頁面最上層懸浮小窗口,俗稱“畫中畫”,常見于視頻播放等場景)。該標(biāo)簽僅適用于page類型的Ability。
formsEnabled:表示Ability是否支持卡片(forms)功能。該標(biāo)簽僅適用于page類型的Ability。
true:支持卡片能力。
false:不支持卡片能力。
resizeable:表示Ability是否支持多窗口特性。
forms:表示服務(wù)卡片的屬性。該標(biāo)簽僅當(dāng)“formsEnabled”為“true”時(shí),才能生效。該屬性有一系列子屬性詳細(xì)設(shè)置卡片的類型、主題樣式、外觀規(guī)格等;
9)js: (可缺省)表示基于JS UI框架開發(fā)的JS模塊集合,其中的每個(gè)元素代表一個(gè)JS模塊的信息。
10)reqPermissions: 表示應(yīng)用運(yùn)行時(shí)向系統(tǒng)申請的權(quán)限。
11)defPermissions: 表示應(yīng)用定義的權(quán)限。應(yīng)用調(diào)用者必須申請這些權(quán)限,才能正常調(diào)用該應(yīng)用。
12)colorMode:表示應(yīng)用自身的顏色模式。
dark:表示按照深色模式選取資源。
light:表示按照淺色模式選取資源。
auto:表示跟隨系統(tǒng)的顏色模式值選取資源。
module屬性對象定義示例如下所示:
- "module": {
- "mainAbility": "MainAbility",
- "package": "com.example.myapplication.entry",
- "name": ".MyOHOSAbilityPackage",
- "description": "$string:description_application",
- "supportedModes": [
- "drive"
- ],
- "deviceType": [
- "car"
- ],
- "distro": {
- "deliveryWithInstall": true,
- "moduleName": "ohos_entry",
- "moduleType": "entry"
- },
- "abilities": [
- ...
- ],
- "shortcuts": [
- ...
- ],
- "js": [
- ...
- ],
- "reqPermissions": [
- ...
- ],
- "defPermissions": [
- ...
- ],
- "colorMode": "light"
- }
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)