官术网_书友最值得收藏!

1.6 應用配置文件

1.6.1 配置文件介紹

應用的每個HAP的根目錄下都存在一個config.json配置文件,如圖1.42所示,主要涵蓋以下3個方面:

圖1.42 config.json資源文件

(1)應用的全局配置信息,包含應用的包名、生產廠商、版本號等基本信息。

(2)應用在具體設備上的配置信息。

(3)HAP包的配置信息,包含每個Ability必須定義的基本屬性(如包名、類名、類型及Ability提供的能力),以及應用訪問系統或其他應用受保護部分所需的權限等。

config.json由屬性和值兩部分構成,屬性出現順序不分先后,且每個屬性最多只允許出現一次。每個屬性的值為JSON的基本數據類型(數值、字符串、布爾值、數組、對象或者null類型)。如果屬性值需要引用資源文件,可參見1.7.3節資源文件的使用。

1.6.2 配置信息App

應用的配置文件config.json中由app、deviceConfig和module 3個部分組成,缺一不可。app表示應用的全局配置信息。同一個應用的不同HAP包的app配置必須保持一致。deviceConfig表示應用在具體設備上的配置信息。module表示HAP包的配置信息。該標簽下的配置只對當前HAP包生效。app的示例代碼如下:

    //config.json中app示例代碼
    "app":{
        "bundleName":"com.huawei.mytestapp.example",
        "vendor":"huawei",
        "version":{
            "code":2,
            "name":"2.0"
        }
        "apiVersion":{
            "compatible":3,
            "target":3
        }
    }

其中,bundleName表示應用的包名,用于標識應用的唯一性。包名是由字母、數字、下畫線(_)和點號(.)組成的字符串,必須以字母開頭。支持的字符串長度為7~127字節。包名通常采用反域名形式表示(例如,com.huawei.mytestapp)。建議第一級為域名后綴com,第二級為廠商/個人名,第三級為應用名,也可以采用多級。

vendor表示對應用開發廠商的描述。字符串長度不超過255字節。vendor可以不定義,不定義就默認為空值。

version: code表示表示應用的版本號,僅用于HarmonyOS管理該應用,對用戶不可見。取值為大于零的整數,不可以缺省。

version: name表示應用的版本號,用于向用戶呈現。取值可以自定義,不可以缺省。

apiVersion: compatible表示應用運行需要的API最小版本。取值為大于零的整數,不可缺省。

apiVersion: target表示應用運行需要的API目標版本。取值為大于零的整數,可缺省,如果不填寫則自動識別為應用所在設備的當前API版本。

1.6.3 配置信息deviceConfig

deviceConfig包含在具體設備上的應用配置信息,可以包含default、car、tv、wearable、liteWearable、smartVision等屬性。default標簽內的配置適用于所有設備,其他設備類型如果有特殊的需求,則需要在該設備類型的標簽下進行配置。

deviceConfig的示例代碼如下:

    //config.json中deviceConfig示例代碼
    "deviceConfig":{
        "default":{
            "process":"com.huawei.hiworld.example",
            "directLaunch":false,
            "supportBackup":false,
            "network":{
                 "usesCleartext":true,
                 "securityConfig":{
                     "domainSettings":{
                          "cleartextPermitted":true,
                          "domains":[
                              {
                                   "subDomains":true,
                                   "name":"example.ohos.com"
                              }
                          ]
                     }
                 }
            }
        }
    }

deviceConfig中基本有6類信息:

(1)default表示所有設備通用的應用配置信息。

(2)car表示車機特有的應用配置信息。

(3)tv表示智慧屏特有的應用配置信息。

(4)wearable表示智能穿戴特有的應用配置信息。

(5)liteWearable表示輕量級智能穿戴特有的應用配置信息。

(6)smartVision表示智能攝像頭特有的應用配置信息。

本例中只舉了default中設置的應用配置信息,default標簽內的配置適用于所有設備,其他設備類型如果有特殊的需求,則需要在該設備類型的標簽下進行配置。具體這6個對象的內部結構說明可查閱官方文檔,此處不再贅述。

1.6.4 配置信息module

module中包含了HAP包的配置信息,示例代碼如下:

    //config.json中module示例代碼
    "module":{
        "package":"com.example.myapplication.entry",
        "name":".MyOHOSAbilityPackage",
        "description":"$ string:description_application",
        "supported Modes":[
            "drive"
        ],
        "deviceType":[
            "car"
        ],
        "distro":{
            "delivery WithInstall":true,
            "moduleName":"ohos_entry",
            "moduleType":"entry"
        },
        "abilities":[
             ...
        ],
        "shortcuts":[
             ...
        ],
        "js":[
             ...
        ],
        "reqPermissions":[
             ...
        ],
        "defPermissions":[
             ...
        ]
    }

(1)package表示HAP的包結構名稱,在應用內應保證唯一性。采用反向域名格式(建議與HAP的工程目錄保持一致)。字符串長度不超過127字節。該標簽僅適用于智慧屏、智能穿戴、車機,不可缺省。

(2)name表示HAP的類名。采用反向域名方式表示,前綴需要與同級的package標簽指定的包名一致,也可采用“.”開頭的命名方式。字符串長度不超過255字節。該標簽僅適用于智慧屏、智能穿戴、車機,不可缺省。

(3)description表示HAP的描述信息。字符串長度不超過255字節。如果字符串超出長度或者需要支持多語言,可以采用資源索引的方式添加描述內容。該標簽僅適用于智慧屏、智能穿戴、車機,可以缺省,默認值為空。

(4)supported Modes表示應用支持的運行模式。當前只定義了駕駛模式(drive)。該標簽僅適用于車機,可以缺省,默認值為空。

(5)deviceType表示允許Ability運行的設備類型。系統預定義的設備類型包括:tv(智慧屏)、car(車機)、wearable(智能穿戴)、liteWearable(輕量級智能穿戴)和default(通用)等,不可缺省。

(6)distro表示HAP發布的具體描述。該標簽僅適用于智慧屏、智能穿戴、車機,不可缺省。distro示例代碼如下:

    "distro":{
        "delivery WithInstall":true,
        "moduleName":"ohos_entry",
        "moduleType":"entry"
    }

· deliveryWithInstall表示當前HAP是否支持隨應用安裝,是一個布爾類型的值,不可以缺省,如果其值是true,則表示支持隨應用安裝,如果其值是false,則表示不支持隨應用安裝。

· moduleName用字符串的形式表示當前HAP的名稱,不可以缺省。

· moduleType用字符串的形式表示當前HAP的類型(entry和feature)。entry表示一個應用的主模塊。一個App中,對于同一設備類型必須有且只有一個entry類型的HAP,可獨立安裝運行。feature表示應用的動態特性模塊。一個App可以包含一個或多個feature類型的HAP,也可以不含。只有包含Ability的HAP才能夠獨立運行。

(7)ability表示當前模塊內的所有Ability。采用對象數組格式,其中每個元素表示一個Ability對象,可缺省,默認值為空。Ability非常重要,每當我們創建新的Ability,都要確認該處的配置是否正確,后面將詳細介紹Ability的形式。

(8)JS表示基于JS UI框架開發的JS模塊集合,其中的每個元素代表一個JS模塊的信息,不過不寫則說明該模塊沒有使用JS框架,下面給出一個示例,page中定義了JS UI的頁面路徑+頁面名稱,JS UI具體用法可閱讀第5章JS UI布局,示例代碼如下:

(9)shortcuts表示應用的快捷方式信息。采用對象數組格式,其中的每個元素表示一個快捷方式對象,可缺省,默認值為空。

(10)defPermissions表示應用定義的權限。應用調用者必須申請這些權限,這樣才能正常調用該應用,該值可缺省,默認值為空。

(11)reqPermissions表示應用運行時向系統申請的權限,該值可缺省,默認值為空。

這里再詳細講解一下abilities對象的內部結構,示例代碼如下:

(1)第一行的name表示Ability名稱。取值可采用反向域名方式表示,由包名和類名組成,如com.example.myapplication.MainAbility;也可采用“.”開頭的類名方式表示,如.MainAbility。該標簽僅適用于智慧屏、智能穿戴、車機,不可缺省。

(2)第二行的description則表示對Ability的描述。取值可以是描述性內容,也可以是對描述性內容的資源索引,以便支持多語言,可缺省,默認值為空。

(3)icon表示Ability圖標資源文件的索引。如果寫了如下代碼:$ media: ability_icon就可以使用resource文件夾中的media中的名字為ability_icon圖片作為App的圖標來顯示。如果在該Ability的skills屬性中,actions的取值包含action.system.home, entities取值中包含entity.system.home,則該Ability的icon將同時作為應用的icon。如果存在多個符合條件的Ability,則取位置靠前的Ability的icon作為應用的icon。這個數值可缺省,默認值為空。

(4)label表示Ability對用戶顯示的名稱。取值可以是Ability名稱,也可以是對該名稱的資源索引,以便支持多語言。如果在該Ability的skills屬性中,actions的取值包含action.system.home, entities取值中包含entity.system.home,則該Ability的label將同時作為應用的label。如果存在多個符合條件的Ability,則取位置靠前的Ability的label作為應用的label??扇笔?,默認值為空。

(5)uri表示Ability的統一資源標識符。格式為[scheme:][//authority][path][?query][#AbilitySlice]。可缺省,但對于data類型的Ability不可缺省。

(6)launchType表示Ability的啟動模式,支持standard和singleton兩種模式:standard表示該Ability可以有多實例。standard模式適用于大多數應用場景。singleton表示該Ability只可以有一個實例。例如,具有全局唯一性的呼叫來電界面即采用singleton模式。該標簽僅適用于智慧屏、智能穿戴、車機??扇笔?,默認值為standard。

(7)visible表示Ability是否可以被其他應用調用,是布爾類型的值。

(8)permissions表示其他應用的Ability調用此Ability時需要申請的權限。通常采用反向域名格式,取值可以是系統預定義的權限,也可以是開發者自定義的權限。如果是自定義權限,取值必須與defPermissions標簽中定義的某個權限的name標簽值一致。可缺省,默認值為空。

(9)skills表示Ability能夠接收的Intent的特征,可缺省,默認值為空。

(10)deviceCapability表示Ability運行時要求設備具有的能力,采用字符串數組的格式表示。

(11)type表示Ability的類型。page表示基于Page模板開發的FA,用于提供與用戶交互的能力。service表示基于Service模板開發的PA,用于提供后臺運行任務的能力。data表示基于Data模板開發的PA,用于對外部提供統一的數據訪問抽象。

(12)formEnabled和form是綁定使用的,formenabled表示FA類型的Ability是否提供卡片(form)能力。只有當formEnabled生效時,form才會生效,而form表示Ability Form的屬性。

(13)orientation表示屏幕的方向,主要有4個選項:

· unspecified:由系統自動判斷顯示方向。

· landscape:橫屏模式。

· portrait:豎屏模式。

· followRecent:跟隨棧中最近的應用。

如果沒有設置orientation,系統會自動使用unspecified屬性。

(14)剩下的還有backgroundModes、readPermission、directLaunch、configChanges、mission、targetAbility、multiUserShared、supportPipMode等屬性,具體完整的屬性可查閱官方文檔。

主站蜘蛛池模板: 伊川县| 海城市| 边坝县| 克什克腾旗| 新郑市| 盐城市| 瑞金市| 正定县| 封丘县| 南康市| 汉川市| 澎湖县| 阳江市| 永登县| 广灵县| 永城市| 三原县| 新和县| 新民市| 丰台区| 四平市| 上犹县| 阿城市| 台江县| 淳安县| 玛沁县| 大厂| 阿瓦提县| 土默特右旗| 曲靖市| 增城市| 天门市| 松滋市| 托里县| 禹城市| 大安市| 恭城| 四会市| 城口县| 瑞安市| 酒泉市|