當(dāng)看到 DevEco Studio 3.1 Release | 動態(tài)共享包開發(fā),編譯更快,包更小這篇文章時,就馬上想動手寫一個 Demo,把平常工作寫后端結(jié)構(gòu)搬上來。
從 0 開始寫一個動態(tài)共享包 Demo 有點(diǎn)費(fèi)時,于是在 Codelabs 看到一個關(guān)系型數(shù)據(jù)庫(ArkTS)的 Sample,就想著在這基礎(chǔ)上,把數(shù)據(jù)庫表操作,抽到動態(tài)共享包模塊,然后在 Entry 模塊上引入使用。
到這里可能有小伙伴有疑問?其實(shí)用靜態(tài)共享包把數(shù)據(jù)庫表操作抽出來,在 Entry 模塊上引入使用,對的,這樣也是可以達(dá)到分離。
但如果有部分公共的資源和代碼,只能在開發(fā)靜態(tài)共享,并且打包到每個依賴的 HAP 里,這樣導(dǎo)致包體積較大,且有重復(fù)多份公共資源和代碼重復(fù)打包到應(yīng)用中。
如果使用動態(tài)共享,可以減少包體積,讓多個 HAP 能夠共享同一公共資源代碼。
應(yīng)用內(nèi)動態(tài)共享包指的是專門為某一應(yīng)用開發(fā)的動態(tài)共享包,只能被該應(yīng)用內(nèi)部其他 HAP/HSP 使用,用于應(yīng)用內(nèi)部代碼、資源的共享。
應(yīng)用內(nèi) HSP 跟隨其宿主應(yīng)用的 APP 包一起發(fā)布,與該宿主應(yīng)用具有相同的包名和生命周期。
下面先看看這個賬目記錄 Demo 的效果圖:
知識點(diǎn)
關(guān)系型數(shù)據(jù)庫:
https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-data-relationalstore-0000001493744128-V3?catalogVersion=V3開發(fā)及引用動態(tài)共享包:
https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/hsp-0000001521396322-V3?catalogVersion=V3項目結(jié)構(gòu)圖:
動態(tài)共享包結(jié)構(gòu)圖:
頁面邏輯結(jié)構(gòu)圖:
講解
①動態(tài)共享包創(chuàng)建、開發(fā)與導(dǎo)出
創(chuàng)建動態(tài)共享包具體操作參考官方文檔:
https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/hsp-0000001521396322-V3?catalogVersion=V3
開發(fā)按照業(yè)務(wù)邏輯編寫相應(yīng)代碼就行。
導(dǎo)出業(yè)務(wù)接口,給其它地方引用使用,在 Index.ets 文件編寫導(dǎo)出內(nèi)容,如下:
export{AccountTable}from"./database/tables/AccountTable" export{AccountData}from"./bean/AccountData" export{AccountItem}from"./bean/AccountItem" export{Logger}from"./utils/Logger"
編譯動態(tài)共享包,參考 1.1 官方文檔鏈接,通過 DevEco Studio 菜單欄的 Build > Make Module ${libraryName} 進(jìn)行編譯構(gòu)建,生成 HSP。
②Entry 模塊引入使用
在使用方 entry/feature 模塊的 oh-package.json5 文件中添加 HSP 模塊引用,以引用名為 sharedlibrary 的 HSP 為例:
{ ... "dependencies":{ "@ohos/db_library":"file:../DB_library" } }
運(yùn)行引用 HSP 的使用方模塊,單擊 Run > Edit Configurations,選擇 Deploy Multi Hap 標(biāo)簽頁,勾選 Deploy Multi Hap Packages,選擇使用方模塊(如 entry)和 HSP 模塊(如sharedlibrary),點(diǎn)擊 OK。
單擊 Run > Run’模塊名稱’(如 Run ‘entry’)或 DevEco Studio 會啟動應(yīng)用/服務(wù)的編譯構(gòu)建,完成后應(yīng)用/服務(wù)即可運(yùn)行在本地真機(jī)或模擬器上。
總結(jié)
體驗(yàn)了一番動態(tài)共享包實(shí)例,感覺太爽了,不用把全部代碼都寫在 Entry 模塊里,同時也節(jié)省了 App 的大小,目前應(yīng)用內(nèi) HSP 指的是專門為某一應(yīng)用開發(fā)的 HSP,只能被該應(yīng)用內(nèi)部其他 HAP/HSP 使用,用于應(yīng)用內(nèi)部代碼、資源的共享。
應(yīng)用內(nèi) HSP 跟隨其宿主應(yīng)用的 APP 包一起發(fā)布,與該宿主應(yīng)用具有相同的包名和生命周期。遺憾當(dāng)前暫不支持跨應(yīng)用共享包,還有引用動態(tài)共享包后,預(yù)覽器不支持。
資料文件是源代碼,感興趣小伙伴可以下載來體驗(yàn)一下,約束與限制如下:
①本示例僅支持標(biāo)準(zhǔn)系統(tǒng)上運(yùn)行,支持設(shè)備:華為手機(jī) 3.1 系統(tǒng)或運(yùn)行在 DevEco Studio 上的華為手機(jī)遠(yuǎn)程模擬器 API9。
②本示例為 Stage 模型,支持 API version 9 及以上版本 SDK。
③本示例需要使用 DevEco Studio 3.1 Release 及以上版本進(jìn)行編譯運(yùn)行。
審核編輯:湯梓紅
-
模塊
+關(guān)注
關(guān)注
7文章
2707瀏覽量
47472 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3799瀏覽量
64389 -
結(jié)構(gòu)圖
+關(guān)注
關(guān)注
1文章
38瀏覽量
23038 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2352瀏覽量
42856
原文標(biāo)題:鴻蒙上寫一個賬目記錄Demo
文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論