原文:https://mp.weixin.qq.com/s/qPvHZNZuLccAsviBcXtPWw,點選連結檢視更多技術內容。
動態共享包(HSP)開發是DevEco Studio 3.1 Release版本帶來的新特性,基於新的編譯方式,提供執行態共享能力,可以有效加快編譯速度,減小HAP包的體積。
一、動態共享包引入
以往使用的JSBundle化編譯方案,因每個入口page都會打包成一個bundle包,且不支援執行態共享,當修改單個模組檔案,需要整包重新編譯打包,會導致編譯消耗的時間變長,也會導致HAP包的體積變大,從而影響了HarmonyOS應用開發效率和開發者體驗。
Bundle化打包過程示意圖
為了提升開發效率和開發者體驗,DevEco Studio提供模組化編譯方式,模組之間相互獨立編譯,可以加快編譯速度。同時,為了減少包體積,支援將多個模組通用的能力和資源提取,作為動態共享包(HSP)供其他模組或者應用使用。
二、什麼是模組化編譯
模組之間相互獨立編譯,編譯速度更快。
應用內模組化編譯方式使用原生ES Module規則構建原始碼,解決了Bundle編譯打包模式引入的問題,進而讓工程中的資原始檔,以獨立模組的形式進行編譯。當修改單個模組程式碼時,無需整包編譯構建,編譯的程式碼量會大大減少,從而加快增量編譯速度,讓編譯更快。
模組獨立編譯示意圖
三、如何開啟模組化編譯
API 9及以上版本的Stage工程中會預設開啟模組化編譯方式,開發者無需單獨配置,編輯好程式碼後,直接點選Build Hap(s),就會以模組化的編譯方式來進行打包。
新建專案,選擇Stage示例圖
3.1 應用內共享HSP開發,讓包體積更小
基於Stage模型和模組化編譯方式,如何進行動態共享包(HSP)的開發呢?一起來看以下介紹:
3.1.1 提供動態共享包模板,輕鬆建立動態共享包HSP
HSP是可以用來共享資源和程式碼的動態共享包,為了方便開發者使用,DevEco Studio提供Shared Library動態共享包模板,開發者可以直接使用該模板,輕鬆建立HSP。開發者選中工程目錄中任意檔案,右鍵選擇New > Module,開啟Shared Library模板。
Shared Library模板示意圖
在HSP對應模組(如Shared_Library)中完成通用能力程式碼和資源的開發後,選中選單欄的Build > Make Module‘Shared_Library’進行編譯構建,即可快速生成HSP。
編譯構建示例圖
生成HSP
3.1.2 應用內快速引用HSP
開發者可透過欄位配置,將HSP共享給應用內其他模組使用,並且支援在執行態共享HSP。在使用方entry/feature模組的oh-package.json5檔案中新增HSP模組來引用,以引用名為Shared_Library的HSP為例:
HSP引用配置
在模組化編譯方式的加持下,使用方的模組經過編譯打包後,HAP包的體積將會明顯變小,開發者就可將HAP包快速安裝在裝置上來除錯執行,提升開發效率。
與此同時,DevEco Studio支援HSP預覽,ArkTS/C++呼叫HSP的斷點除錯等功能,您可以進入HarmonyOS官網資料瞭解更多HSP的內容。