OpenHarmony提供了兩種共享包,HAR(Harmony Archive)靜態(tài)共享包,和HSP(Harmony Shared Package)動態(tài)共享包。
HAR與HSP都是為了實現(xiàn)代碼和資源的共享,都可以包含代碼、C++庫、資源和配置文件,最大的不同之處在于:HAR中的代碼和資源跟隨使用方編譯,如果有多個使用方,它們的編譯產(chǎn)物中會存在多份相同拷貝;而HSP中的代碼和資源可以獨立編譯,運行時在一個進程中代碼也只會存在一份。
圖1 HAR和HSP在APP包中的形態(tài)示意圖
HSP旨在解決HAR存在的幾個問題:
多個HAP引用相同的HAR,導(dǎo)致的APP包大小膨脹問題。
多個HAP引用相同的HAR,HAR中的一些狀態(tài)變量無法共享的問題。
HSP的一些約束:
HSP及其使用方都必須是Stage模型。
HSP及其使用方都必須使用esmodule編譯模式。
HSP不支持在配置文件中聲明abilities、extensionAbilities標簽。
HSP按照使用場景可以分為應(yīng)用內(nèi)HSP和應(yīng)用間HSP,應(yīng)用間HSP暫不支持。