配置文件的差異
FA模型應用在[config.json文件]中描述應用的基本信息,一個應用工程中可以創建多個Module,每個Module中都有一份config.json文件。config.json由app、deviceConfig和module三部分組成,app標簽用于配置應用級別的屬性,如果一個應用有多個Module,需要由開發者保證各個config.json文件中app標簽配置的一致性。
Stage模型應用在[app.json5]和[module.json]文件中描述應用的基本信息,和FA模型應用類似,一個Stage模型應用工程中同樣可以創建多個Module,但是一個應用工程中僅存在一份app.json5,用于配置應用級別的屬性,對每個Module都生效;每個Module中都有一份module.json5配置文件,用于配置Module級別的屬性,僅對當前Module生效。 開發前請熟悉鴻蒙開發指導文檔 :gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
點擊或者復制轉到。
圖1 配置文件差異
app.json5配置文件
配置文件示例
先通過一個示例,整體認識一下app.json5配置文件。
{
"app": {
"bundleName": "com.application.myapplication",
"vendor": "example",
"versionCode": 1000000,
"versionName": "1.0.0",
"icon": "$media:app_icon",
"label": "$string:app_name",
"description": "$string:description_application",
"minAPIVersion": 9,
"targetAPIVersion": 9,
"apiReleaseType": "Release",
"debug": false,
"car": {
"minAPIVersion": 8
},
"targetBundleName": "com.application.test",
"targetPriority": 50,
"appEnvironments": [
{
"name":"name1",
"value": "value1"
}
],
"maxChildProcess": 5,
"multiAppMode": {
"multiAppModeType": "multiInstance",
"maxCount": 5
}
},
}
配置文件標簽
app.json5配置文件包含以下標簽。
表1 app.json5配置文件標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
bundleName | 標識應用的Bundle名稱,用于標識應用的唯一性。命名規則如下 : - 由字母、數字、下劃線和符號“.”組成,且必須以字母開頭。 - 字符串最小長度為7字節,最大長度128字節。 - 推薦采用反域名形式命名(如“com.example.demo”,建議第一級為域名后綴com,第二級為廠商/個人名,第三級為應用名,也可以多級)。 對于隨系統源碼編譯的應用,建議命名為“com.ohos.demo”形式,其中的ohos標識系統應用。 | 字符串 | 該標簽不可缺省。 |
bundleType | 標識應用的Bundle類型,用于區分應用或者原子化服務。支持的取值如下: - app:當前Bundle為應用。 - atomicService:當前Bundle為原子化服務。 - shared:當前Bundle為共享庫應用,預留字段。 - appService:當前Bundle為系統級共享庫應用,僅供系統應用使用。 | 字符串 | 該標簽可缺省,缺省值為app。 |
debug | 標識應用是否可調試。 - true:可以進行斷點調試。 - false:不可以進行斷點調試。 | 布爾值 | 由IDE編譯構建時生成。該標簽可缺省,缺省值為false。 |
icon | 標識[應用的圖標],取值為圖標資源文件的索引。 | 字符串 | 該標簽不可缺省。 |
label | 標識[應用的名稱],取值為字符串資源的索引,字符串長度不超過63字節。 | 字符串 | 該標簽不可缺省。 |
description | 標識應用的描述信息。取值為長度不超過255字節的字符串,內容為描述信息的字符串資源索引。 | 字符串 | 該標簽可缺省,缺省值為空。 |
vendor | 標識對應用開發廠商的描述,取值為長度不超過255字節的字符串。 | 字符串 | 該標簽可缺省,缺省值為空。 |
versionCode | 標識應用的版本號,取值為小于2^31次方的正整數。此數字僅用于確定某個版本是否比另一個版本更新,數值越大表示版本越高。 開發者可以將該值設置為任何正整數,但是必須確保應用的新版本都使用比舊版本更大的值。 | 數值 | 該標簽不可缺省。 |
versionName | 標識向用戶展示的應用版本號。 取值為長度不超過127字節的字符串,僅由數字和點構成,推薦采用“A.B.C.D”四段式的形式。四段式推薦的含義如下所示。 第一段:主版本號/Major,范圍0 | 字符串 | 該標簽不可缺省。 |
minCompatibleVersionCode | 標識應用能夠兼容的最低歷史版本號,用于應用跨設備兼容性判斷。取值范圍為0~2147483647。 | 數值 | 該標簽可缺省,缺省值等于versionCode標簽值。 |
minAPIVersion | 標識應用運行需要的SDK的API最小版本。取值范圍為0~2147483647。 | 數值 | 應用編譯構建時由build-profile.json5中的compatibleSdkVersion自動生成。 |
targetAPIVersion | 標識應用運行需要的API目標版本。取值范圍為0~2147483647。 | 數值 | 應用編譯構建時由build-profile.json5中的compileSdkVersion自動生成。 |
apiReleaseType | 標識應用運行需要的API目標版本的類型,采用字符串類型表示。取值為“CanaryN”、“BetaN”或者“Release”,其中,N代表大于零的整數。 - Canary:受限發布的版本。 - Beta:公開發布的Beta版本。 - Release:公開發布的正式版本。 | 字符串 | 應用編譯構建時根據當前使用的SDK的Stage自動生成。即便手動配置了取值,編譯構建時也會被覆蓋。 |
accessible | 標識應用是否能訪問應用的安裝目錄,僅針對Stage模型的系統應用和預置應用生效。 | 布爾值 | 該標簽可缺省,缺省值為false。 |
multiProjects | 標識當前工程是否支持多個工程的聯合開發。 - true:當前工程支持多個工程的聯合開發。多工程開發可參考[多工程構建]。 - false:當前工程不支持多個工程的聯合開發。 | 布爾值 | 該標簽可缺省,缺省值為false。 |
asanEnabled | 標識應用程序是否開啟asan檢測,用于輔助定位buffer越界造成的crash問題。 - true:當前工程開啟asan檢測。 - false:當前工程不開啟asan檢測。 | 布爾值 | 該標簽可缺省,缺省值為false。 |
tablet | 標識對tablet設備做的特殊配置,可以配置的屬性字段有上文提到的:minAPIVersion。 如果使用該屬性對tablet設備做了特殊配置,則應用在tablet設備中會采用此處配置的屬性值,并忽略在app.json5公共區域配置的屬性值。 | 對象 | 該標簽可缺省,缺省時tablet設備使用app.json5公共區域配置的屬性值。 |
tv | 標識對tv設備做的特殊配置,可以配置的屬性字段有上文提到的:minAPIVersion。 如果使用該屬性對tv設備做了特殊配置,則應用在tv設備中會采用此處配置的屬性值,并忽略在app.json5公共區域配置的屬性值。 | 對象 | 該標簽可缺省,缺省時tv設備使用app.json5公共區域配置的屬性值。 |
wearable | 標識對wearable設備做的特殊配置,可以配置的屬性字段有上文提到的:minAPIVersion。 如果使用該屬性對wearable設備做了特殊配置,則應用在wearable設備中會采用此處配置的屬性值,并忽略在app.json5公共區域配置的屬性值。 | 對象 | 該標簽可缺省,缺省時wearable設備使用app.json5公共區域配置的屬性值。 |
car | 標識對car設備做的特殊配置,可以配置的屬性字段有上文提到的:minAPIVersion。 如果使用該屬性對car設備做了特殊配置,則應用在car設備中會采用此處配置的屬性值,并忽略在app.json5公共區域配置的屬性值。 | 對象 | 該標簽可缺省,缺省時car設備使用app.json5公共區域配置的屬性值。 |
default | 標識對default設備做的特殊配置,可以配置的屬性字段有上文提到的:minAPIVersion。 如果使用該屬性對default設備做了特殊配置,則應用在default設備中會采用此處配置的屬性值,并忽略在app.json5公共區域配置的屬性值。 | 對象 | 該標簽可缺省,缺省時default設備使用app.json5公共區域配置的屬性值。 |
targetBundleName | 標識當前包所指定的目標應用, 標簽值的取值規則和范圍與bundleName標簽一致。配置該字段的應用為具有overlay特征的應用。 | 字符串 | 該標簽可缺省,缺省值為空。 |
targetPriority | 標識當前應用的優先級,取值范圍為1~100。配置targetBundleName字段之后,才支持配置該字段。 | 數值 | 該標簽可缺省, 缺省值為1。 |
generateBuildHash | 標識當前應用的所有HAP和HSP是否由打包工具生成哈希值。 該字段配置為true時,該應用下的所有HAP和HSP都會由打包工具生成對應的哈希值。系統OTA升級時,若應用的versionCode保持不變,可根據哈希值判斷應用是否需要升級。**說明:**該字段僅對預置應用生效。 | 布爾值 | 該標簽可缺省, 缺省值為false。 |
GWPAsanEnabled | 標識應用程序是否開啟GWP-asan堆內存檢測工具,用于對內存越界、內存釋放后使用等內存破壞問題進行分析。 - true:當前工程開啟GWP-asan檢測。 - false:當前工程不開啟GWP-asan檢測。 | 布爾值 | 該標簽可缺省, 缺省值為false。 |
[appEnvironments] | 標識當前模塊配置的應用環境變量。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
maxChildProcess | 標識當前應用自身可創建的子進程的最大個數,取值范圍為0到512,0表示不限制,當應用有多個模塊時,以entry模塊的配置為準。 | 數值 | 該標簽可缺省,缺省時使用系統配置的默認值。 |
[multiAppMode] | 標識當前應用配置的多開模式。僅bundleType為app的應用的entry或feature模塊配置有效,存在多個模塊時,以entry模塊的配置為準。 | 對象 | 該標簽可缺省,缺省值為空。 |
appEnvironments標簽
此標簽標識應用配置的環境變量。
表1 appEnvironments標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
name | 標識環境變量的變量名稱。取值為長度不超過4096字節的字符串。 | 字符串 | 該標簽可缺省,缺省值為空。 |
value | 標識環境變量的值。取值為長度不超過4096字節的字符串。 | 字符串 | 該標簽可缺省,缺省值為空。 |
appEnvironments標簽示例:
{
"app": {
"appEnvironments": [
{
"name":"name1",
"value": "value1"
}
]
}
}
multiAppMode標簽
應用多開模式。
表1 multiAppMode標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
multiAppModeType | 標識應用多開模式類型,支持的取值如下: - multiInstance:多實例模式。 - appClone:應用分身模式。 | 字符串 | 該標簽可缺省,缺省值為空。 |
maxCount | 標識最大允許的應用多開個數,支持的取值如下: - multiInstance模式:取值范圍1 | 數值 | 該標簽可缺省,缺省值為0。 |
multiAppMode標簽示例:
{
"app": {
"multiAppMode": {
"multiAppModeType": "appClone",
"maxCount": 5
}
}
}
module.json5配置文件
配置文件示例
先通過一個示例,整體認識一下module.json5配置文件。
{
"module": {
"name": "entry",
"type": "entry",
"description": "$string:module_desc",
"mainElement": "EntryAbility",
"deviceTypes": [
"default",
"tablet"
],
"deliveryWithInstall": true,
"installationFree": false,
"pages": "$profile:main_pages",
"virtualMachine": "ark",
"appStartup": "$profile:app_startup_config",
"metadata": [
{
"name": "string",
"value": "string",
"resource": "$profile:distributionFilter_config"
}
],
"abilities": [
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ets",
"description": "$string:EntryAbility_desc",
"icon": "$media:icon",
"label": "$string:EntryAbility_label",
"startWindowIcon": "$media:icon",
"startWindowBackground": "$color:start_window_background",
"exported": true,
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"ohos.want.action.home"
]
}
],
"continueType": [
"continueType1"
]
}
],
"definePermissions": [
{
"name": "ohos.abilitydemo.permission.PROVIDER",
"grantMode": "system_grant",
"availableLevel": "system_core",
"provisionEnable": true,
"distributedSceneEnable": false,
"label": "$string:EntryAbility_label"
}
],
"requestPermissions": [
{
"name": "ohos.abilitydemo.permission.PROVIDER",
"reason": "$string:reason",
"usedScene": {
"abilities": [
"FormAbility"
],
"when": "inuse"
}
}
],
"targetModuleName": "feature",
"targetPriority": 50,
"querySchemes": [
"app1Scheme",
"app2Scheme"
],
"routerMap": "$profile:router_map",
"appEnvironments": [
{
"name": "name1",
"value": "value1"
}
],
"hnpPackages": [
{
"package": "hnpsample.hnp",
"type": "public"
}
]
}
}
配置文件標簽
module.json5配置文件包含以下標簽。
表1 module.json5配置文件標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
name | 標識當前Module的名稱,確保該名稱在整個應用中唯一。取值為長度不超過31字節的字符串,不支持中文。 應用升級時允許修改該名稱,但需要應用適配Module相關數據目錄的遷移,詳見[文件管理接口]。 | 字符串 | 該標簽不可缺省。 |
type | 標識當前Module的類型。支持的取值如下: - entry:應用的主模塊。 - feature:應用的動態特性模塊。 - har:靜態共享包模塊。 - shared:動態共享包模塊。 | 字符串 | 該標簽不可缺省。 |
srcEntry | 標識當前Module所對應的代碼路徑,取值為長度不超過127字節的字符串。 | 字符串 | 該標簽可缺省,缺省值為空。 |
description | 標識當前Module的描述信息,取值為長度不超過255字節的字符串,可以采用字符串資源索引格式。 | 字符串 | 該標簽可缺省,缺省值為空。 |
process | 標識當前Module的進程名,取值為長度不超過31字節的字符串。如果在HAP標簽下配置了process,則該應用的所有UIAbility、DataShareExtensionAbility、ServiceExtensionAbility都運行在該進程中。**說明:**僅支持系統應用配置,三方應用配置不生效。 | 字符串 | 該標簽可缺省,缺省為app.json5文件下app標簽下的bundleName。 |
mainElement | 標識當前Module的入口UIAbility名稱或者ExtensionAbility名稱,取值為長度不超過255字節的字符串。 | 字符串 | 該標簽可缺省,缺省值為空。 |
[deviceTypes] | 標識當前Module可以運行在哪類設備上。 | 字符串數組 | 該標簽不可缺省。 |
deliveryWithInstall | 標識當前Module是否在用戶主動安裝的時候安裝,即該Module對應的HAP是否跟隨應用一起安裝。 - true:主動安裝時安裝。 - false:主動安裝時不安裝。 | 布爾值 | 該標簽不可缺省。 |
installationFree | 標識當前Module是否支持免安裝特性。 - true:表示支持免安裝特性,且符合免安裝約束。 - false:表示不支持免安裝特性。**說明:**當[bundleType]為原子化服務時,該字段需要配置為true。反之,該字段需要配置為false。 | 布爾值 | 該標簽不可缺省。 |
virtualMachine | 標識當前Module運行的目標虛擬機類型,供云端分發使用,如應用市場和分發中心。如果目標虛擬機類型為ArkTS引擎,則其值為“ark+版本號”。 | 字符串 | 該標簽由IDE構建HAP的時候自動插入。 |
[pages]( | 標識當前Module的profile資源,用于列舉每個頁面信息,取值為長度不超過255字節的字符串。 | 字符串 | 在有UIAbility的場景下,該標簽不可缺省。 |
[metadata] | 標識當前Module的自定義元信息,可通過資源引用的方式配置[distributionFilter]、[shortcuts]等信息。只對當前Module、UIAbility、ExtensionAbility生效。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
[abilities] | 標識當前Module中UIAbility的配置信息,只對當前UIAbility生效。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
[extensionAbilities]( | 標識當前Module中ExtensionAbility的配置信息,只對當前ExtensionAbility生效。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
[definePermissions]( | 標識系統資源hap定義的權限,不支持應用自定義權限。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
[requestPermissions] | 標識當前應用運行時需向系統申請的權限集合。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
[testRunner] | 標識用于測試當前Module的測試框架的配置。 | 對象 | 該標簽可缺省,缺省值為空。 |
[atomicService] | 標識當前應用是原子化服務時,有關原子化服務的相關配置。 | 對象 | 該標簽可缺省,缺省值為空。 |
[dependencies] | 標識當前模塊運行時依賴的共享庫列表。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
targetModuleName | 標識當前包所指定的目標module,確保該名稱在整個應用中唯一。取值為長度不超過31字節的字符串,不支持中文。配置該字段的Module具有overlay特性。僅在動態共享包(HSP)中適用。 | 字符串 | 該標簽可缺省,缺省值為空。 |
targetPriority | 標識當前Module的優先級,取值范圍為1~100。配置targetModuleName字段之后,才需要配置該字段。僅在動態共享包(HSP)中適用。 | 整型數值 | 該標簽可缺省,缺省值為1。 |
[proxyData] | 標識當前Module提供的數據代理列表。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
isolationMode | 標識當前Module的多進程配置項。支持的取值如下: - nonisolationFirst:優先在非獨立進程中運行。 - isolationFirst:優先在獨立進程中運行。 - isolationOnly:只在獨立進程中運行。 - nonisolationOnly:只在非獨立進程中運行。 | 字符串 | 該標簽可缺省,缺省值為nonisolationFirst。 |
generateBuildHash | 標識當前HAP/HSP是否由打包工具生成哈希值。當配置為true時,如果系統OTA升級時應用versionCode保持不變,可根據哈希值判斷應用是否需要升級。 該字段僅在[app.json5文件]中的generateBuildHash字段為false時使能。**說明:**該字段僅對預置應用生效。 | 布爾值 | 該標簽可缺省,缺省值為false。 |
compressNativeLibs | 標識libs庫是否以壓縮存儲的方式打包到HAP。 - true:libs庫以壓縮方式存儲。 - false:libs庫以不壓縮方式存儲。 | 布爾值 | 該標簽可缺省,缺省值為false。 |
libIsolation | 用于區分同應用不同HAP下的.so文件,以防止.so沖突。 - true:當前HAP的.so文件會儲存在libs目錄中以Module名命名的路徑下。 - false:當前HAP的.so文件會直接儲存在libs目錄中。 | 布爾值 | 該標簽可缺省,缺省值為false。 |
fileContextMenu | 標識當前HAP的右鍵菜單配置項。取值為長度不超過255字節的字符串。 | 字符串 | 該標簽可缺省,缺省值為空。 |
querySchemes | 標識允許當前應用進行跳轉查詢的URL schemes,只允許entry類型模塊配置,最多50個,每個字符串取值不超過128字節。 | 字符串數組 | 該標簽可缺省,缺省值為空。 |
[routerMap]( | 標識當前模塊配置的路由表路徑。取值為長度不超過255字節的字符串。 | 字符串 | 該標簽可缺省,缺省值為空。 |
[appEnvironments]( | 標識當前模塊配置的應用環境變量,只允許entry和feature模塊配置。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
appStartup | 標識當前Module啟動框架配置路徑,僅在Entry中生效。 | 字符串 | 該標簽可缺省,缺省值為空。 |
[hnpPackages] | 標識當前應用包含的Native軟件包信息。只允許entry類型模塊配置。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
deviceTypes標簽
表2 deviceTypes標簽說明
設備類型 | 枚舉值 | 說明 |
---|---|---|
平板 | tablet | - |
智慧屏 | tv | - |
智能手表 | wearable | 系統能力較豐富的手表,具備電話功能。 |
車機 | car | - |
默認設備 | default | 能夠使用全部系統能力的設備。 |
deviceTypes示例:
{
"module": {
"name": "myHapName",
"type": "feature",
"deviceTypes" : [
"tablet"
]
}
}
pages標簽
該標簽是一個profile文件資源,用于指定描述頁面信息的配置文件。
{
"module": {
// ...
"pages": "$profile:main_pages", // 通過profile下的資源文件配置
}
}
在開發視圖的resources/base/profile下面定義配置文件main_pages.json,其中文件名"main_pages"可自定義,需要和pages標簽指定的信息對應。配置文件中列舉了當前應用組件中的頁面信息,包含頁面的路由信息和顯示窗口相關的配置。
表3 pages標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
src | 標識當前Module中所有頁面的路由信息,包括頁面路徑和頁面名稱。其中,頁面路徑是以當前Module的src/main/ets為基準。該標簽取值為一個字符串數組,其中每個元素表示一個頁面。 | 字符串數組 | 該標簽不可缺省。 |
window | 標識用于定義與顯示窗口相關的配置。 | 對象 | 該標簽可缺省,缺省值為空。 |
表4 window標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
designWidth | 標識頁面設計基準寬度。以此為基準,根據實際設備寬度來縮放元素大小。 | 數值 | 可缺省,缺省值為720px。 |
autoDesignWidth | 標識頁面設計基準寬度是否自動計算。當配置為true時,designWidth將會被忽略,設計基準寬度由設備寬度與屏幕密度計算得出。 | 布爾值 | 可缺省,缺省值為false。 |
{
"src": [
"pages/index/mainPage",
"pages/second/payment",
"pages/third/shopping_cart",
"pages/four/owner"
],
"window": {
"designWidth": 720,
"autoDesignWidth": false
}
}
metadata標簽
該標簽標識HAP的自定義元信息,標簽值為數組類型,包含name、value、resource三個子標簽。
表5 metadata標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
name | 標識數據項的名稱,取值為長度不超過255字節的字符串。 | 字符串 | 該標簽可缺省,缺省值為空。 |
value | 標識數據項的值,取值為長度不超過255字節的字符串。 | 字符串 | 該標簽可缺省,缺省值為空。 |
resource | 標識定義用戶自定義數據格式,取值為長度不超過255字節的字符串,內容為標識該數據的資源索引。 | 字符串 | 該標簽可缺省,缺省值為空。 |
resource屬性值使用“profile:文件名”的方式指定文件所在位置,profile:文件名”的方式指定文件所在位置,profile表示資源的路徑為工程中的/resources/base/profile目錄下。例如$profile:shortcuts_config指定了/resources/base/profile/shortcuts_config.json文件。
{
"module": {
"metadata": [{
"name": "module_metadata",
"value": "a test demo for module metadata",
"resource": "$profile:shortcuts_config"
}],
"abilities": [{
"metadata": [{
"name": "ability_metadata",
"value": "a test demo for ability",
"resource": "$profile:config_file"
},
{
"name": "ability_metadata_2",
"value": "a string test",
"resource": "$profile:config_file"
}],
}],
"extensionAbilities": [{
"metadata": [{
"name": "extensionAbility_metadata",
"value": "a test for extensionAbility",
"resource": "$profile:config_file"
},
{
"name": "extensionAbility_metadata_2",
"value": "a string test",
"resource": "$profile:config_file"
}],
}]
}
}
abilities標簽
abilities標簽描述UIAbility組件的配置信息,標簽值為數組類型,該標簽下的配置只對當前UIAbility生效。
表6 abilities標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
name | 標識當前UIAbility組件的名稱,確保該名稱在整個應用中唯一。取值為長度不超過127字節的字符串,不支持中文。 | 字符串 | 該標簽不可缺省。 |
srcEntry | 標識入口UIAbility的代碼路徑,取值為長度不超過127字節的字符串。 | 字符串 | 該標簽不可缺省。 |
[launchType] | 標識當前UIAbility組件的啟動模式,支持的取值如下: - multiton:多實例模式,每次啟動創建一個新實例。 - singleton:單實例模式,僅第一次啟動創建新實例。 - specified:指定實例模式,運行時由開發者決定是否創建新實例。 | 字符串 | 該標簽可缺省,該標簽缺省為“singleton”。 |
description | 標識當前UIAbility組件的描述信息,取值為長度不超過255字節的字符串。要求采用描述信息的資源索引,以支持多語言。 | 字符串 | 該標簽可缺省,缺省值為空。 |
icon | 標識當前UIAbility組件的圖標,取值為圖標資源文件的索引。 | 字符串 | 該標簽可缺省,缺省值為空。 如果UIAbility被配置為MainElement,該標簽必須配置。 |
label | 標識當前UIAbility組件對用戶顯示的名稱,要求采用該名稱的資源索引,以支持多語言。取值為長度不超過255字節的字符串。 | 字符串 | 該標簽可缺省,缺省值為空。 如果UIAbility被配置為MainElement,該標簽必須配置。 |
permissions | 標識當前UIAbility組件自定義的權限信息。當其他應用訪問該UIAbility時,需要申請相應的權限信息。 一個數組元素為一個權限名稱。通常采用反向域名格式(不超過255字節),取值為系統預定義的權限。 | 字符串數組 | 該標簽可缺省,缺省值為空。 |
[metadata] | 標識當前UIAbility組件的元信息。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
exported | 標識當前UIAbility組件是否可以被其他應用調用。 - true:表示可以被其他應用調用。 - false:表示不可以被其他應用調用,包括無法被aa工具命令拉起應用。 | 布爾值 | 該標簽可缺省,缺省值為false。 |
continuable | 標識當前UIAbility組件是否支持跨端遷移。 - true:表示支持遷移。 - false:表示不支持遷移。 | 布爾值 | 該標簽可缺省,缺省值為false。 |
skills | 標識當前UIAbility組件或ExtensionAbility組件能夠接收的Want特征集,為數組格式。 配置規則: - 對于Entry類型的HAP,應用可以配置多個具有入口能力的skills標簽(即配置了ohos.want.action.home和entity.system.home)。 - 對于Feature類型的HAP,只有應用可以配置具有入口能力的skills標簽,服務不允許配置。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
backgroundModes | 標識當前UIAbility組件的長時任務集合,指定用于滿足特定類型的長時任務。 長時任務類型有如下: - dataTransfer:通過網絡/對端設備進行數據下載、備份、分享、傳輸等。 - audioPlayback:音頻播放。 - audioRecording:錄音。 - location:定位、導航。 - bluetoothInteraction:藍牙掃描、連接、傳輸(穿戴)。 - multiDeviceConnection:多設備互聯。 - wifiInteraction:Wi-Fi掃描、連接、傳輸(克隆多屏)。 - voip:音視頻電話、VoIP。 - taskKeeping:計算。 | 字符串數組 | 該標簽可缺省,缺省值為空。 |
startWindowIcon | 標識當前UIAbility組件啟動頁面圖標資源文件的索引,取值為長度不超過255字節的字符串。 | 字符串 | 該標簽不可缺省。 |
startWindowBackground | 標識當前UIAbility組件啟動頁面背景顏色資源文件的索引,取值為長度不超過255字節的字符串。 取值示例:$color:red。 | 字符串 | 該標簽不可缺省。 |
removeMissionAfterTerminate | 標識當前UIAbility組件銷毀后,是否從任務列表中移除任務。 - true表示銷毀后移除任務。 - false表示銷毀后不移除任務。 | 布爾值 | 該標簽可缺省,缺省值為false。 |
orientation | 標識當前UIAbility組件啟動時的方向。支持的取值如下: - unspecified:未指定方向,由系統自動判斷顯示方向。 - landscape:橫屏。 - portrait:豎屏。 - follow_recent:跟隨背景窗口的旋轉模式。 - landscape_inverted:反向橫屏。 - portrait_inverted:反向豎屏。 - auto_rotation:隨傳感器旋轉。 - auto_rotation_landscape:傳感器橫屏旋轉,包括橫屏和反向橫屏。 - auto_rotation_portrait:傳感器豎屏旋轉,包括豎屏和反向豎屏。 - auto_rotation_restricted:傳感器開關打開,方向可隨傳感器旋轉。 - auto_rotation_landscape_restricted:傳感器開關打開,方向可隨傳感器旋轉為橫屏, 包括橫屏和反向橫屏。 - auto_rotation_portrait_restricted:傳感器開關打開,方向隨可傳感器旋轉為豎屏, 包括豎屏和反向豎屏。 - locked:傳感器開關關閉,方向鎖定。 - auto_rotation_unspecified:受開關控制和由系統判定的自動旋轉模式。 - follow_desktop:跟隨桌面的旋轉模式。 | 字符串 | 該標簽可缺省,缺省值為unspecified。 |
supportWindowMode | 標識當前UIAbility組件所支持的窗口模式。支持的取值如下: - fullscreen:全屏模式。 - split:分屏模式。 - floating:懸浮窗模式。 | 字符串數組 | 該標簽可缺省,缺省值為 ["fullscreen", "split", "floating"]。 |
priority | 標識當前UIAbility組件的優先級。[隱式查詢]時,優先級越高,UIAbility在返回列表越靠前。取值范圍0~10,數值越大,優先級越高。**說明:**僅支持系統應用配置,三方應用配置不生效。 | 整型數值 | 該標簽可缺省,缺省值為0。 |
maxWindowRatio | 標識當前UIAbility組件支持的最大的寬高比。該標簽最小取值為0。 | 數值 | 該標簽可缺省,缺省值為平臺支持的最大的寬高比。 |
minWindowRatio | 標識當前UIAbility組件支持的最小的寬高比。該標簽最小取值為0。 | 數值 | 該標簽可缺省,缺省值為平臺支持的最小的寬高比。 |
maxWindowWidth | 標識當前UIAbility組件支持的最大的窗口寬度,寬度單位為vp。 最小取值為minWindowWidth,最大取值為平臺支持的最大窗口寬度。窗口尺寸可以參考[窗口大小限制]。 | 數值 | 該標簽可缺省,缺省值為平臺支持的最大的窗口寬度。 |
minWindowWidth | 標識當前UIAbility組件支持的最小的窗口寬度, 寬度單位為vp。 最小取值為平臺支持的最小窗口寬度,最大取值為maxWindowWidth。窗口尺寸可以參考[窗口大小限制]。 | 數值 | 該標簽可缺省,缺省值為平臺支持的最小的窗口寬度。 |
maxWindowHeight | 標識當前UIAbility組件支持的最大的窗口高度, 高度單位為vp。 最小取值為minWindowHeight,最大取值為平臺支持的最大窗口高度。 窗口尺寸可以參考[窗口大小限制]。 | 數值 | 該標簽可缺省,缺省值為平臺支持的最大的窗口高度。 |
minWindowHeight | 標識當前UIAbility組件支持的最小的窗口高度, 高度單位為vp。 最小取值為平臺支持的最小窗口高度,最大取值為maxWindowHeight。窗口尺寸可以參考[窗口大小限制]。 | 數值 | 該標簽可缺省,缺省值為平臺支持的最小的窗口高度。 |
excludeFromMissions | 標識當前UIAbility組件是否在最近任務列表中顯示。 - true:表示不在任務列表中顯示。 - false:表示在任務列表中顯示。**說明:**僅支持系統應用配置,且需申請應用特權AllowAbilityExcludeFromMissions,三方應用配置不生效, | 布爾值 | 該標簽可缺省,缺省值為false。 |
recoverable | 標識當前UIAbility組件是否支持在檢測到應用故障后,恢復到應用原界面。 - true:支持檢測到出現故障后,恢復到原界面。 - false:不支持檢測到出現故障后,恢復到原界面。 | 布爾值 | 該標簽可缺省,缺省值為false。 |
unclearableMission | 標識當前UIAbility組件是否支持從最近任務列表中移除。 - true:表示在任務列表中不可移除。 - false:表示在任務列表中可以移除。**說明:**單獨配置該字段不可生效,需要申請對應的[AllowMissionNotCleared]特權之后,該字段才能生效。 | 布爾值 | 該標簽可缺省,缺省值為false。 |
isolationProcess | 標識組件能否運行在獨立的進程中。 - true:表示能運行在獨立的進程中。 - false:表示不能運行在獨立的進程中。 | 布爾值 | 該標簽可缺省,缺省值為false。 |
excludeFromDock | 標識當前UIAbility組件是否支持從dock區域隱藏圖標。 - true:表示在dock區域隱藏。 - false:表示不能在dock區域隱藏。 | 布爾值 | 該標簽可缺省,缺省值為false。 |
preferMultiWindowOrientation | 標識當前UIAbility組件多窗布局方向: - default:缺省值,參數不配置默認值,建議其他應用類配置。 - portrait:多窗布局方向為豎向,建議豎向游戲類應用配置。 - landscape:多窗布局方向為橫向,配置后支持橫屏懸浮窗和上下分屏,建議橫向游戲類應用配置。 - landscape_auto:多窗布局動態可變為橫向,需要配合API enableLandScapeMultiWindow/disableLandScapeMultiWindow使用,建議視頻類應用配置。 | 字符串 | 該標簽可缺省,缺省值為default。 |
continueType | 標識當前UIAbility組件的跨端遷移類型。 | 字符串數組 | 該標簽可缺省,缺省值為當前組件的名稱。 |
abilities示例:
{
"abilities": [{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ets",
"launchType":"singleton",
"description": "$string:description_main_ability",
"icon": "$media:icon",
"label": "Login",
"permissions": [],
"metadata": [],
"exported": true,
"continuable": true,
"skills": [{
"actions": ["ohos.want.action.home"],
"entities": ["entity.system.home"],
"uris": []
}],
"backgroundModes": [
"dataTransfer",
"audioPlayback",
"audioRecording",
"location",
"bluetoothInteraction",
"multiDeviceConnection",
"wifiInteraction",
"voip",
"taskKeeping"
],
"startWindowIcon": "$media:icon",
"startWindowBackground": "$color:red",
"removeMissionAfterTerminate": true,
"orientation": " ",
"supportWindowMode": ["fullscreen", "split", "floating"],
"maxWindowRatio": 3.5,
"minWindowRatio": 0.5,
"maxWindowWidth": 2560,
"minWindowWidth": 1400,
"maxWindowHeight": 300,
"minWindowHeight": 200,
"excludeFromMissions": false,
"unclearableMission": false,
"excludeFromDock": false,
"preferMultiWindowOrientation": "default",
"isolationProcess": false,
"continueType": [
"continueType1",
"continueType2"
]
}]
}
skills標簽
該標簽標識UIAbility組件或者ExtensionAbility組件能夠接收的[Want]的特征。
表7 skills標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
actions | 標識能夠接收的Action值集合,取值通常為系統預定義的action值,也允許自定義。 | 字符串數組 | 該標簽可缺省,缺省值為空。 |
entities | 標識能夠接收的Entity值的集合。 | 字符串數組 | 該標簽可缺省,缺省值為空。 |
uris | 標識與Want中URI(Uniform Resource Identifier)相匹配的集合。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
permissions | 標識當前UIAbility組件自定義的權限信息。當其他應用訪問該UIAbility時,需要申請相應的權限信息。 一個數組元素為一個權限名稱。通常采用反向域名格式(不超過255字節),取值為系統預定義的權限。 | 字符串數組 | 該標簽可缺省,缺省值為空。 |
domainVerify | 標識是否開啟域名校驗。 | 布爾值 | 該標簽可缺省,缺省值為false。 |
表8 uris標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
scheme | 標識URI的協議名部分,常見的有http、https、file、ftp等。 | 字符串 | uris中僅配置type時可以缺省,缺省值為空,否則不可缺省。 |
host | 標識URI的主機地址部分,該字段在scheme存在時才有意義。常見的方式: - 域名方式,如example.com。 - IP地址方式,如10.10.10.1。 | 字符串 | 該標簽可缺省,缺省值為空。 |
port | 標識URI的端口部分。如http默認端口為80,https默認端口是443,ftp默認端口是21。該字段在scheme和host都存在時才有意義。 | 字符串 | 該標簽可缺省,缺省值為空。 |
path | pathStartWith | pathRegex | 標識URI的路徑部分,path、pathStartWith和pathRegex配置時三選一。path標識URI與want中的路徑部分全匹配,pathStartWith標識URI與want中的路徑部分允許前綴匹配,pathRegex標識URI與want中的路徑部分允許正則匹配。該字段在scheme和host都存在時才有意義。 |
type | 標識與Want相匹配的數據類型,使用MIME(Multipurpose Internet Mail Extensions)類型規范和[UniformDataType]類型規范。可與scheme同時配置,也可以單獨配置。 | 字符串 | 該標簽可缺省,缺省值為空。 |
utd | 標識與Want相匹配的[標準化數據類型],適用于分享等場景。 | 字符串 | 該標簽可缺省,缺省值為空。 |
maxFileSupported | 對于指定類型的文件,標識一次能接收或打開的最大數量,適用于分享等場景,需要與utd配合使用。 | 整數 | 該標簽可缺省,缺省值為0。 |
linkFeature | 標識URI提供的功能類型(如文件打開、分享、導航等),用于實現應用間跳轉。取值為長度不超過127字節的字符串,不支持中文。 | 字符串 | 該標簽可缺省,缺省值為空。 |
skills示例:
{
"abilities": [
{
"skills": [
{
"actions": [
"ohos.want.action.home"
],
"entities": [
"entity.system.home"
],
"uris": [
{
"scheme":"http",
"host":"example.com",
"port":"80",
"path":"path",
"type": "text/*",
"linkFeature": "login"
}
],
"permissions": [],
"domainVerify": false
}
]
}
]
}
extensionAbilities標簽
描述extensionAbilities的配置信息,標簽值為數組類型,該標簽下的配置只對當前extensionAbilities生效。
表9 extensionAbilities標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
name | 標識當前ExtensionAbility組件的名稱,確保該名稱在整個應用中唯一,取值為長度不超過127字節的字符串。 | 字符串 | 該標簽不可缺省。 |
srcEntry | 標識當前ExtensionAbility組件所對應的代碼路徑,取值為長度不超過127字節的字符串。 | 字符串 | 該標簽不可缺省。 |
description | 標識當前ExtensionAbility組件的描述,取值為長度不超過255字節的字符串,可以是對描述內容的資源索引,用于支持多語言。 | 字符串 | 該標簽可缺省,缺省值為空。 |
icon | 標識當前ExtensionAbility組件的圖標,取值為資源文件的索引。如果ExtensionAbility組件被配置為MainElement,該標簽必須配置。 | 字符串 | 該標簽可缺省,缺省值為空。 |
label | 標識當前ExtensionAbility組件對用戶顯示的名稱,取值為該名稱的資源索引,以支持多語言,字符串長度不超過255字節。如果ExtensionAbility被配置當前Module的mainElement時,該標簽必須配置,且要確保應用內唯一。 | 字符串 | 該標簽可缺省,缺省值為空。 |
type | 標識當前ExtensionAbility組件的類型,支持的取值如下: - form:卡片的ExtensionAbility。 - workScheduler:延時任務的ExtensionAbility。 - inputMethod:輸入法的ExtensionAbility。 - service:后臺運行的service組件。 - accessibility:輔助能力的ExtensionAbility。 - fileAccess:公共數據訪問的ExtensionAbility,允許應用程序提供文件和文件夾給文件管理類應用展示。 - dataShare:數據共享的ExtensionAbility。 - staticSubscriber:靜態廣播的ExtensionAbility。 - wallpaper:壁紙的ExtensionAbility。 - backup:數據備份的ExtensionAbility。 - window:該ExtensionAbility會在啟動過程中創建一個window,為開發者提供界面開發。開發者開發出來的界面將通過UIExtensionComponent控件組合到其他應用的窗口中。 - thumbnail:獲取文件縮略圖的ExtensionAbility,開發者可以對自定義文件類型的文件提供縮略。 - preview:該ExtensionAbility會將文件解析后在一個窗口中顯示,開發者可以通過將此窗口組合到其他應用窗口中。 - print:打印框架的ExtensionAbility。 - push:推送的ExtensionAbility。 - driver:驅動框架的ExtensionAbility。 - remoteNotification:遠程通知的ExtensionAbility。 - remoteLocation:遠程定位的ExtensionAbility。 - voip:網絡音視頻通話的ExtensionAbility。 - action:自定義操作業務模板的ExtensionAbility,為開發者提供基于UIExtension的自定義操作業務模板 - adsService:廣告業務的ExtensionAbility,提供廣告業務框架。 - embeddedUI:嵌入式UI擴展能力,提供跨進程界面嵌入的能力。 - insightIntentUI:為開發者提供能被小藝意圖調用,以窗口形態呈現內容的擴展能力。 - ads:廣告業務的ExtensionAbility,與AdComponent控件組合使用,將廣告頁面展示到其他應用中。僅支持設備廠商使用。 - photoEditor:圖片編輯業務的ExtensionAbility,為開發者提供基于UIExtension的圖片編輯業務模版。 - appAccountAuthorization:應用帳號授權擴展能力的ExtensionAbility,用于處理帳號授權請求,比如帳號登錄授權。 - autoFill/password:用于賬號和密碼自動填充業務的ExtensionAbility,支持數據的保存、填充能力。 - hms/account:應用帳號管理能力的ExtensionAbility。 - sysDialog/atomicServicePanel:提供構建原子化服務服務面板的基礎能力的ExtensionAbility,使用時基于UIExtensionAbility實現。 - sysDialog/userAuth:本地用戶鑒權的ExtensionAbility。 - sysDialog/common:通用彈窗的ExtensionAbility。 - sysDialog/power:關機重啟彈窗的ExtensionAbility。 - sysDialog/print:打印模態彈窗的ExtensionAbility。 - sysDialog/meetimeCall:暢連通話的ExtensionAbility。 - sysDialog/meetimeContact:暢連聯系人的ExtensionAbility。 - sysPicker/meetimeMessage:暢連消息的ExtensionAbility。 - sysPicker/meetimeContact:暢連聯系人列表的ExtensionAbility。 - sysPicker/meetimeCallLog:暢連通話記錄列表的ExtensionAbility。 - sysPicker/share:系統分享的ExtensionAbility。 - sysPicker/mediaControl:投播組件的ExtensionAbility。 - sysPicker/photoPicker:三方應用通過對應的UIExtensionType拉起圖庫picker界面。 - sysPicker/filePicker:文件下載彈窗的ExtensionAbility。 - sysPicker/audioPicker:音頻管理彈窗的ExtensionAbility。 - sysPicker/photoEditor:圖片編輯彈窗的ExtensionAbility。 - sys/commonUI:非通用的ExtensionAbility,提供業務屬性強相關的嵌入式顯示或彈框。 - autoFill/smart:用于情景化場景自動填充業務的ExtensionAbility,支持數據的保存、填充能力。**說明:**其中service、adsService、sys/commonUI、fileAccess、sysDialog類型、sysPicker類型和dataShare類型,僅支持系統應用配置,三方應用配置不生效。 | 字符串 | 該標簽不可缺省。 |
permissions | 標識當前ExtensionAbility組件自定義的權限信息。當其他應用訪問該ExtensionAbility時,需要申請相應的權限信息。 一個數組元素為一個權限名稱。通常采用反向域名格式(最大255字節),取值為[系統預定義的權限]。 | 字符串數組 | 該標簽可缺省,缺省值為空。 |
readPermission | 標識讀取當前ExtensionAbility組件數據所需的權限,取值為長度不超過255字節的字符串。僅當ExtensionAbility組件的type為dataShare時支持配置該標簽。 | 字符串 | 該標簽可缺省,缺省值為空。 |
writePermission | 標識向當前ExtensionAbility組件寫數據所需的權限,取值為長度不超過255字節的字符串。僅當ExtensionAbility組件的type為dataShare時支持配置該標簽。 | 字符串 | 該標簽可缺省,缺省值為空。 |
uri | 標識當前ExtensionAbility組件提供的數據URI,取值為長度不超過255字節的字符數組,用反向域名的格式表示。**說明:**該標簽在type為dataShare類型的ExtensionAbility時,不可缺省。 | 字符串 | 該標簽可缺省,缺省值為空。 |
skills | 標識當前ExtensionAbility組件能夠接收的[Want]的特征集。 配置規則:entry包可以配置多個具有入口能力的skills標簽(配置了ohos.want.action.home和entity.system.home)的ExtensionAbility,其中第一個配置了skills標簽的ExtensionAbility中的label和icon作為服務或應用的label和icon。**說明:**服務的Feature包不能配置具有入口能力的skills標簽。 應用的Feature包可以配置具有入口能力的skills標簽。 | 數組 | 該標簽可缺省,缺省值為空。 |
[metadata] | 標識當前ExtensionAbility組件的元信息。 | 對象 | 該標簽可缺省,缺省值為空。 |
exported | 標識當前ExtensionAbility組件是否可以被其他應用調用。 - true:表示可以被其他應用調用。 - false:表示不可以被其他應用調用,包括無法被aa工具命令拉起應用。 | 布爾值 | 該標簽可缺省,缺省值為false。 |
extensionProcessMode | 標識當前ExtensionAbility組件的多進程實例模型,當前只對UIExtensionAbility以及從UIExtensionAbility擴展的ExtensionAbility生效。 - instance:表示該ExtensionAbility每個實例一個進程。 - type:表示該ExtensionAbility實例都運行在同一個進程里,與其他ExtensionAbility分離進程。 - bundle:表示該ExtensionAbility實例都運行在應用統一進程里,與其他配置了bundle模型的ExtensionAbility共進程。 | 字符串 | 該標簽可缺省,缺省值為空。 |
dataGroupIds | 標識當前ExtensionAbility組件的dataGroupId集合。如果當前ExtensionAbility組件所在的應用在[HarmonyAppProvision配置文件]的data-group-ids字段中也聲明了某個dataGroupId,那么當前ExtensionAbility組件可以和應用共享這一個dataGroupId生成的目錄,所以ExtensionAbility組件的dataGroupId需要是應用的HarmonyAppProvision配置文件的data-group-ids字段里配置的才能生效。 且該字段僅在當前ExtensionAbility組件存在獨立的沙箱目錄時生效。 | 字符串數組 | 該標簽可缺省,缺省值為空。 |
extensionAbilities示例:
{
"extensionAbilities": [
{
"name": "FormName",
"srcEntry": "./form/MyForm.ts",
"icon": "$media:icon",
"label" : "$string:extension_name",
"description": "$string:form_description",
"type": "form",
"permissions": ["ohos.abilitydemo.permission.PROVIDER"],
"readPermission": "",
"writePermission": "",
"exported": true,
"uri":"scheme://authority/path/query",
"skills": [{
"actions": [],
"entities": [],
"uris": [],
"permissions": []
}],
"metadata": [
{
"name": "ohos.extension.form",
"resource": "$profile:form_config",
}
],
"extensionProcessMode": "instance",
"dataGroupIds": [
"testGroupId1"
]
}
]
}
requestPermissions標簽
該標簽標識應用運行時需向系統申請的權限集合
說明:
- 在requestPermissions標簽中配置的權限項將在應用級別生效,即該權限適用于整個應用程序。
- 如果應用需要訂閱自己發布的事件,而且應用在extensionAbilities標簽中的permissions字段中設置了訪問該應用所需要的權限,那么應用也需要在requestPermissions標簽中注冊相關權限才能收到該事件。
- 生態治理中,要求受限的權限必須要校驗usedScene,但是在HAR/HSP中沒有usedScene/ability,會影響構建出包,所以HAR/HSP包中不再校驗這個邏輯。
表10 requestPermissions標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
name | 標識需要使用的權限名稱。 | 字符串 | 該標簽不可缺省。 |
reason | 標識申請權限的原因,取值需要采用資源引用格式,以適配多語種。 | 字符串 | 該標簽可缺省,缺省值為空。**說明:**當申請的權限為user_grant權限時,該字段必填,否則不允許在應用市場上架。 |
usedScene | 標識權限使用的場景,包含abilities和when兩個子標簽。 - abilities:可以配置為多個UIAbility或者ExtensionAbility名稱的字符串數組。 - when:表示調用時機,支持的取值包括inuse(使用時)和always(始終)。 | 對象 | 該標簽可缺省,缺省值為空。**說明:**HAR/HSP的場景下對于受限的權限不再校驗usedScene權限。當申請的權限為user_grant權限時,abilities標簽在hap中必填,when標簽可選。 |
requestPermissions示例:
{
"module" : {
"requestPermissions": [
{
"name": "ohos.abilitydemo.permission.PROVIDER",
"reason": "$string:reason",
"usedScene": {
"abilities": [
"EntryFormAbility"
],
"when": "inuse"
}
}
]
}
}
shortcuts標簽
shortcuts標識應用的快捷方式信息。標簽值為數組,包含四個子標簽shortcutId、label、icon、wants。
metadata中指定shortcut信息,其中:
- name:指定shortcuts的名稱,使用ohos.ability.shortcuts作為shortcuts信息的標識。
- resource:指定shortcuts信息的資源位置。
表11 shortcuts標簽說明
屬性名稱 | 含義 | 類型 | 是否可缺省 |
---|---|---|---|
shortcutId | 標識快捷方式的ID,取值為長度不超過63字節的字符串。 | 字符串 | 該標簽不可缺省。 |
label | 標識快捷方式的標簽信息,即快捷方式對外顯示的文字描述信息。取值為長度不超過255字節的字符串,可以是描述性內容,也可以是標識label的資源索引。 | 字符串 | 該標簽可缺省,缺省值為空。 |
icon | 標識快捷方式的圖標,取值為資源文件的索引。 | 字符串 | 該標簽可缺省,缺省值為空。 |
[wants] | 標識快捷方式內定義的目標wants信息集合,在調用launcherBundleManager的startShortcut接口時,會拉起wants標簽里的第一個目標組件,推薦只配置一個wants元素。 | 對象 | 該標簽可缺省,缺省為空。 |
- 在/resources/base/profile/目錄下配置shortcuts_config.json配置文件。
{ "shortcuts": [ { "shortcutId": "id_test1", "label": "$string:shortcut", "icon": "$media:aa_icon", "wants": [ { "bundleName": "com.ohos.hello", "moduleName": "entry", "abilityName": "EntryAbility", "parameters": { "testKey": "testValue" } } ] } ] }
- 在module.json5配置文件的abilities標簽中,針對需要添加快捷方式的UIAbility進行配置metadata標簽,使shortcut配置文件對該UIAbility生效。
{ "module": { // ... "abilities": [ { "name": "EntryAbility", "srcEntry": "./ets/entryability/EntryAbility.ets", // ... "skills": [ { "entities": [ "entity.system.home" ], "actions": [ "ohos.want.action.home" ] } ], "metadata": [ { "name": "ohos.ability.shortcuts", "resource": "$profile:shortcuts_config" } ] } ] } }
wants標簽
此標簽用于標識快捷方式內定義的目標wants信息集合。
表11-1 wants標簽說明
屬性名稱 | 含義 | 類型 | 是否可缺省 |
---|---|---|---|
bundleName | 表示快捷方式的目標包名。 | 字符串 | 該標簽不可缺省。 |
moduleName | 表示快捷方式的目標模塊名。 | 字符串 | 該標簽不可缺省。 |
abilityName | 表示快捷方式的目標組件名。 | 字符串 | 該標簽不可缺省。 |
parameters | 表示拉起快捷方式時的自定義數據,僅支持配置字符串類型的數據。其中鍵值均最大支持1024長度的字符串。 | 對象 | 該標簽可缺省。 |
data標簽示例:
{
"wants": [
{
"bundleName": "com.ohos.hello",
"moduleName": "entry",
"abilityName": "EntryAbility",
"parameters": {
"testKey": "testValue"
}
}
]
}
distributionFilter標簽
該標簽用于定義HAP對應的細分設備規格的分發策略,以便在應用市場進行云端分發應用包時做精準匹配。
說明: 該標簽從API10及以后版本開始生效,API9及以前版本使用distroFilter標簽。
適用場景: 當一個工程中存在多個Entry,且多個Entry配置的deviceTypes存在交集時,則需要通過該標簽進行區分。比如下面的兩個Entry都支持tablet類型,就需要通過該標簽進行區分。
// entry1支持的設備類型 { "module": { "name": "entry1", "type": "entry", "deviceTypes" : [ "tv", "tablet" ] } }
// entry2支持的設備類型 { "module": { "name": "entry2", "type": "entry", "deviceTypes" : [ "car", "tablet" ] } }
配置規則: 該標簽支持配置四個屬性,包括屏幕形狀([screenShape])、窗口分辨率([screenWindow])、屏幕像素密度([screenDensity] )、設備所在國家與地區([countryCode]),詳見下表。
在分發應用包時,通過deviceTypes與這四個屬性的匹配關系,唯一確定一個用于分發到設備的HAP。- 如果需要配置該標簽,則至少包含一個屬性。
- 如果一個Entry中配置了任意一個或多個屬性,則其他Entry也必須包含相同的屬性。
- screenShape和screenWindow屬性僅用于輕量級智能穿戴設備。
配置方式: 該標簽需要配置在/resources/base/profile資源目錄下,并在metadata的resource字段中引用。
表12 distributionFilter標簽配置說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
[screenShape] | 標識屏幕形狀的支持策略。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
[screenWindow] | 標識應用運行時的窗口分辨率的支持策略。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
[screenDensity] | 標識屏幕的像素密度(dpi:Dot Per Inch)的支持策略。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
[countryCode]( | 標識國家與地區的支持策略,取值參考ISO-3166-1標準。支持多個國家和地區枚舉定義。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
screenShape標簽
表13 screenShape標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
policy | 標識條件屬性的過濾規則。 - exclude:表示需要排除的value屬性。 - include:表示需要包含的value屬性。 | 字符串 | 該標簽不可缺省。 |
value | 支持的取值為circle(圓形)、rect(矩形)。例如,針對智能穿戴設備,可為圓形表盤和矩形表盤分別提供不同的HAP。 | 字符串數組 | 該標簽不可缺省。 |
screenWindow標簽
表14 screenWindow標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
policy | 標識條件屬性的過濾規則。當前取值僅支持“include”。 - include:表示需要包含的value屬性。 | 字符串 | 該標簽不可缺省。 |
value | 單個字符串的取值格式為“寬 * 高”,取值為整數像素值,例如“454 * 454”。 | 字符串數組 | 該標簽不可缺省。 |
screenDensity標簽
表15 screenDensity標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
policy | 標識條件屬性的過濾規則。 - exclude:表示需要排除的value屬性。 - include:表示需要包含的value屬性。 | 字符串 | 該標簽不可缺省。 |
value | 標識屏幕的像素密度(dpi :Dot Per Inch)。支持的取值如下: - 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標簽
表16 countryCode標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
policy | 標識條件屬性的過濾規則。 - exclude:表示需要排除的value屬性。 - include:表示需要包含的value屬性。 | 字符串 | 該標簽不可缺省。 |
value | 標識應用需要分發的國家地區碼。 | 字符串數組 | 該標簽不可缺省。 |
示例如下:
- 在開發視圖的resources/base/profile下面定義配置文件distributionFilter_config.json,文件名可以自定義。
{ "distributionFilter": { "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" ] } } }
- 在module.json5配置文件的module標簽中定義metadata信息。
{ "module": { // ... "metadata": [ { "name": "ohos.module.distribution", "resource": "$profile:distributionFilter_config", } ] } }
testRunner標簽
此標簽用于支持對測試框架的配置。
表17 testRunner標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
name | 標識測試框架對象名稱,取值為長度不超過255字節的字符串。 | 字符串 | 不可缺省。 |
srcPath | 標識測試框架代碼路徑,取值為長度不超過255字節的字符串。 | 字符串 | 不可缺省。 |
testRunner標簽示例:
{
"module": {
// ...
"testRunner": {
"name": "myTestRunnerName",
"srcPath": "etc/test/TestRunner.ts"
}
}
}
atomicService標簽
此標簽用于支持對原子化服務的配置。此標簽僅在app.json中bundleType指定為atomicService時使能。
表18 atomicService標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
preloads | 標識原子化服務中預加載列表。 | 對象數組 | 該標簽可缺省,缺省值為空。 |
表19 preloads標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
moduleName | 標識原子化服務中當前模塊被加載時,需預加載的模塊名。不能配置自身modulename,且必須有對應的模塊,取值為長度不超過31字節的字符串。 | 字符串 | 該標簽不可缺省。 |
atomicService標簽示例:
{
"module": {
"atomicService": {
"preloads":[
{
"moduleName":"feature"
}
]
}
}
}
dependencies標簽
此標簽標識模塊運行時依賴的共享庫列表。
表20 dependencies標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
bundleName | 標識當前模塊依賴的共享包包名。取值為長度7~128字節的字符串。 | 字符串 | 該標簽可缺省,缺省值為空。 |
moduleName | 標識當前模塊依賴的共享包模塊名。取值為長度不超過31字節的字符串。 | 字符串 | 該標簽不可缺省。 |
versionCode | 標識當前共享包的版本號。取值范圍為0~2147483647。 | 數值 | 該標簽可缺省,缺省值為空。 |
dependencies標簽示例:
{
"module": {
"dependencies": [
{
"bundleName":"com.share.library",
"moduleName": "library",
"versionCode": 10001
}
]
}
}
proxyData標簽
此標簽標識模塊提供的數據代理列表,僅限entry和feature配置。
表21 proxyData標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
uri | 標識用于訪問該數據代理的URI,不同的數據代理配置的URI不可重復,且需要滿足datashareproxy://當前應用包名/xxx 的格式。取值為長度不超過255字節的字符串。 | 字符串 | 該標簽不可缺省。 |
requiredReadPermission | 標識從該數據代理中讀取數據所需要的權限,若不配置,則其他應用無法使用該代理。非系統應用配置的權限的等級需為system_basic或system_core,系統應用配置的權限的等級沒有限制。取值為長度不超過255字節的字符串。 | 字符串 | 該標簽可缺省,缺省值為空。 |
requiredWritePermission | 標識向該數據代理中寫入數據所需要的權限,若不配置,則其他應用無法使用該代理。非系統應用配置的權限的等級需為system_basic或system_core,系統應用配置的權限的等級沒有限制。取值為長度不超過255字節的字符串。 | 字符串 | 該標簽可缺省,缺省值為空。 |
[metadata] | 標識該數據代理的元信息,只支持配置name和resource字段。 | 對象 | 該標簽可缺省,缺省值為空。 |
proxyData標簽示例:
{
"module": {
"proxyData": [
{
"uri":"datashareproxy://com.ohos.datashare/event/Meeting",
"requiredReadPermission": "ohos.permission.GET_BUNDLE_INFO",
"requiredWritePermission": "ohos.permission.GET_BUNDLE_INFO",
"metadata": {
"name": "datashare_metadata",
"resource": "$profile:datashare"
}
}
]
}
}
routerMap標簽
此標簽標識模塊配置的路由表的路徑。
routerMap配置文件描述模塊的路由表信息,routerMap標簽值為數組類型。
表22 routerMap標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
name | 標識跳轉頁面的名稱。取值為長度不超過1023字節的字符串。 | 字符串 | 該標簽不可缺省。 |
pageSourceFile | 標識頁面在模塊內的路徑。取值為長度不超過31字節的字符串。 | 字符串 | 該標簽不可缺省。 |
buildFunction | 標識被@Builder修飾的函數,該函數描述頁面的UI。取值為長度不超過1023字節的字符串。 | 字符串 | 該標簽不可缺省。 |
[data] | 標識自定義數據,總長度不超過4096。 | 對象 | 該標簽可缺省,缺省值為空。 |
示例如下:
- 在開發視圖的resources/base/profile下面定義配置文件,文件名可以自定義,例如:router_map.json。
{ "routerMap": [ { "name": "DynamicPage1", "pageSourceFile": "src/main/ets/pages/pageOne.ets", "buildFunction": "myFunction" }, { "name": "DynamicPage2", "pageSourceFile": "src/main/ets/pages/pageTwo.ets", "buildFunction": "myBuilder", "data": { "key1": "data1", "key2": "data2" } } ] }
- 在module.json5配置文件的module標簽中定義
routerMap
字段,指向定義的路由表配置文件,例如:"routerMap": "$profile:router_map"
。
data標簽
此標簽用于支持在路由表中配置自定義數據。 data對象內部,可以填入自定義數據。
data標簽示例:
{
"routerMap": [
{
"name": "DynamicPage",
"pageSourceFile": "src/main/ets/pages/pageOne.ets",
"buildFunction": "myBuilder",
"data": {
"stringKey": "data1",
"numberKey": 123,
"booleanKey": true,
"objectKey": {
"name": "test"
},
"arrayKey": [
{
"id": 123
}
]
}
}
]
}
appEnvironments標簽
此標簽標識模塊配置的應用環境變量。
表23 appEnvironments標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
name | 標識環境變量的變量名稱。取值為長度不超過4096字節的字符串。 | 字符串 | 該標簽可缺省,缺省值為空。 |
value | 標識環境變量的值。取值為長度不超過4096字節的字符串。 | 字符串 | 該標簽可缺省,缺省值為空。 |
appEnvironments標簽示例:
{
"module": {
"appEnvironments": [
{
"name":"name1",
"value": "value1"
}
]
}
}
definePermissions標簽
該標簽僅支持系統資源hap定義權限,不支持應用自定義權限。
表24 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 | 標識權限的詳細描述,可以是字符串,或者是對描述內容的資源索引。 | 字符串 | 可缺省,缺省值為空。 |
definePermissions標簽示例:
{
"module" : {
"definePermissions": [
{
{
"name": "ohos.abilitydemo.permission.PROVIDER",
"grantMode": "system_grant",
"availableLevel": "system_core",
"provisionEnable": true,
"distributedSceneEnable": false,
"label": "$string:EntryAbility_label"
}
}
]
}
}
hnpPackages標簽
該標簽標識應用包含的Native軟件包信息。
表10 hnpPackages標簽說明
屬性名稱 | 含義 | 數據類型 | 是否可缺省 |
---|---|---|---|
package | 標識Native軟件包名稱。 | 字符串 | 該標簽不可缺省。 |
type | 標識Native軟件包類型。支持的取值如下: - public:公有類型。 - private:私有類型。 | 字符串 | 該標簽不可缺省。HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 |
hnpPackages示例:
{
"module" : {
"hnpPackages": [
{
"package": "hnpsample.hnp",
"type": "public"
}
]
}
}
審核編輯 黃宇
-
框架
+關注
關注
0文章
403瀏覽量
17543 -
模型
+關注
關注
1文章
3317瀏覽量
49234 -
鴻蒙
+關注
關注
57文章
2393瀏覽量
43068
發布評論請先 登錄
相關推薦
評論