ServiceAbility組件概述
ServiceAbility,即"基于Service模板的Ability",主要用于后臺運行任務(如執行音樂播放、文件下載等),不提供用戶交互界面。ServiceAbility可由其他應用或PageAbility啟動,即使用戶切換到其他應用,ServiceAbility仍將在后臺繼續運行。
ServiceAbility組件配置
與PageAbility類似,ServiceAbility的相關配置在config.json配置文件的"module"對象的"abilities"對象中,與PageAbility的區別在于"type"屬性及"backgroundModes"屬性。
表1 ServiceAbility部分配置項說明
屬性名稱 | 含義開發前請熟悉鴻蒙開發指導文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md ]點擊或者復制轉到。 | 數據類型 | 是否可缺省 |
---|---|---|---|
type | 表示Ability的類型。取值為"service"時表示該Ability是基于Service模板開發的Ability。 | 字符串 | 否 |
backgroundModes | 表示后臺服務的類型,可以為一個服務配置多個后臺服務類型。該標簽僅適用于service類型的Ability。取值范圍如下: dataTransfer:通過網絡/對端設備進行數據下載、備份、分享、傳輸等業務。 audioPlayback:音頻輸出業務。 audioRecording:音頻輸入業務。 pictureInPicture:畫中畫、小窗口播放視頻業務。 voip:音視頻電話、VOIP業務。 location:定位、導航業務。 bluetoothInteraction:藍牙掃描、連接、傳輸業務。 wifiInteraction:WLAN掃描、連接、傳輸業務。 screenFetch:錄屏、截屏業務。 multiDeviceConnection:多設備互聯業務。 | 字符串數組 | 可缺省,缺省值為空。 |
module對象內部結構
module對象包含HAP的配置信息。
表1****module對象內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
mainAbility | 服務中心圖標露出的Ability,常駐進程拉起時會啟動mainAbility。 | 字符串 | 可缺省,缺省值為空。 |
package | 標識HAP的包結構名稱,在應用內保證唯一性。采用反向域名格式(建議與HAP的工程目錄保持一致)。字符串長度為1-127個字節。 | 字符串 | 不可缺省。 |
name | 標識HAP的類名。采用反向域名方式標識,前綴要與同級的package標簽指定的包名一致,也可采用"."開頭的命名方式。字符串長度不超過255字節。 | 字符串 | 可缺省,缺省值為空。 |
description | 標識HAP的描述信息。字符串長度不超過255字節。如果字符串超出長度或者需要支持多語言,可以采用資源索引的方式添加描述內容。 | 字符串 | 可缺省,缺省值為空。 |
supportedModes | 標識應用支持的運行模式,當前只定義了駕駛模式(drive)。該標簽只適用于車機。 | 字符串數組 | 可缺省,缺省值為空。 |
deviceType | 標識允許Ability運行的設備類型。系統預定義的設備類型包括:tablet(平板)、tv(智慧屏)、car(車機)、wearable(智能穿戴)等。 | 字符串數組 | 不可缺省。 |
distro | 標識HAP發布的具體描述。 | 對象 | 不可缺省。 |
metaData | 標識HAP的元信息。 | 對象 | 可缺省,缺省值為空。 |
abilities | 標識當前模塊內的所有Ability。采用對象數據格式。 | 對象數組 | 可缺省,缺省值為空。 |
js | 標識基于ArkUI框架開發的JS模塊集合,其中的每個元素代表一個JS模塊的信息。 | 對象數組 | 可缺省,缺省值為空。 |
shortcuts | 標識應用的快捷方式信息。采用對象數組格式,其中的每個元素表示一個快捷方式對象。 | 對象數組 | 可缺省,缺省值為空。 |
reqPermissions | 標識應用運行時向系統申請的權限。 | 對象數組 | 可缺省,缺省值為空。 |
colorMode | 標識應用自身的顏色模式,目前支持如下三種模式: - dark:表示按照深色模式選取資源。 - light:表示按照淺色模式選取資源。 - auto:表示跟隨系統的顏色模式值選取資源。 | 字符串 | 可缺省,缺省值為"auto"。 |
distroFilter | 該標簽下的子標簽均為可選字段,用于定義HAP對應的細分設備規格的分發策略,以便應用市場在云端分發HAP時做精準匹配。該標簽需要配置在/resource/profile資源目錄下;在進行分發時,通過deviceType與下表屬性的匹配關系,唯一確定一個用于分發到設備的HAP。 | 對象 | 可缺省,缺省值為空。但當應用中包含多個entry模塊時,必須配置該標簽。 |
commonEvents | 定義了公共事件靜態訂閱者的信息,該字段中需要聲明靜態訂閱者的名稱、權限要求及訂閱事件列表信息,當訂閱的公共事件發送時,該公共事件靜態訂閱者將被拉起。這里的靜態訂閱者區分于常用的動態訂閱者,前者無需在業務代碼中主動調用訂閱事件的接口,在公共事件發布時可能未被拉起,而動態訂閱者則在業務代碼中主動調用公共事件訂閱的相關API,因此需要應用處于活動狀態。 | 對象數組 | 可缺省,缺省為空。 |
entryTheme | 此標簽標識系統內部主題的關鍵字。將標記值設置為名稱的資源索引。 | 字符串 | 可缺省,缺省值為空。 |
testRunner | 此標簽用于支持對測試框架的配置。 | 對象 | 可缺省,缺省值為空。 |
generateBuildHash | 標識當前HAP/HSP是否由打包工具生成哈希值。如果存在,則在系統OTA升級但應用的[version下的code]保持不變時,可根據哈希值判斷應用是否需要升級。** 注:該字段僅對預置應用生效。** | 布爾值 | 該標簽可缺省, 缺省值為false。 |
libIsolation | 用于區分同應用不同hap下的so文件,以防止so沖突。 - true:當前hap的so會儲存在libs目錄中以Module名命名的路徑下。 - false:當前hap的so會直接儲存在libs目錄中。 | 布爾值 | 該標簽可缺省, 缺省值為false。 |
module示例:
{
"module": {
"mainAbility": ".EntryAbility",
"deviceType": [
"default",
"tablet"
],
"abilities": [
{
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
],
"orientation": "unspecified",
"visible": true,
"srcPath": "EntryAbility",
"name": ".EntryAbility",
"srcLanguage": "ets",
"icon": "$media:icon",
"description": "$string:MainAbility_desc",
"formsEnabled": false,
"label": "$string:MainAbility_label",
"type": "page",
"launchType": "multiton"
}
],
"distro": {
"moduleType": "entry",
"installationFree": false,
"deliveryWithInstall": true,
"moduleName": "entry"
},
"package": "com.example.entry",
"srcPath": "",
"name": ".entry",
"js": [
{
"mode": {
"syntax": "ets",
"type": "pageAbility"
},
"pages": [
"pages/Index"
],
"name": ".EntryAbility",
"window": {
"designWidth": 720,
"autoDesignWidth": false
}
}
]
}
}
distro對象內部結構
表2****distro對象內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
moduleName | 標識當前HAP的名稱,最大長度為31個字節。 在應用升級時,該名稱允許修改,但需要應用適配Module相關數據目錄的遷移,可使用[文件操作接口]。 | 字符串 | 不可缺省。 |
moduleType | 標識當前HAP的類型,包括三種類型:entry、feature和har。 | 字符串 | 不可缺省。 |
installationFree | 標識當前HAP是否支持免安裝特性。true:表示支持免安裝特性,且符合免安裝約束。false:表示不支持免安裝特性。另外還需注意:當entry.hap該字段配置為true時,與該entry.hap相關的所有feature.hap該字段也需要配置為true。當entry.hap該字段配置為false時,與該entry.hap相關的各feature.hap該字段可按業務需求配置true或false。 | 布爾值 | 不可缺省。 |
deliveryWithInstall | 標識當前HAP是否在用戶主動安裝HAP所在應用的時候一起安裝。true: 安裝應用時當前HAP隨應用一起下載安裝。false:安裝應用時當前HAP并不下載安裝,后續使用是按需下載。 | 布爾值 | 不可缺省。 |
distro示例:
"distro": {
"moduleName": "ohos_entry",
"moduleType": "entry",
"installationFree": true,
"deliveryWithInstall": true
}
metadata對象內部結構
表3****metadata對象內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
parameters | 標識調用Ability時所有調用參數的元信息。每個調用參數的元信息由以下三個標簽組成:description、name、type。 | 對象數組 | 可缺省,缺省值為空 |
results | 標識Ability返回值的元信息。每個返回值的元信息由以下三個標簽組成:description、name、type。 | 對象數組 | 可缺省,缺省值為空。 |
customizeData | 該標簽標識父級組件的自定義元信息,Parameters和results在application不可配。 | 對象數組 | 可缺省,缺省值為空。 |
parameters對象內部結構
表4****parameters對象內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
description | 標識對調用參數的描述,可以是表示描述內容的字符串,也可以是對描述內容的資源索引以支持多語言。該標簽最大長度為255個字節。 | 字符串 | 可缺省,缺省值為空。 |
name | 標識調用參數的名稱。該標簽最大長度為255個字節。 | 字符串 | 不可缺省。 |
type | 標識調用參數的類型,如Integer。 | 字符串 | 不可缺省。 |
results對象內部結構
表5****results對象內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
description | 標識對返回值的描述,可以是表示描述內容的字符串,也可以是對描述內容的資源索引以支持多語言。該標簽最大長度為255個字節。 | 字符串 | 可缺省,缺省值為空。 |
name | 標識返回值的名字。該標簽最大長度為255個字節。 | 字符串 | 可缺省,缺省值為空。 |
type | 標識返回值的類型,如Integer。 | 字符串 | 不可缺省 |
customizeData對象的內部結構
表6****customizeData對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
name | 標識數據項的鍵名稱,字符串類型(最大長度255字節)。 | 字符串 | 可缺省,缺省值為空。 |
value | 標識數據項的值名稱,字符串類型(最大長度255字節)。 | 字符串 | 可缺省,缺省值為空。 |
extra | 標識用戶自定義數據格式,標簽值為標識該數據的資源的索引值。 | 字符串 | 可缺省,缺省值為空。 |
metadata對象示例:
"metaData": {
"parameters" : [{
"name" : "a test for metadata parameter",
"type" : "Float",
// "$string:parameters_description"為文件資源索引值
"description" : "$string:parameters_description"
}],
"results" : [{
"name" : "a test for metadata result",
"type" : "Float",
"description" : "$string:results_description"
}],
"customizeData" : [{
"name" : "a customizeData",
"value" : "string",
"extra" : "$string:customizeData_description"
}]
}
deviceType標簽
表7****deviceType標簽配置說明
設備類型 | 枚舉值 | 說明 |
---|---|---|
平板 | tablet | - |
智慧屏 | tv | - |
智能手表 | wearable | 系統能力較豐富的手表,具備電話功能。 |
車機 | car | - |
默認設備 | default | 能夠使用全部系統能力的設備。 |
abilities對象的內部結構
表8****abilities對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
process | 運行應用程序或Ability的進程名稱。如果在deviceConfig標記中配置了進程,則應用程序的所有能力都在此進程中運行。您還可以為特定能力設置流程屬性,以便該能力可以在此流程中運行。如果此屬性設置為與其他應用程序相同的進程名稱,則所有這些應用程序可以在同一進程中運行,前提是他們具有相同的聯合用戶ID和相同的簽名。該標簽最大字節數為31個字節。 | 字符串 | 可缺省,缺省值為空。 |
name | 標識Ability名稱。取值可采用反向域名方式表示,由包名和類名組成,如"com.example.myapplication.EntryAbility";也可采用"."開頭的類名方式表示,如".EntryAbility"。 Ability的名稱,需在一個應用的范圍內保證唯一。說明:在使用DevEco Studio新建項目時,默認生成首個Ability的配置,即"config.json"中"EntryAbility"的配置。如使用其他IDE工具,可自定義名稱。該標簽最大長度為127個字節。 | 字符串 | 不可缺省 |
description | 標識對Ability的描述。取值可以是描述性內容,也可以是對描述性內容的資源索引,以支持多語言。該標簽最大長度為255個字節。 | 字符串 | 可缺省,缺省值為空。 |
icon | 標識Ability圖標資源文件的索引。取值示例:$media:ability_icon。如果在該Ability的skills屬性中,actions的取值包含 "action.system.home",entities取值中包含"entity.system.home",則該Ability的icon將同時作為應用的icon。如果存在多個符合條件的Ability,則取位置靠前的Ability的icon作為應用的icon。 說明:應用的"icon"和"label"是用戶可感知配置項,需要區別于當前所有已有的應用"icon"或"label"(至少有一個不同)。 | 字符串 | 可缺省,缺省值為空。 |
label | 標識Ability對用戶顯示的名稱。取值是對該名稱的資源索引,支持多語言,例:$string:ability_label。如果在該Ability的skills屬性中,actions的取值包含 "action.system.home",entities取值中包含"entity.system.home",則該Ability的label將同時作為應用的label。如果存在多個符合條件的Ability,則取位置靠前的Ability的label作為應用的label。 說明: 應用的"icon"和"label"是用戶可感知配置項,需要區別于當前所有已有的應用"icon"或"label"(至少有一個不同)。該標簽為資源文件中定義的字符串的引用,或以"{}"包括的字符串。該標簽最大長度為255個字節。 | 字符串 | 可缺省,缺省值為空。 |
uri | 標識Ability的統一資源標識符。該標簽最大長度為255個字節。 | 字符串 | 可缺省,對于data類型的Ability不可缺省。 |
launchType | 標識Ability的啟動模式,支持"multiton"和"singleton"兩種模式: multiton:表示該Ability可以有多實例。該模式適用于大多數應用場景。 singleton:表示該Ability在所有任務棧中僅可以有一個實例。例如,具有全局唯一性的呼叫來電界面即采用"singleton"模式。該標簽僅適用于默認設備、平板、智慧屏、車機、智能穿戴。 | 字符串 | 可缺省,缺省值為"singleton"。 |
visible | 標識Ability是否可以被其他應用調用。 true:可以被其他應用調用。 false:不能被其他應用調用,包括無法被aa工具命令拉起應用。 | 布爾類型 | 可缺省,缺省值為"false"。 |
permissions | 標識其他應用的Ability調用此Ability時需要申請的權限集合,一個數組元素為一個權限名稱。通常采用反向域名格式(最大255字節),取值為系統預定義的權限。 | 字符串數組 | 可缺省,缺省值為空。 |
skills | 標識Ability能夠接收的want的特征。 | 對象數組 | 可缺省,缺省值為空。 |
deviceCapability | 標識Ability運行時要求設備具有的能力,采用字符串數組的格式表示。該標簽為數組,支持最多配置512個元素,單個元素最大字節長度為64。 | 字符串數組 | 可缺省,缺省值為空。 |
metaData | 元數據。 | 對象 | 可缺省,缺省值為空。 |
type | 標識Ability的類型。取值范圍如下: page:表示基于Page模板開發的FA,用于提供與用戶交互的能力。 service:表示基于Service模板開發的PA,用于提供后臺運行任務的能力。 data:表示基于Data模板開發的PA,用于對外部提供統一的數據訪問對象。 CA:表示支持其他應用以窗口方式調起該Ability。 | 字符串 | 不可缺省。 |
orientation | 標識該Ability的顯示模式。該標簽僅適用于page類型的Ability。取值范圍如下: unspecified:由系統自動判斷顯示方向。 landscape:橫屏模式。 portrait:豎屏模式。 followRecent:跟隨棧中最近的應用。 | 字符串 | 可缺省,缺省值為"unspecified"。 |
backgroundModes | 標識后臺服務的類型,可以為一個服務配置多個后臺服務類型。該標簽僅適用于service類型的Ability。取值范圍如下: dataTransfer:通過網絡/對端設備進行數據下載、備份、分享、傳輸等。 audioPlayback:音頻播放。 audioRecording:錄音。 pictureInPicture:畫中畫、小窗口播放視頻。 voip:音視頻電話、VOIP。 location:定位、導航。 bluetoothInteraction:藍牙掃描、連接、傳輸。 wifiInteraction:Wi-Fi掃描、連接、傳輸。 screenFetch:錄屏、截屏。 multiDeviceConnection:多設備互聯。 | 字符串數組 | 可缺省,缺省值為空。 |
grantPermission | 指定是否可以向Ability內任何數據授予權限。 | 布爾值 | 可缺省,缺省值為空。 |
readPermission | 標識讀取Ability的數據所需的權限。該標簽僅適用于data類型的Ability。取值為長度不超過255字節的字符串。該標簽僅適用于默認設備、平板、智慧屏、車機、智能穿戴。 | 字符串 | 可缺省,缺省為空。 |
writePermission | 標識向Ability寫數據所需的權限。該標簽僅適用于data類型的Ability。取值為長度不超過255字節的字符串。 | 字符串 | 可缺省,缺省為空。 |
configChanges | 標識Ability關注的系統配置集合。當已關注的配置發生變更后,Ability會收到onConfigurationUpdated回調。取值范圍: mcc:表示IMSI移動設備國家/地區代碼(MCC)發生變更。典型場景:檢測到SIM并更新MCC。 mnc:IMSI移動設備網絡代碼(MNC)發生變更。典型場景:檢測到SIM并更新MNC。 locale:表示語言區域發生變更。典型場景:用戶已為設備文本的文本顯示選擇新的語言類型。 layout:表示屏幕布局發生變更。典型場景:當前有不同的顯示形態都處于活躍狀態。 fontSize:表示字號發生變更。典型場景:用戶已設置新的全局字號。 orientation:表示屏幕方向發生變更。典型場景:用戶旋轉設備。 density:表示顯示密度發生變更。典型場景:用戶可能指定不同的顯示比例,或當前有不同的顯示形態同時處于活躍狀態。 size:顯示窗口大小發生變更。 smallestSize:顯示窗口較短邊的邊長發生變更。 colorMode:顏色模式發生變更。 | 字符串數組 | 可缺省,缺省為空。 |
mission | 標識Ability指定的任務棧。該標簽僅適用于page類型的Ability。默認情況下應用中所有Ability同屬一個任務棧。 | 字符串 | 可缺省,缺省為應用的包名。 |
targetAbility | 標識當前Ability重用的目標Ability。該標簽僅適用于page類型的Ability。如果配置了targetAbility屬性,則當前Ability(即別名Ability)的屬性中僅name、icon、label、visible、permissions、skills生效,其他屬性均沿用targetAbility中的屬性值。目標Ability必須與別名Ability在同一應用中,且在配置文件中目標Ability必須在別名之前進行聲明。 | 字符串 | 可缺省,缺省值為空。表示當前Ability不是一個別名Ability。 |
formsEnabled | 標識Ability是否支持卡片(forms)功能。該標簽僅適用于page類型的Ability。 true:支持卡片能力。 false:不支持卡片能力。 | 布爾值 | 可缺省,缺省值為false。 |
forms | 標識服務卡片的屬性。該標簽僅當formsEnabled為"true"時,才能生效。 | 對象數組 | 可缺省,缺省值為空。 |
srcLanguage | Ability開發語言的類型,開發者創建工程時由開發者手動選擇開發語言。取值如下:"js"、"ets"、"java"。 | 字符串 | 可缺省,缺省值為"js"。 |
srcPath | 該標簽標識Ability對應的JS組件代碼路徑,該標簽最大長度為127字節。 | 字符串 | 不可缺省。 |
uriPermission | 標識該Ability有權訪問的應用程序數據。此屬性由模式和路徑子屬性組成。此屬性僅對類型提供者的能力有效。 | 對象 | 可缺省,缺省值為空。 |
startWindowIcon | 標識該Ability啟動頁面圖標資源文件的索引。該標簽僅適用于page類型的Ability。取值示例:$media:icon。 | 字符串 | 可缺省,缺省值為空。 |
startWindowBackground | 標識該Ability啟動頁面背景顏色資源文件的索引。該標簽僅適用于page類型的Ability。取值示例:$color:red。 | 字符串 | 可缺省,缺省值為空。 |
removeMissionAfterTerminate | 該標簽標識Ability銷毀后是否從任務列表中移除任務。該標簽僅適用于page類型的Ability。true表示銷毀后移除任務, false表示銷毀后不移除任務。 | 布爾值 | 可缺省,缺省值為false。 |
不允許應用隱藏入口圖標
系統對無圖標應用實施嚴格管控,防止一些惡意應用故意配置無入口圖標,導致用戶找不到軟件所在的位置,無法操作卸載應用,在一定程度上保證用戶終端設備的安全。
入口圖標的設置: 需要在配置文件(config.json)中abilities配置下設置icon,label以及skills,而且skills的配置下必須同時包含“ohos.want.action.home” 和 “entity.system.home”。
{
"module":{
...
"abilities": [{
"icon": "$media:icon",
"label": "Login",
"skills": [{
"actions": ["ohos.want.action.home"],
"entities": ["entity.system.home"],
"uris": []
}]
}],
...
}
}
如果應用確需隱藏入口圖標,需要配置AllowAppDesktopIconHide應用特權,具體配置方式參考[應用特權配置指南]。詳細的入口圖標及入口標簽的顯示規則如下。
- HAP中包含Page類型的PageAbility
- 配置文件(config.json)中abilities配置中設置了入口圖標
- 該應用沒有隱藏圖標的特權
- 系統將使用該PageAbility配置的icon作為入口圖標,并顯示在桌面上。用戶點擊該圖標,頁面跳轉到該PageAbility首頁。
- 系統將使用該PageAbility配置的label作為入口標簽,并顯示在桌面上(如果沒有配置label,返回包名)。
- 該應用具有隱藏圖標的特權
- 桌面查詢時不返回應用信息,不會在桌面上顯示對應的入口圖標和標簽。
- 該應用沒有隱藏圖標的特權
- 配置文件(config.json)中abilities配置中未設置入口圖標
- 該應用沒有隱藏圖標的特權
- 系統將使用系統默認圖標作為入口圖標,并顯示在桌面上。用戶點擊該圖標,頁面跳轉到應用管理中對應的應用詳情頁面(參考下圖)。
- 系統將使用應用的包名作為入口標簽,并顯示在桌面上。
- 該應用具有隱藏圖標的特權
- 桌面查詢時不返回應用信息,不會在桌面上顯示對應的入口圖標和標簽。
- 該應用沒有隱藏圖標的特權
- 配置文件(config.json)中abilities配置中設置了入口圖標
- HAP中不包含Page類型的PageAbility
- 該應用沒有隱藏圖標的特權
- 系統將使用系統默認圖標作為入口圖標,并顯示在桌面上。用戶點擊該圖標,頁面跳轉到應用管理中對應的應用詳情頁面(參考下圖)。
- 系統將使用應用的包名作為入口標簽,并顯示在桌面上。
- 該應用具有隱藏圖標的特權
- 桌面查詢時不返回應用信息,不會在桌面上顯示對應的入口圖標和標簽。
- 該應用沒有隱藏圖標的特權
圖1 應用的詳情頁示意圖
注:應用詳情頁面中顯示的label可能與桌面上顯示的不同。如果非Page類型的PageAbility配置了入口圖標和label,那么詳情頁中顯示的即為配置的。
uriPermission對象的內部結構
表9****uriPermission對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
path | uriPermission標識的路徑,該標簽最大字節長度為255個字節。 | 字符串 | 不可缺省。 |
mode | uriPermission的匹配模式。 | 字符串 | 可缺省,缺省值為default。 |
abilities示例:
"abilities": [
{
"name": ".EntryAbility",
"description": "test main ability",
// $media:ic_launcher 為媒體類資源
"icon": "$media:ic_launcher",
// $string:example 為字符串類資源
"label": "$string:example",
"launchType": "multiton",
"orientation": "unspecified",
"permissions": [],
"visible": true,
"skills": [
{
"actions": [
"action.system.home"
],
"entities": [
"entity.system.home"
]
}
],
"configChanges": [
"locale",
"layout",
"fontSize",
"orientation"
],
"type": "page",
"startWindowIcon": "$media:icon",
"startWindowBackground": "$color:red",
"removeMissionAfterTerminate": true
},
{
"name": ".PlayService",
"description": "example play ability",
"icon": "$media:ic_launcher",
"label": "$string:example",
"launchType": "multiton",
"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.example.world.test.UserADataAbility",
"visible": true
}
]
skills對象的內部結構
表10****skills對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
actions | 標識能夠接收的want的action值,可以包含一個或多個action。取值通常為系統預定義的action值。 | 字符串數組 | 可缺省,缺省值為空。 |
entities | 標識能夠接收的want的Ability的類別(如視頻、桌面應用等),可以包含一個或多個entity。 | 字符串數組 | 可缺省,缺省值為空。 |
uris | 該標簽標識向want過濾器添加數據規范集合。該規范可以是只有數據類型(mimeType屬性),可以是只有URI,也可以是既有數據類型又有URI。 URI由其各個部分的單獨屬性指定:://:[ | ]。該標簽可缺省,缺省值為空。 其中,scheme字段配置為uri時必配;當只設置數據類型(mimeType)時,則scheme字段為非必配項。 |
uris對象的內部結構
表11****uris對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
scheme | 標識uri的scheme值。 | 字符串 | 不可缺省。 |
host | 標識uri的host值。 | 字符串 | 可缺省,缺省值為空。 |
port | 標識uri的port值。 | 字符串 | 可缺省,缺省值為空。 |
pathStartWith | 標識uri的pathStartWith值。 | 字符串 | 可缺省,缺省值為空。 |
path | 標識uri的path值。 | 字符串 | 可缺省,缺省值為空。 |
pathRegx | 標識uri的pathRegx值。 | 字符串 | 可缺省,缺省值為空。 |
type | 標識uri的type值。type為MIME-TYPE屬性,為資源的媒體類型,常見的類型有"audio/aac","text/css"等。 | 字符串 | 可缺省,缺省值為空。 |
skills示例:
"skills": [
{
"actions": [
"action.system.home"
],
"entities": [
"entity.system.home"
],
"uris": [
{
"scheme": "http",
"host": "www.example.com",
"port": "8080",
"path": "query/student/name",
"type": "text/*"
}
]
}
]
reqPermissions權限申請
表12****reqPermissions權限申請字段說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
name | 需要使用的權限名稱。 | 字符串 | 否 |
reason | 描述申請權限的原因。需要做多語種適配。 | 字符串 | 分情況:當申請的權限為user_grant時,必須填寫此字段,否則不允許在應用市場上架;其他權限可缺省,缺省為空 |
usedScene | 描述權限使用的場景和時機。場景類型如下兩種: - ability:ability的名稱,可配置多個。 - when:調用時機,可填的值有inuse(使用時)、always(始終)。 | 對象 | 可缺省,缺省值為空。 when可缺省,缺省值為"inuse" |
usedScene對象內部結構
表13****usedScene對象內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
ability | 標識哪些Ability需要此權限,里面配置Ability的名稱。 | 字符串數組 | 可以缺省,缺省表示所有Ability都需要此權限。 |
when | 標識此權限的使用時間: inuse: 使用時需要此權限。 always: 所有時間都需要此權限。 | 枚舉值 | 可缺省,缺省值為空。 |
js對象的內部結構
表14****js對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
name | 標識JS Component的名字。 | 字符串 | 不可缺省。 |
pages | 標識JS Component的頁面用于列舉JS Component中每個頁面的路由信息,格式為“頁面路徑+頁面名稱”。其中,頁面路徑是以當前Ability的srcPath字段取值為基準,例如srcPath取值為EntryAbility,則JS Component頁面路徑需要從EntryAbility的下一層開始描述。該標簽取值為數組,數組第一個元素代表JS FA首頁。 | 字符串數組 | 不可缺省。 |
window | 用于定義與顯示窗口相關的配置。 | 對象 | 可缺省,缺省值見表15。 |
type | 標識JS應用的類型。取值范圍如下: normal:標識該JS Component為應用實例。 form:標識該JS Component為卡片實例。 | 字符串 | 可缺省,缺省值為"normal"。 |
mode | 定義JS組件的開發模式。 | 對象 | 可缺省,缺省值為空。 |
window對象的內部結構
表15****window對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
designWidth | 標識頁面設計基準寬度。以此為基準,根據實際設備寬度來縮放元素大小。 | 數值 | 可缺省,缺省值為720px。 |
autoDesignWidth | 標識頁面設計基準寬度是否自動計算。當配置為true時,designWidth將會被忽略,設計基準寬度由設備寬度與屏幕密度計算得出。 | 布爾值 | 可缺省,缺省值為false。 |
mode對象的內部結構
表16****mode對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
type | 定義JS組件的功能類型。 | 字符串,取值為"pageAbility"、"form" | 可缺省,缺省值為pageAbility。 |
syntax | 定義JS組件的語法類型。 | 字符串,取值為"hml","ets" | 可缺省,默認值為"hml"。 |
js示例:
"js": [
{
"name": ".EntryAbility",
"pages": [
"pages/index",
"pages/detail/detail"
],
"window": {
"designWidth": 720,
"autoDesignWidth": false
},
"type": "form",
"mode": {
"syntax": "ets",
"type": "pageAbility"
}
}
]
shortcuts對象的內部結構
表17****shortcuts對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
shortcutId | 標識快捷方式的ID。字符串的最大長度為63字節。 | 字符串 | 不可缺省。 |
label | 標識快捷方式的標簽信息,即快捷方式對外顯示的文字描述信息。取值可以是描述性內容,也可以是標識label的資源索引。字符串最大長度為63字節。 | 字符串 | 可缺省,缺省為空。 |
icon | 標識快捷方式的圖標信息。取值為表示icon的資源索引。 | 字符串 | 可缺省,缺省為空。 |
intents | 標識快捷方式內定義的目標intent信息集合,每個intent可配置兩個子標簽,targetClass, targetBundle。 | 對象數組 | 可缺省,缺省為空。 |
intents對象的內部結構
表18****intents對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
targetClass | 標識快捷方式目標類名。 | 字符串 | 可缺省,缺省值為空。 |
targetBundle | 標識快捷方式目標Ability所在應用的包名。 | 字符串 | 可缺省,缺省值為空。 |
shortcuts示例:
"shortcuts": [
{
"shortcutId": "id",
// $string:shortcut 為配置的字符串資源值
"label": "$string:shortcut",
"intents": [
{
"targetBundle": "com.example.world.test",
"targetClass": "com.example.world.test.entry.EntryAbility"
}
]
}
]
forms對象的內部結構
表19****forms對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
name | 標識卡片的類名。字符串最大長度為127字節。 | 字符串 | 不可缺省。 |
description | 標識卡片的描述。取值可以是描述性內容,也可以是對描述性內容的資源索引,以支持多語言。字符串最大長度為255字節。 | 字符串 | 可缺省,缺省為空。 |
isDefault | 標識該卡片是否為默認卡片,每個Ability有且只有一個默認卡片。 true:默認卡片。 false:非默認卡片。 | 布爾值 | 不可缺省。 |
type | 標識卡片的類型。取值范圍如下: JS:JS卡片。 Java:Java卡片。 | 字符串 | 不可缺省。 |
colorMode | 標識卡片的主題樣式,取值范圍如下: auto:自適應。 dark:深色主題。 light:淺色主題。 | 字符串 | 可缺省,缺省值為"auto"。 |
supportDimensions | 標識卡片支持的外觀規格,取值范圍: 1 * 2:表示1行2列的二宮格。 2 * 1:表示2行1列的二宮格。 2 * 2:表示2行2列的四宮格。 2 * 4:表示2行4列的八宮格。 4 * 4:表示4行4列的十六宮格。 | 字符串數組 | 不可缺省。 |
defaultDimension | 標識卡片的默認外觀規格,取值必須在該卡片supportDimensions配置的列表中。 | 字符串 | 不可缺省。 |
updateEnabled | 標識卡片是否支持周期性刷新,取值范圍: true:表示支持周期性刷新,可以在定時刷新(updateDuration)和定點刷新(scheduledUpdateTime)兩種方式任選其一,優先選擇定時刷新。 false:表示不支持周期性刷新。 | 布爾類型 | 不可缺省。 |
scheduledUpdateTime | 標識卡片的定點刷新的時刻,采用24小時制,精確到分鐘。 | 字符串 | 可缺省,缺省值為"0:0"。 |
updateDuration | 標識卡片定時刷新的更新周期,單位為30分鐘,取值為自然數。 當取值為0時,表示該參數不生效。 當取值為正整數N時,表示刷新周期為30*N分鐘。 | 數值 | 可缺省,缺省值為"0"。 |
formConfigAbility | 標識用于調整卡片的設施或活動的名稱。 | 字符串 | 可缺省,缺省值為空。 |
jsComponentName | 標識JS卡片的Component名稱。字符串最大長度為127字節。僅當卡片類型為JS卡片時,需要配置該標簽。 | 字符串 | 可缺省,缺省值為空。 |
metaData | 標識卡片的自定義信息,包含customizeData數組標簽。 | 對象 | 可缺省,缺省值為空。 |
formVisibleNotify | 標識是否允許卡片使用卡片可見性通知。 true:允許。 false:不允許。 | 布爾值 | 可缺省,缺省值為false。 |
customizeData對象內部結構
表20****customizeData對象內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
name | 標識數據項的鍵名稱。字符串最大長度為255字節。 | 字符串 | 可缺省,缺省值為空。 |
value | 標識數據項的值。字符串最大長度為255字節。 | 字符串 | 可缺省,缺省值為空。 |
extra | 標識當前custom數據的格式,取值為表示extra的資源值。 | 字符串 | 可缺省,缺省值為空。 |
forms示例:
"forms": [
{
"name": "Form_Js",
"description": "It's Js Form",
"type": "JS",
"jsComponentName": "card",
"colorMode": "auto",
"isDefault": true,
"updateEnabled": true,
"scheduledUpdateTime": "11:00",
"updateDuration": 1,
"defaultDimension": "2*2",
"supportDimensions": [
"2*2",
"2*4",
"4*4"
]
},
{
"name": "Form_Js",
"description": "It's JS Form",
"type": "Js",
"colorMode": "auto",
"isDefault": false,
"updateEnabled": true,
"scheduledUpdateTime": "21:05",
"updateDuration": 1,
"defaultDimension": "1*2",
"supportDimensions": [
"1*2"
],
"landscapeLayouts": [
"$layout:ability_form"
],
"portraitLayouts": [
"$layout:ability_form"
],
"formConfigAbility": "ability://com.example.myapplication.fa/.EntryAbility",
"metaData": {
"customizeData": [
{
"name": "originWidgetName",
"value": "com.example.weather.testWidget"
}
]
}
}
]
distroFilter對象的內部結構
表21****distroFilter對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
apiVersion | 標識支持的apiVersion范圍。 | 對象數組 | 可缺省,缺省值為空。 |
screenShape | 標識屏幕形狀的支持策略。 | 對象數組 | 可缺省,缺省值為空。 |
screenWindow | 標識應用運行時窗口的分辨率支持策略。該字段僅支持對輕量級智能穿戴設備進行配置。 | 對象數組 | 可缺省,缺省值為空。 |
screenDensity | 標識屏幕的像素密度(dpi:Dots Per Inch)。 | 對象數組 | 可缺省,缺省值為空。 |
countryCode | 標識分發應用時的國家碼。具體值參考ISO-3166-1的標準,支持多個國家和地區的枚舉定義。 | 對象數組 | 可缺省,缺省值為空。 |
apiVersion對象的內部結構
表22****apiVersion對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
policy | 標識該子屬性取值規則。配置為“exclude”或“include”。 - exclude:表示需要排除的value屬性。 - include:表示需要包含的value屬性。 | 字符串 | 不可缺省。 |
value | 支持的取值為API Version存在的整數值,例如4、5、6。場景示例:某應用,針對相同設備型號,同時在網的為使用API 5和API 6開發的兩個軟件版本,則允許上架2個entry類型的安裝包,分別支持到對應設備側軟件版本的分發。 | 數組 | 不可缺省。 |
screenShape對象的內部結構
表23****screenShape對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
policy | 標識該子屬性取值規則。配置為“exclude”或“include”。 - exclude:表示需要排除的value屬性。 - include:表示需要包含的value屬性。 | 字符串 | 不可缺省。 |
value | 支持的取值為API Version存在的整數值,例如4、5、6。場景示例:某應用,針對相同設備型號,同時在網的為使用API 5和API 6開發的兩個軟件版本,則允許上架2個entry類型的安裝包,分別支持到對應設備側軟件版本的分發。 | 數組 | 不可缺省。 |
screenWindow對象的內部結構
表24****screenWindow對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
policy | 標識該子屬性取值規則。配置為“exclude”或“include”。 - exclude:表示需要排除的value屬性。 - include:表示需要包含的value屬性。 | 字符串 | 不可缺省。 |
value | 支持的取值為API Version存在的整數值,例如4、5、6。場景示例:某應用,針對相同設備型號,同時在網的為使用API 5和API 6開發的兩個軟件版本,則允許上架2個entry類型的安裝包,分別支持到對應設備側軟件版本的分發。 | 數組 | 不可缺省。 |
screenDensity對象的內部結構
表25****screenDensity對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
policy | 標識該子屬性取值規則。配置為“exclude”或“include”。 - exclude:表示需要排除的value屬性。 - include:表示需要包含的value屬性。 | 字符串 | 不可缺省。 |
value | 取值范圍如下: sdpi:表示小規模的屏幕密度(Small-scale Dots Per Inch),適用于dpi取值為(0,120]的設備。 mdpi:表示中規模的屏幕密度(Medium-scale Dots Per Inch),適用于dpi取值為(120,160]的設備。 ldpi:表示大規模的屏幕密度(Large-scale Dots Per Inch),適用于dpi取值為(160,240]的設備。 xldpi:表示特大規模的屏幕密度(Extra Large-scale Dots Per Inch),適用于dpi取值為(240,320]的設備。 xxldpi:表示超大規模的屏幕密度(Extra Extra Large-scale Dots Per Inch),適用于dpi取值為(320,480]的設備。 xxxldpi:表示超特大規模的屏幕密度(Extra Extra Extra Large-scale Dots Per Inch),適用于dpi取值為(480,640]的設備。 | 數組 | 不可缺省。 |
countryCode對象的內部結構
表26****countryCode對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
policy | 標識該子屬性取值規則。配置為“exclude”或“include”。 - exclude:表示需要排除的value屬性。 - include:表示需要包含的value屬性。 | 字符串 | 不可缺省。 |
value | 該標簽標識應用需要分發的國家碼,標簽為字符串數組,子串表示支持的國家或地區,由兩個大寫字母表示。 | 字符串數組 | 不可缺省。 |
distroFilter示例:
"distroFilter": {
"apiVersion": {
"policy": "include",
"value": [4,5]
},
"screenShape": {
"policy": "include",
"value": ["circle","rect"]
},
"screenWindow": {
"policy": "include",
"value": ["454*454","466*466"]
},
"screenDensity":{
"policy": "exclude",
"value": ["ldpi","xldpi"]
},
"countryCode": {
"policy":"include",
"value":["CN","HK"]
}
}
commonEvents對象的內部結構
表27****commonEvents對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
name | 標識靜態公共事件名稱,該標簽最大長度為127字節。 | 字符串 | 不可缺省。 |
permission | 此標簽標識實現靜態公共事件所需要申請的權限,該標簽最大長度為255字節。 | 字符串 | 可缺省,缺省值為空。 |
data | 標識配置當前靜態公共事件要攜帶的附加數據數組。 | 字符串數組 | 可缺省,缺省值為空。 |
type | 該標簽用于配置當前靜態公共事件的分類數組。 | 字符串數組 | 可缺省,缺省值為空。 |
events | 此標簽標識可接收的意圖的一組事件值。一般由系統預定義,也可以自定義。 | 字符串數組 | 不可缺省。 |
commonEvents示例:
"commonEvents": [
{
"name": ".EntryAbility",
"permission": "ohos.permission.GET_BUNDLE_INFO",
"data": [
"com.example.demo",
"100"
],
"events": [
"install",
"update"
]
}
]
testRunner對象的內部結構
表28****testRunner對象的內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
name | 標識測試框架對象名稱,該標簽最大長度為255字節。 | 字符串 | 不可缺省。 |
srcPath | 標識測試框架代碼路徑,該標簽最大長度為255字節。 | 字符串 | 不可缺省。 |
"testRunner": {
"name": "myTestRunnerName",
"srcPath": "etc/test/TestRunner.ts"
}
`HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`
definePermission僅支持系統應用配置,三方應用配置不生效。
definePermissions對象內部結構
表29****definePermissions對象內部結構說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
name | 標識權限的名稱,該標簽最大長度為255字節。 | 字符串 | 不可缺省。 |
grantMode | 標識權限的授予方式,支持如下兩種授予模式如下: - system_grant:安裝后系統自動授予該權限。 - user_grant:使用時動態申請,用戶授權后才可使用。 | 字符串 | 可缺省,缺省值為system_grant。 |
availableLevel | 標識權限限制類別,可選值如下: - system_core:系統核心權限。 - system_basic:系統基礎權限。 - normal:普通權限。所有應用允許申請的權限。 | 字符串 | 可缺省,缺省值為normal。 |
provisionEnable | 標識權限是否支持證書方式申請權限,包括高級別的權限。配置為true標識開發者可以通過provision方式申請權限。 | 布爾值 | 可缺省,缺省值為true。 |
distributedSceneEnabled | 標識權限是否支持分布式場景下使用該權限。 | 布爾值 | 可缺省,缺省值為false。 |
label | 標識權限的簡短描述,配置為對描述內容的資源索引。 | 字符串 | 可缺省,缺省值為空。 |
description | 標識權限的詳細描述,可以是字符串(最大長度為255字節),或者為對描述內容的資源索引。 | 字符串 | 可缺省,缺省值為空。 |
審核編輯 黃宇
-
組件
+關注
關注
1文章
505瀏覽量
17805 -
鴻蒙
+關注
關注
57文章
2311瀏覽量
42747
發布評論請先 登錄
相關推薦
評論