鸿蒙上写一个账目记录Demo

描述

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

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

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

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

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

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

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

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

结构图

知识点

关系型数据库:

 

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
项目结构图:

 

结构图

动态共享包结构图:

结构图

页面逻辑结构图:

结构图

讲解

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

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

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 会启动应用/服务的编译构建,完成后应用/服务即可运行在本地真机或模拟器上。

结构图

总结

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

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

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

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

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

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

  审核编辑:汤梓红

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分