本章將把Hap、Hsp以案例方式加深一遍:
什么是Hap
HAP(Harmony Ability Package)是應(yīng)用安裝和運行的基本單元导盅。HAP包是由代碼较幌、資源、第三方庫白翻、配置文件等打包生成的模塊包乍炉,其主要分為兩種類型:entry和feature。
- entry:應(yīng)用的主模塊滤馍,作為應(yīng)用的入口岛琼,提供了應(yīng)用的基礎(chǔ)功能。
- feature:應(yīng)用的動態(tài)特性模塊巢株,作為應(yīng)用能力的擴展槐瑞,可以根據(jù)用戶的需求和設(shè)備類型進行選擇性安裝。
應(yīng)用程序包可以只包含一個基礎(chǔ)的entry包阁苞,也可以包含一個基礎(chǔ)的entry包和多個功能性的feature包困檩。
什么是Hsp
HSP(Harmony Shared Package)是動態(tài)共享包,可以包含代碼那槽、C++庫悼沿、資源和配置文件,通過HSP可以實現(xiàn)代碼和資源的共享骚灸。HSP不支持獨立發(fā)布显沈,而是跟隨其宿主應(yīng)用的APP包一起發(fā)布,與宿主應(yīng)用同進程逢唤,具有相同的包名和生命周期拉讯。
- 多個HAP/HSP共用的代碼和資源放在同一個HSP中,可以提高代碼鳖藕、資源的可重用性和可維護性魔慷,同時編譯打包時也只保留一份HSP代碼和資源,能夠有效控制應(yīng)用包大小著恩。
- HSP在運行時按需加載院尔,有助于提升應(yīng)用性能。
- 同一個組織內(nèi)部的多個應(yīng)用之間喉誊,可以使用集成態(tài)HSP實現(xiàn)代碼和資源的共享邀摆。
什么是Har
HAR(Harmony Archive)是靜態(tài)共享包,可以包含代碼伍茄、C++庫栋盹、資源和配置文件。通過HAR可以實現(xiàn)多個模塊或多個工程共享ArkUI組件敷矫、資源等相關(guān)代碼例获。
- 作為二方庫汉额,發(fā)布到OHPM私倉,供公司內(nèi)部其他應(yīng)用使用榨汤。
- 作為三方庫蠕搜,發(fā)布到OHPM中心倉,供其他應(yīng)用使用收壕。
- HAR不支持在設(shè)備上單獨安裝/運行妓灌,只能作為應(yīng)用模塊的依賴項被引用。
- HAR不支持在配置文件中聲明UIAbility組件與ExtensionAbility組件蜜宪。
- HAR不支持在配置文件中聲明pages頁面旬渠,但是可以包含pages頁面,并通過命名路由的方式進行跳轉(zhuǎn)端壳。
- HAR不支持引用AppScope目錄中的資源。在編譯構(gòu)建時枪蘑,AppScope中的內(nèi)容不會打包到HAR中损谦,因此會導(dǎo)致HAR資源引用失敗。
- HAR可以依賴其他HAR岳颇,但不支持循環(huán)依賴照捡,也不支持依賴傳遞。
案例場景:Hap依賴多個Hsp服務(wù)话侧,Hsp依賴Hsp服務(wù)
Hap工程 entry 入口文件
Hsp模塊
common: 功能模塊
home: 首頁模塊
-
創(chuàng)建Hsp模塊(項目右擊/模塊)
-
Hap引入Hsp
-
項目/entry/oh-package.json5配置
-
home子模塊/index.ets
-
引入多個Hsp模塊
-
- Hsp模塊(home)引入Hsp(common)
-
home引入commo模塊(工程[hmtemplate]/home/oh-package.json5)
-
common/index.ets
-