首頁>技術>

APP

HarmonyOS的應用軟體包以APP Pack(Application Package)形式釋出,它是由一個或多個HAP(HarmonyOS Ability Package)以及描述每個HAP屬性的pack.info組成。HAP是Ability的部署包,HarmonyOS應用程式碼圍繞Ability元件展開。

一個HAP是由程式碼、資源、第三方庫及應用配置檔案組成的模組包,可分為entry和feature兩種模組型別,如圖1所示。

entry:應用的主模組。一個APP中,對於同一裝置型別必須有且只有一個entry型別的HAP,可獨立安裝執行。feature:應用的動態特性模組。一個APP可以包含一個或多個feature型別的HAP,也可以不含。只有包含Ability的HAP才能夠獨立執行。

圖1 APP邏輯檢視

Ability

Ability是應用所具備的能力的抽象,一個應用可以包含一個或多個Ability。Ability分為兩種型別:FA(Feature Ability)和PA(Particle Ability)。FA/PA是應用的基本組成單元,能夠實現特定的業務功能。FA有UI介面,而PA無UI介面。

庫檔案

庫檔案是應用依賴的第三方程式碼形式,存放在libs目錄,是.so檔案。

資原始檔

應用的資原始檔(字串、圖片、音訊等)存放於resources目錄下,便於開發者使用和維護,詳見資原始檔分類。

配置檔案

配置檔案 (config.json) 是應用的Ability資訊,用於宣告應用的Ability,以及應用所需許可權等資訊,詳見應用配置檔案。

pack.info

描述應用軟體包中每個HAP的屬性,由IDE編譯生成,應用市場根據該檔案進行拆包和HAP的分類儲存。HAP的具體屬性包括:

delivery-with-install: 用於標識該HAP是否需要在主動安裝時進行安裝。name:HAP檔名。module-type:模組型別,entry或feature。device-type:用於標識支援該HAP執行的裝置型別。應用配置檔案簡介

應用的每個HAP的根目錄下都存在一個“config.json”配置檔案,主要涵蓋以下三個方面:

應用的全域性配置資訊,包含應用的包名、生產廠商、版本號等基本資訊。應用在具體裝置上的配置資訊。HAP包的配置資訊,包含每個Ability必須定義的基本屬性(如包名、類名、型別以及Ability提供的能力),以及應用訪問系統或其他應用受保護部分所需的許可權等。檔案約定

配置檔案“config.json”採用JSON檔案格式,由屬性和值兩部分構成:

屬性屬性出現順序不分先後,且每個屬性最多隻允許出現一次。值每個屬性的值為JSON的基本資料型別(數值、字串、布林值、陣列、物件或者null型別)。如果屬性值需要引用資原始檔,可參見資原始檔。配置檔案的元素

此部分提供“config.json”檔案中所有屬性的詳細解釋。

配置檔案的內部結構

應用的配置檔案“config.json”中由“app”、“deviceConfig”和“module”三個部分組成,缺一不可。配置檔案的內部結構說明參見表1。

表1 配置檔案的內部結構說明

app物件的內部結構

app物件包含應用的全域性配置資訊,內部結構說明參見表2。

表2 app物件的內部結構說明

app示例:

"app": { "bundleName": "com.huawei.hiworld.example",  "vendor": "huawei",  "version": { "code": 2,  "name": "2.0" } "apiVersion": { "compatible": 3,  "target": 3 }}
deviceConfig物件的內部結構

deviceConfig包含在具體裝置上的應用配置資訊,可以包含default、car、tv、wearable、liteWearable、smartVision等屬性。default標籤內的配置是適用於所有裝置通用,其他裝置型別如果有特殊的需求,則需要在該裝置型別的標籤下進行配置。內部結構說明參見表3。

表3 deviceConfig物件的內部結構說明

default、car、tv、wearable、liteWearable、smartVision等物件的內部結構說明,可參見表4。

表4 default/car/tv/wearable等物件的內部結構說明

表5 network物件的內部結構說明

表6 securityConfig物件的內部結構說明

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" }  ] } } } }}
module物件的內部結構

module物件包含HAP包的配置資訊,內部結構說明參見表7。

表7 module物件的內部結構說明

module示例:

"module": { "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": [ ... ]}

表8 distro物件的內部結構說明

distro示例:

"distro": { "deliveryWithInstall": true,  "moduleName": "ohos_entry",  "moduleType": "entry"} 

表9 abilities物件的內部結構說明

abilities示例:

"abilities": [ { "name": ".MainAbility",  "description": "$string:description_main_ability",  "icon": "$media:hiworld.png",  "label": "HiMusic",  "type": "page",  "formEnabled": false,  "launchType": "standard",  "orientation": "unspecified",  "permissions": [ ],  "visible": false,  "skills": [ { "actions": [  "action.system.home" ],  "entities": [  "entity.system.home" ] } ],  "configChanges": [ "locale",  "layout",  "fontSize",  "orientation" ],  "directLaunch": false,  "process": "string",  "backgroundModes": [ "dataTransfer",  "audioPlayback",  "audioRecording",  "pictureInPicture",  "voip",  "location",  "bluetoothInteraction",  "wifiInteraction",  "screenFetch" ],  }]

表10 skills物件的內部結構說明

skills示例:

"skills": [ { "actions": [ "action.system.home" ],  "entities": [ "entity.system.home" ], "uris": [ {  "scheme": "http",  "host": "www.xxx.com",  "port": "8080",  "path": "query/student/name",  "type": "text" } ] }]

表11 form物件的內部結構說明

form示例:

"form": { "formEntity": [ "homeScreen",  "searchbox" ],  "minHeight": 100,  "maxHeight": 200,  "minWidth": 100,  "maxWidth": 200}

表12 js物件的內部結構說明

js示例:

"js": [ { "name": "default",  "pages": [  "pages/index/index", "pages/detail/detail" ],  "window": { "designWidth": 750, "autoDesignWidth": false } }]

表13 shortcuts物件的內部結構說明

示例:

"shortcuts": [ { "shortcutId": "id", "label": "$string:shortcut", "intents": [ { "targetBundle": "com.huawei.hiworld.himusic", "targetClass": "com.huawei.hiworld.himusic.entry.MainAbility" } ] }]
配置檔案示例

以JSON檔案為config.json的一個簡單示例,該示例的應用宣告為三個Ability。

{ "app": { "bundleName": "com.huawei.hiworld.himusic", "vendor": "huawei", "version": { "code": 2,  "name": "2.0" } "apiVersion": { "compatible": 3,  "target": 3 } }, "deviceConfig": { "default": { } }, "module": { "package": "com.huawei.hiworld.himusic.entry", "name": ".MainApplication", "supportedModes": [ "drive" ], "distro": { "moduleType": "entry", "deliveryWithInstall": true, "moduleName": "hap-car" }, "deviceType": [ "car" ],  "abilities": [ { "name": ".MainAbility", "description": "himusic main ability", "icon": "$media:ic_launcher", "label": "HiMusic", "launchType": "standard", "orientation": "unspecified", "visible": true, "skills": [  { "actions": [  "action.system.home" ], "entities": [  "entity.system.home" ]  } ], "type": "page", "formEnabled": false }, { "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", "formEnabled": false, "backgroundModes": [  "audioPlayback" ] }, { "name": ".UserADataAbility", "type": "data", "uri": "dataability://com.huawei.hiworld.himusic.UserADataAbility", "visible": true } ], "reqPermissions": [{ "name": "ohos.permission.DISTRIBUTED_DATASYNC", "reason": "", "usedScene": {  "ability": [ "com.huawei.hiworld.himusic.entry.MainAbility", "com.huawei.hiworld.himusic.entry.PlayService"  ],  "when": "inuse" } } ] }}

最新評論
  • 1 #

    今天試了下,感覺抄了miui系統很多原始碼

  • 2 #

    看原始碼,Ability是繼承Android的activity

  • 3 #

    可以編寫一本關於鴻蒙OS程式設計相關的書的

  • 4 #

    不要貼上複製人家的pdf啊,可以做一個demo。讓我們瞧瞧。比如,顯示系統時間。

  • 5 #

    我敢說華為倒下,中中國產手機分分鐘團滅,美國一句話的事

  • 6 #

    愛國買華為手機有錯嗎請問,這是中中國產的系統,就這一點就夠了

  • 7 #

    現在熱熱鬧鬧的啟動了,看看兩年後還熱乎不

  • 8 #

    這才是專業人員該乾的!希望找痛點並開始爭論的也是業內專業人士,而不是目不識丁的門外漢!

  • 9 #

    請華為把鴻蒙還給小米

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 微服務架構開發實戰:API閘道器意義和常見API閘道器的實現方式