0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙上寫一個賬目記錄Demo

OpenHarmony技術(shù)社區(qū) ? 來源:OST開源開發(fā)者 ? 2023-05-29 11:09 ? 次閱讀

當(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 的效果圖:

4d18b216-fd26-11ed-90ce-dac502259ad0.gif

知識點(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)圖:

4e2d4734-fd26-11ed-90ce-dac502259ad0.png

動態(tài)共享包結(jié)構(gòu)圖:

4e680b76-fd26-11ed-90ce-dac502259ad0.png

頁面邏輯結(jié)構(gòu)圖:

4eae559a-fd26-11ed-90ce-dac502259ad0.png

講解

①動態(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ī)或模擬器上。

4ee49c2c-fd26-11ed-90ce-dac502259ad0.png

總結(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)行。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(liá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)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    鴻蒙上實(shí)現(xiàn)文件上傳功能

    此帖主要講解通過開發(fā)文檔示例代碼完整 Demo,方便初學(xué)者理解開發(fā)文檔內(nèi)容。
    的頭像 發(fā)表于 05-22 10:51 ?5206次閱讀
    <b class='flag-5'>鴻蒙上</b>實(shí)現(xiàn)文件上傳功能

    如何用C語言查單詞的小demo?

    如何用C語言查單詞的小demo
    發(fā)表于 10-27 06:34

    請問OpenHarmony鴻蒙demo gradle報錯怎么解決?

    鴻蒙demo gradle報錯怎么解決build.gradle:4: Could not find method ohos() for arguments
    發(fā)表于 04-01 11:27

    請問鴻蒙hap包是否支持插件化開發(fā)?

    如題,安卓上可以使用dexclassloader機(jī)制動態(tài)加載其他apk作為插件使用,鴻蒙上用類似的能力嗎?有什么解決方案呢?
    發(fā)表于 06-16 11:34

    s12x_demo_CW,matlab的demo

    matlab的demo 需要用2009打開
    發(fā)表于 07-06 09:15 ?13次下載

    鴻蒙上使用Python進(jìn)行物聯(lián)網(wǎng)編程

    炫耀!然而,這卻是非常重要的步:在鴻蒙上用使用 Python 進(jìn)行物聯(lián)網(wǎng)編程是可行的?。?! 既然可行,加上 Python 語言天生的優(yōu)勢(易于掌握,開發(fā)效率高),那么真的值得持續(xù)打造,將鴻蒙上的 Python 進(jìn)行到底。 所以
    的頭像 發(fā)表于 09-28 09:55 ?4298次閱讀
    在<b class='flag-5'>鴻蒙上</b>使用Python進(jìn)行物聯(lián)網(wǎng)編程

    開發(fā)鴻蒙版仿蘋果計算器教程.附代碼

    眾所周知鴻蒙 JS 框架是非常輕量級的 MVVM 模式。通過使用和 Vue2 相似的屬性劫持技術(shù)實(shí)現(xiàn)了響應(yīng)式系統(tǒng)。 學(xué)習(xí)鴻蒙很長時間了,想
    的頭像 發(fā)表于 10-11 14:17 ?4674次閱讀
    開發(fā)<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>鴻蒙</b>版仿蘋果計算器教程.附代碼

    如何用所學(xué)的鴻蒙知識做一個小應(yīng)用

    的視頻應(yīng)用,說真的,看到這個活動我很開心,又可以用所學(xué)的鴻蒙知識來做一個小應(yīng)用了! ? 看了小提示,都是 JS 組件來實(shí)現(xiàn)的,當(dāng)我看到分布式也可以用 JS 來寫時,當(dāng)時覺得 JS 也太強(qiáng)大了,因?yàn)橹?b class='flag-5'>寫
    的頭像 發(fā)表于 10-19 09:23 ?1756次閱讀

    鴻蒙上安裝按鈕實(shí)現(xiàn)下載、暫停、取消、顯示等操作

    今天給大家分享在鴻蒙上一個按鈕實(shí)現(xiàn)下載、暫停、取消、顯示下載進(jìn)度操作。
    的頭像 發(fā)表于 01-04 14:32 ?2304次閱讀

    鴻蒙上實(shí)現(xiàn)“數(shù)字華容道”小游戲

    本篇文章教大家如何在鴻蒙上實(shí)現(xiàn)“數(shù)字華容道”小游戲。
    的頭像 發(fā)表于 12-26 09:52 ?1250次閱讀

    鴻蒙上實(shí)現(xiàn)簡單的“每日新聞”

    這是篇講解如何實(shí)現(xiàn)基于鴻蒙 JS 的簡單的每日新聞。
    的頭像 發(fā)表于 12-26 09:58 ?865次閱讀

    鴻蒙上點(diǎn)亮LED燈

    篇我們成功的在鴻蒙開發(fā)板上輸出了 Hello World!這篇將帶大家點(diǎn)亮 LED 燈。
    的頭像 發(fā)表于 01-16 10:28 ?2071次閱讀

    鴻蒙上開發(fā)“小蜜蜂”游戲

    小時候我們有熟悉的游戲叫小蜜蜂。本文教大家在鴻蒙上學(xué)做這個小蜜蜂游戲。
    的頭像 發(fā)表于 04-03 11:27 ?1691次閱讀

    鴻蒙上一個loading加載動畫

    本篇文章介紹了如何實(shí)現(xiàn)簡單的 loading 加載動畫,并且在文末提供了 demo 工程供讀者下載學(xué)習(xí)。
    的頭像 發(fā)表于 04-17 10:20 ?4902次閱讀

    鴻蒙開發(fā)實(shí)例:【demo-搜索歷史記錄

    HarmonyOs-demo-搜索歷史記錄
    的頭像 發(fā)表于 03-26 22:40 ?666次閱讀
    <b class='flag-5'>鴻蒙</b>開發(fā)實(shí)例:【<b class='flag-5'>demo</b>-搜索歷史<b class='flag-5'>記錄</b>】