HarmonyOS應用程序包-(下)
1.多HAP的開發調試與發布部署流程
多HAP的開發調試與發布部署流程如下圖所示。
圖1 多HAP的開發調試與發布部署流程
開發
開發者通過DevEco Studio工具按照業務的需要創建多個Module,在相應的Module中完成自身業務的開發。
調試
通過DevEco Studio編譯打包,生成單個或者多個HAP,即可基于HAP進行調試。如需根據不同的部署環境、目標人群、運行環境等,將同一個HAP定制編譯為不同版本,請參見定制編譯指導。
在調試前,需要先安裝或更新HAP,以下介紹具體做法。
-
使用DevEco Studio進行調試
使用指導可參考應用程序包調試方法,其中包括了單HAP與多HAP通過DevEco Studio工具的安裝調試方法。
-
使用hdc工具(可通過HarmonyOS SDK獲取,在SDK的toolchains目錄下)進行調試
在調試前,需要先安裝或更新HAP,此處有兩種方式。
-
直接使用hdc安裝、更新HAP。
HAP的路徑為開發平臺上的文件路徑,以Windows開發平臺為例,命令參考如下:
// 安裝、更新,多HAP可以指定多個文件路徑 hdc install C:\entry.hap C:\feature.hap // 執行結果 install bundle successfully. // 卸載 hdc uninstall com.example.myapplication // 執行結果 uninstall bundle successfully.
-
先執行hdc shell,再使用bm工具安裝、更新HAP。
HAP的文件路徑為真機上的文件路徑,命令參考如下:
// 先執行hdc shell才能使用bm工具 hdc shell // 安裝、更新,多HAP可以指定多個文件路徑 bm install -p /data/app/entry.hap /data/app/feature.hap // 執行結果 install bundle successfully. // 卸載 bm uninstall -n com.example.myapplication // 執行結果 uninstall bundle successfully.
完成HAP安裝或更新后,即可參考相關調試命令進行調試。
發布
當開發的程序包滿足發布要求時,可以在工具中打包編譯生成App包。將該App包上架到應用市場云端,應用市場會對上架的App包校驗簽名,校驗簽名通過后會將App包中的HAP拆分出來,同時對拆分出的HAP重新添加簽名,然后對HAP進行分發。
部署
用戶在設備上的應用市場客戶端能夠看到各種各樣的應用,這些應用均由云端分發而來,有些是多HAP應用,有些是單HAP應用。用戶選擇某個應用后,應用市場將下載應用所包含的全部deliveryWithInstall設置為“true”的HAP。
應用在終端設備上的安裝
下載完成后,應用市場客戶端再調用系統中包管理服務的安裝接口安裝下載的HAP,包管理服務以應用為單位將其中所有HAP部署到指定目錄下,以完成應用的安裝。
2.多HAP使用規則
- App Pack包不能直接安裝到設備上,只是上架應用市場的單元。
- App Pack包中所有HAP的配置文件中的bundleName標簽必須一致。
- App Pack包中所有HAP的配置文件中的versionCode標簽必須一致。
- App Pack包中同一設備類型的所有HAP中必須有且只有一個entry類型的HAP,feature類型的HAP可以有一個或者多個,也可以沒有。
- App Pack包中的每個HAP必須配置moduleName標簽,同一設備類型的所有HAP對應的moduleName標簽必須唯一。
- 同一應用的所有HAP簽名證書要保持一致。上架應用市場是以App Pack的形式上架,并對其進行了簽名。應用市場分發時會將所有HAP從App Pack中拆分出來,同時對其中的所有HAP進行重簽名,這樣保證了所有HAP簽名證書的一致性。在調試階段,開發者通過命令行或IDE將HAP安裝到設備上時要保證所有HAP簽名證書一致,否則會出現安裝失敗的問題。
3.多HAP運行機制及數據通信方式
多HAP機制主要是為方便開發者進行模塊化管理。HAP和應用運行時的進程并不是一一對應的,具體運行機制如下:
- 默認情況下,應用中(同一包名)的所有UIAbility、ServiceExtensionAbility、DataShareExtensionAbility運行在同一個獨立進程中,其他同類型ExtensionAbility分別運行在單獨的進程。
- HAP支持在module.json5(Stage模型)或者config.json(FA模型)中通過process標簽配置單獨的進程(僅系統應用支持,三方應用不支持)。配置了process的HAP,其組件運行在單獨的process進程中,多個HAP可以配置相同的process,則這些HAP運行在相同進程中,process配置的詳細說明請參見module.json5配置文件。
- 應用運行時,同一進程中的UIAbility組件被啟動時,才加載對應HAP的資源和代碼。
基于上述機制,多HAP數據通信方式如下:
- 同一進程內的數據通信,請參見線程間通信。
- 跨進程的數據通信,請參見進程間通信。
- 多HAP如果運行在同一進程,則多HAP間組件的通信方式與同一HAP內組件的通信方式相同。
4.應用程序包安裝和卸載流程
開發者
開發者可以通過調試命令進行應用的安裝和卸載,可參考多HAP的調試流程。
圖1 應用程序包安裝和卸載流程(開發者)
終端設備用戶
開發者將應用上架應用市場后,終端設備用戶可以在終端設備上使用應用市場進行應用的安裝和卸載。
圖2 應用程序包安裝和卸載流程(終端設備用戶)
5.應用程序包更新流程
HarmonyOS包管理服務提供了應用程序包更新能力,更新方式如下。
- 應用市場內更新:新版本應用通過應用市場上架后,應用市場通知終端用戶該應用有新版本,終端用戶可以根據通知到應用市場(客戶端)進行應用升級。
- 應用內檢測升級:終端用戶啟動應用時,應用市場檢測到該應用有新版本會通知終端用戶,可以到應用市場進行應用的下載更新。