當(dāng)看到 DevEco Studio 3.1 Release | 動(dòng)態(tài)共享包開(kāi)發(fā),編譯更快,包更小這篇文章時(shí),就馬上想動(dòng)手寫(xiě)一個(gè) Demo,把平常工作寫(xiě)后端結(jié)構(gòu)搬上來(lái)。
從 0 開(kāi)始寫(xiě)一個(gè)動(dòng)態(tài)共享包 Demo 有點(diǎn)費(fèi)時(shí),于是在 Codelabs 看到一個(gè)關(guān)系型數(shù)據(jù)庫(kù)(ArkTS)的 Sample,就想著在這基礎(chǔ)上,把數(shù)據(jù)庫(kù)表操作,抽到動(dòng)態(tài)共享包模塊,然后在 Entry 模塊上引入使用。
到這里可能有小伙伴有疑問(wèn)?其實(shí)用靜態(tài)共享包把數(shù)據(jù)庫(kù)表操作抽出來(lái),在 Entry 模塊上引入使用,對(duì)的,這樣也是可以達(dá)到分離。
但如果有部分公共的資源和代碼,只能在開(kāi)發(fā)靜態(tài)共享,并且打包到每個(gè)依賴(lài)的 HAP 里,這樣導(dǎo)致包體積較大,且有重復(fù)多份公共資源和代碼重復(fù)打包到應(yīng)用中。
如果使用動(dòng)態(tài)共享,可以減少包體積,讓多個(gè) HAP 能夠共享同一公共資源代碼。
應(yīng)用內(nèi)動(dòng)態(tài)共享包指的是專(zhuān)門(mén)為某一應(yīng)用開(kāi)發(fā)的動(dòng)態(tài)共享包,只能被該應(yīng)用內(nèi)部其他 HAP/HSP 使用,用于應(yīng)用內(nèi)部代碼、資源的共享。
應(yīng)用內(nèi) HSP 跟隨其宿主應(yīng)用的 APP 包一起發(fā)布,與該宿主應(yīng)用具有相同的包名和生命周期。
下面先看看這個(gè)賬目記錄 Demo 的效果圖:
知識(shí)點(diǎn)
關(guān)系型數(shù)據(jù)庫(kù):
https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-data-relationalstore-0000001493744128-V3?catalogVersion=V3開(kāi)發(fā)及引用動(dòng)態(tài)共享包:
https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/hsp-0000001521396322-V3?catalogVersion=V3項(xiàng)目結(jié)構(gòu)圖:
動(dòng)態(tài)共享包結(jié)構(gòu)圖:
頁(yè)面邏輯結(jié)構(gòu)圖:
講解
①動(dòng)態(tài)共享包創(chuàng)建、開(kāi)發(fā)與導(dǎo)出
創(chuàng)建動(dòng)態(tài)共享包具體操作參考官方文檔:
https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/hsp-0000001521396322-V3?catalogVersion=V3
開(kāi)發(fā)按照業(yè)務(wù)邏輯編寫(xiě)相應(yīng)代碼就行。
導(dǎo)出業(yè)務(wù)接口,給其它地方引用使用,在 Index.ets 文件編寫(xiě)導(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"
編譯動(dòng)態(tài)共享包,參考 1.1 官方文檔鏈接,通過(guò) 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)簽頁(yè),勾選 Deploy Multi Hap Packages,選擇使用方模塊(如 entry)和 HSP 模塊(如sharedlibrary),點(diǎn)擊 OK。
單擊 Run > Run’模塊名稱(chēng)’(如 Run ‘entry’)或 DevEco Studio 會(huì)啟動(dòng)應(yīng)用/服務(wù)的編譯構(gòu)建,完成后應(yīng)用/服務(wù)即可運(yùn)行在本地真機(jī)或模擬器上。
總結(jié)
體驗(yàn)了一番動(dòng)態(tài)共享包實(shí)例,感覺(jué)太爽了,不用把全部代碼都寫(xiě)在 Entry 模塊里,同時(shí)也節(jié)省了 App 的大小,目前應(yīng)用內(nèi) HSP 指的是專(zhuān)門(mén)為某一應(yīng)用開(kāi)發(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)用共享包,還有引用動(dòng)態(tài)共享包后,預(yù)覽器不支持。
資料文件是源代碼,感興趣小伙伴可以下載來(lái)體驗(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瀏覽量
47474 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3799瀏覽量
64390 -
結(jié)構(gòu)圖
+關(guān)注
關(guān)注
1文章
38瀏覽量
23038 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2352瀏覽量
42858
原文標(biāo)題:鴻蒙上寫(xiě)一個(gè)賬目記錄Demo
文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論