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

    文章

    2484

    浏览量

    46530
  • 数据库
    +关注

    关注

    7

    文章

    3591

    浏览量

    63371
  • 结构图
    +关注

    关注

    1

    文章

    38

    浏览量

    22881
  • 鸿蒙
    +关注

    关注

    55

    文章

    1629

    浏览量

    42120

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

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

收藏 人收藏

    评论

    相关推荐

    鸿蒙开发AI应用(汇总)连载中

    ...5. 用鸿蒙开发AI应用(五)HDF 驱动补光灯本篇介绍了鸿蒙上的 HDF 驱动开发,通过控制红外补光灯的自定义驱动程序,描述了内核态、用户态和驱动配置的开发细节...6.
    发表于 01-13 15:03

    鸿蒙上线后手机端 HarmonyOS与Android是否并存?

    鸿蒙系统正式发布后,华为手机现有Android系统是否会与HarmonyOS并存?有没有大神公示下是如何升级转换的?不会简单到像android样下个更新包,重启完就变鸿蒙了吧?原android的用户数据怎么过度到
    发表于 02-23 10:04

    HarmonyOS 开发小视频展示(三)

    原理图,发现有LED0是接在gpio2_3这个引脚上的,果断选择点亮这个灯。9、用鸿蒙开发AI应用(五)HDF 驱动补光灯简介:上篇,我们在鸿蒙上运行了第
    发表于 03-05 10:23

    鸿蒙的 BLE DEMO 项目吗?

    BLE 串口透传 的项目,就是单片机发数据给蓝牙模块,转给手机,再在手机对数据计算后显示。想用鸿蒙手机来做。我也到本论坛的“资料”里下载了鸿蒙蓝牙的资料,解压看就是
    发表于 06-15 21:07

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

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

    基于rt-thread嵌入式操作系统的小Demo制作过程记录

    很久之前就想博客记录下自己的撸码过程,受到大佬稚晖君的影响,作为机器人公司UBT的代码撸手玩家。也打算从开始学习制作
    发表于 03-02 06:08

    请问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

    鸿蒙上能安装docker吗?

    android是不支持安装docker的,想了解下鸿蒙是否支持安装docker
    发表于 03-21 16:32

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

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

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

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

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

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

    鸿蒙上点亮LED灯

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

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

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

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

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