鸿蒙开发的har包打包与引用

我们知道在安卓中,可以开发aar包提供给别人的工程引入使用。在鸿蒙开发中,也有类似的,称之为har包。

har包是静态共享包,可以包含代码、C++库、资源和配置文件等等。通过har包可以实现多个模块或多个工程共享ArkUI组件、C++库、资源等相关代码。HAR不同于HAP,不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。

本文通过一个简单的demo,来简单演示如何打包har包,以及别的工程如何引用har包和使用它。

一、打包har包

首先我们建立一个har包的提供者的工程har_demo_provider,并创建一个最终生成har包的模块testHar模块。下面是具体的步骤。

1、先创建个Har模块

通过右键->New->Module来创建模块,如下:

选择static Library模板,点击Next下一步:

填写har模块的名字,并选择是否要Enable native,即你的har包是否有包括C++库。

至此创建了testHar模块。

2、export需要提供的类、方法等

在新建的模块中编写相关业务代码等。然后对于需要提供给别的工程使用的方法、TS类、ArkUI组件等,都需要export来修饰。

方法可以作为类的成员导出,也可以单独导出。如下,我们导出3个东西:MainPage(ArkUI组件)、Har_Add类(TS类)、har_func方法(单独的方法):

Module根目录下的index.ets是HAR导出声明文件的入口,HAR需要导出的接口,统一在index.ets文件中导出。

注意事项:

(1)、HAR不支持在配置文件中声明abilities、extensionAbilities组件。

(2)、HAR不支持在配置文件中声明pages页面。

(3)、HAR不支持在build-profile.json5文件的buildOption中配置worker。

(4)、FA模型与Stage模型的HAR不支持相互引用。

(5)、Stage模型的HAR,不能引用AppScope内的内容。在编译构建时APPScope中的内容不会打包到HAR中,导致HAR资源引用失败。

3、打包

直接在工具栏中选择Build->Make Module 'Module名'即可编译打包:

打包成功后,在该模块的build/default/outputs/defaul目录下,会有打包好的har包:

到此,har包就打包完成了。生成了testHar.har。

二、引用har包并使用

接下来我们创建个使用这个har包的工程har_demo_user工程,引用testHar这个har包,并使用它。下面是具体的步骤。

1、将har包放到工程某个目录下

在har_demo_user工程中,想引用刚才打包好的har包,首先将这个har包放到工程中的某个目录下。比如在根目录新建个lib文件夹,并将har包放到这个目录下:

2、在oh-package.json5文件中添加引用该har

在oh-package.json5文件添加如下语句,将该har包添加到这个工程中。注意路径。

添加之后点击Sync Now同步工程,就会生成依赖包在工程的oh_modules目录下

3、代码中使用该har包的相关方法、类等

上述操作做完后,就可以通过import将har包中export的TS类,方法,ArkUI组件等导入,并使用:

三、demo演示

我们通过一个简单的demo来演示。

在完成上述操作后,在har_demo_user工程中的首页上,我们import了testHar包的MainPage组件、Har_Add类,以及har_func方法。

将MainPage组件放到布局中,来展示har包中的UI。

点击"点击这个引用har包中的TS类来获取结果"这个文本来使用har包中的Har_Add类来new一个对象,并调用对象中的add方法,来将1和2相加并获取到结果。

点击"点击这个直接引用har包中的方法"这个文本来使用har包中har_func方法直接获得这个方法返回的结果。

具体代码如下:

运行结果:

本文的demo我已经上传到我的gitee上了,有兴趣可以下载看看:

har包的提供者:

gitee.com/weekend45/h...

har包的使用者:

gitee.com/weekend45/h...

以上。

相关推荐
SameX2 小时前
HarmonyOS Next 安全生态构建与展望
前端·harmonyos
SameX2 小时前
HarmonyOS Next 打造智能家居安全系统实战
harmonyos
Random_index10 小时前
#Uniapp篇:支持纯血鸿蒙&发布&适配&UIUI
uni-app·harmonyos
鸿蒙自习室14 小时前
鸿蒙多线程开发——线程间数据通信对象02
ui·harmonyos·鸿蒙
SuperHeroWu716 小时前
【HarmonyOS】鸿蒙应用接入微博分享
华为·harmonyos·鸿蒙·微博·微博分享·微博sdk集成·sdk集成
zhangjr057518 小时前
【HarmonyOS Next】鸿蒙实用装饰器一览(一)
前端·harmonyos·arkts
诗歌难吟4641 天前
初识ArkUI
harmonyos
SameX1 天前
HarmonyOS Next 设备安全特性深度剖析学习
harmonyos
郭梧悠1 天前
HarmonyOS(57) UI性能优化
ui·性能优化·harmonyos
郝晨妤2 天前
鸿蒙原生应用开发元服务 元服务是什么?和App的关系?(保姆级步骤)
android·ios·华为od·华为·华为云·harmonyos·鸿蒙