0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙上写一个账目记录Demo

OpenHarmony技术社区 来源:OST开源开发者 2023-05-29 11:09 次阅读

当看到 DevEco Studio 3.1 Release | 动态共享包开发,编译更快,包更小这篇文章时,就马上想动手写一个 Demo,把平常工作写后端结构搬上来。

从 0 开始写一个动态共享包 Demo 有点费时,于是在 Codelabs 看到一个关系型数据库(ArkTS)的 Sample,就想着在这基础上,把数据库表操作,抽到动态共享包模块,然后在 Entry 模块上引入使用。

到这里可能有小伙伴有疑问?其实用静态共享包把数据库表操作抽出来,在 Entry 模块上引入使用,对的,这样也是可以达到分离。

但如果有部分公共的资源和代码,只能在开发静态共享,并且打包到每个依赖的 HAP 里,这样导致包体积较大,且有重复多份公共资源和代码重复打包到应用中。

如果使用动态共享,可以减少包体积,让多个 HAP 能够共享同一公共资源代码。

应用内动态共享包指的是专门为某一应用开发的动态共享包,只能被该应用内部其他 HAP/HSP 使用,用于应用内部代码、资源的共享。

应用内 HSP 跟随其宿主应用的 APP 包一起发布,与该宿主应用具有相同的包名和生命周期。

下面先看看这个账目记录 Demo 的效果图:

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

知识点

关系型数据库:

https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-data-relationalstore-0000001493744128-V3?catalogVersion=V3
开发及引用动态共享包:
https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/hsp-0000001521396322-V3?catalogVersion=V3
项目结构图:

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

动态共享包结构图:

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

页面逻辑结构图:

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

讲解

①动态共享包创建、开发与导出

创建动态共享包具体操作参考官方文档:

https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/hsp-0000001521396322-V3?catalogVersion=V3

开发按照业务逻辑编写相应代码就行。

导出业务接口,给其它地方引用使用,在 Index.ets 文件编写导出内容,如下:

export{AccountTable}from"./database/tables/AccountTable"
export{AccountData}from"./bean/AccountData"
export{AccountItem}from"./bean/AccountItem"
export{Logger}from"./utils/Logger"

编译动态共享包,参考 1.1 官方文档链接,通过 DevEco Studio 菜单栏的 Build > Make Module ${libraryName} 进行编译构建,生成 HSP。

②Entry 模块引入使用

在使用方 entry/feature 模块的 oh-package.json5 文件中添加 HSP 模块引用,以引用名为 sharedlibrary 的 HSP 为例:

{
...
"dependencies":{
"@ohos/db_library":"file:../DB_library"
}
}

运行引用 HSP 的使用方模块,单击 Run > Edit Configurations,选择 Deploy Multi Hap 标签页,勾选 Deploy Multi Hap Packages,选择使用方模块(如 entry)和 HSP 模块(如sharedlibrary),点击 OK。

单击 Run > Run’模块名称’(如 Run ‘entry’)或 DevEco Studio 会启动应用/服务的编译构建,完成后应用/服务即可运行在本地真机或模拟器上。

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

总结

体验了一番动态共享包实例,感觉太爽了,不用把全部代码都写在 Entry 模块里,同时也节省了 App 的大小,目前应用内 HSP 指的是专门为某一应用开发的 HSP,只能被该应用内部其他 HAP/HSP 使用,用于应用内部代码、资源的共享。

应用内 HSP 跟随其宿主应用的 APP 包一起发布,与该宿主应用具有相同的包名和生命周期。遗憾当前暂不支持跨应用共享包,还有引用动态共享包后,预览器不支持。

资料文件是源代码,感兴趣小伙伴可以下载来体验一下,约束与限制如下:

本示例仅支持标准系统上运行,支持设备:华为手机 3.1 系统或运行在 DevEco Studio 上的华为手机远程模拟器 API9。

本示例为 Stage 模型,支持 API version 9 及以上版本 SDK。

本示例需要使用 DevEco Studio 3.1 Release 及以上版本进行编译运行。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2731

    浏览量

    47723
  • 数据库
    +关注

    关注

    7

    文章

    3845

    浏览量

    64671
  • 结构图
    +关注

    关注

    1

    文章

    38

    浏览量

    23074
  • 鸿蒙
    +关注

    关注

    57

    文章

    2392

    浏览量

    43033

原文标题:鸿蒙上写一个账目记录Demo

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    鸿蒙上实现文件上传功能

    此帖主要讲解通过开发文档示例代码完整 Demo,方便初学者理解开发文档内容。
    的头像 发表于 05-22 10:51 5311次阅读
    <b class='flag-5'>鸿蒙上</b>实现文件上传功能

    如何用C语言查单词的小demo

    如何用C语言查单词的小demo
    发表于 10-27 06:34

    请问OpenHarmony鸿蒙demo gradle报错怎么解决?

    鸿蒙demo gradle报错怎么解决build.gradle:4: Could not find method ohos() for arguments
    发表于 04-01 11:27

    请问鸿蒙hap包是否支持插件化开发?

    如题,安卓上可以使用dexclassloader机制动态加载其他apk作为插件使用,鸿蒙上用类似的能力吗?有什么解决方案呢?
    发表于 06-16 11:34

    s12x_demo_CW,matlab的demo

    matlab的demo 需要用2009打开
    发表于 07-06 09:15 13次下载

    鸿蒙上使用Python进行物联网编程

    炫耀!然而,这却是非常重要的步:在鸿蒙上用使用 Python 进行物联网编程是可行的!!! 既然可行,加上 Python 语言天生的优势(易于掌握,开发效率高),那么真的值得持续打造,将鸿蒙上的 Python 进行到底。 所以
    的头像 发表于 09-28 09:55 4386次阅读
    在<b class='flag-5'>鸿蒙上</b>使用Python进行物联网编程

    开发鸿蒙版仿苹果计算器教程.附代码

    众所周知鸿蒙 JS 框架是非常轻量级的 MVVM 模式。通过使用和 Vue2 相似的属性劫持技术实现了响应式系统。 学习鸿蒙很长时间了,想
    的头像 发表于 10-11 14:17 4760次阅读
    开发<b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>鸿蒙</b>版仿苹果计算器教程.附代码

    如何用所学的鸿蒙知识做一个小应用

    的视频应用,说真的,看到这个活动我很开心,又可以用所学的鸿蒙知识来做一个小应用了!   看了小提示,都是 JS 组件来实现的,当我看到分布式也可以用 JS 来写时,当时觉得 JS 也太强大了,因为之前
    的头像 发表于 10-19 09:23 1787次阅读

    鸿蒙上安装按钮实现下载、暂停、取消、显示等操作

    今天给大家分享在鸿蒙上一个按钮实现下载、暂停、取消、显示下载进度操作。
    的头像 发表于 01-04 14:32 2383次阅读

    鸿蒙上实现“数字华容道”小游戏

    本篇文章教大家如何在鸿蒙上实现“数字华容道”小游戏。
    的头像 发表于 12-26 09:52 1299次阅读

    鸿蒙上实现简单的“每日新闻”

    这是篇讲解如何实现基于鸿蒙 JS 的简单的每日新闻。
    的头像 发表于 12-26 09:58 911次阅读

    鸿蒙上点亮LED灯

    篇我们成功的在鸿蒙开发板上输出了 Hello World!这篇将带大家点亮 LED 灯。
    的头像 发表于 01-16 10:28 2115次阅读

    鸿蒙上开发“小蜜蜂”游戏

    小时候我们有熟悉的游戏叫小蜜蜂。本文教大家在鸿蒙上学做这个小蜜蜂游戏。
    的头像 发表于 04-03 11:27 1738次阅读

    鸿蒙上一个loading加载动画

    本篇文章介绍了如何实现简单的 loading 加载动画,并且在文末提供了 demo 工程供读者下载学习。
    的头像 发表于 04-17 10:20 5044次阅读

    鸿蒙开发实例:【demo-搜索历史记录

    HarmonyOs-demo-搜索历史记录
    的头像 发表于 03-26 22:40 740次阅读
    <b class='flag-5'>鸿蒙</b>开发实例:【<b class='flag-5'>demo</b>-搜索历史<b class='flag-5'>记录</b>】