HarmonyOS开发:走进静态共享包的依赖与使用

这篇具有很好参考价值的文章主要介绍了HarmonyOS开发:走进静态共享包的依赖与使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在上一篇,我们进行了动态共享包的开发和使用,由于动态共享包有一定的局限性,比如,调用共享包资源还得要通过工具类进行调用,再比如仅用于应用内部代码、资源的共享,如果我想要开源,以远程依赖的方式给任何一个想要用的人进行使用,动态共享包就无法实现,针对以上的种种问题,有没有办法进行解决呢?必须有,这就是今天的主角,静态共享包

静态共享包(Harmony Archive)HAR,可以包含代码、C++库、资源和配置文件,可以给一个或多个模块进行依赖使用,和动态共享包不同的是,它不能单独运行,仅仅只能作为依赖项进行使用。

静态共享包很多的使用方式和动态共享包是一致的,考虑到大多数都是首次接触到HarmonyOS开发,为了方便大家更能直观的学习和练习,这里我把静态共享包的流程,也从头至尾的阐述一遍。

本章的内容大纲如下:

1、如何创建一个静态共享包(HAR)

2、静态共享包本地依赖方式

3、静态共享包的多种调用方式

4、静态共享包混淆文件

5、总结

一、如何创建一个静态共享包(HAR)

和动态共享包一样,在当前工程项目名,右键,选择New,然后选择Module即可。

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

选择Static Library。

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

设置共享包名字,点击Finish。

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

和动态共享包不同的是,静态共享包的类型为har。

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

二、静态共享包本地依赖方式

1、工程内部依赖

工程内部依赖方式,完全和动态共享包一模一样,可以手动进行依赖或者命令方式:

手动方式一,记住格式:【"folder": "file:../folder"】

"staticlibrary": "file:../staticlibrary"

手动方式二:格式,【"@xx/xx": "file:../staticlibrary"】

"@ohos/library": "file:../staticlibrary"

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

引入之后,进行同步项目,点击Sync Now即可,当然了你可以可以,将鼠标放置在报错处会出现提示,在提示框中点击Run 'ohpm install'。

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

命令方式依赖:

命令行中或在IDE Terminal窗口中,目录进入到需要引用的模块下,执行ohpm install ../folder命令即可,folder是你的共享包,如下图所示:

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

命令执行完毕之后,就会自动的在oh-package.json5里添加依赖,并生成映射文件,映射到调用Module的oh_modules目录下:

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

2、不同工程之间依赖

以上,无论是动态共享包还是静态共享包,都是同工程之间的依赖,但是,很多场景下,为了代码上的复用,我们会有多个项目复用共享包的情况,比如网络共享包,各个工具共享包等等,那么这种方式如何实现呢?

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

比如,在另一个项目MyLibrary中,有一个静态共享包net,我们在Demo项目中如何使用呢,当然了,这是简单的举例,可以是任何的一个项目,或者任何的一个静态共享包,体现的就是不在一个工程下。

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

第一步:编译库模块

选中需要共享的静态共享包,点击菜单栏的Build > Make Module选项,如下图:

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

构建完成之后,在build->default->outputs->default下,就会生成一个.har文件,如下图:

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

第二步:在需要调用此静态共享包的项目中进行依赖

记住,使用格式【"@xx/xx": "file:../xx.har"】,否则无法进行依赖。

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

以上的方式,不利于团队之间协作,毕竟你的设备中有这个.har,其他人未必有,所以,为了更好了进行团队协作,还有一种简单的方式,可以把.har文件复制到项目中去,具体的目录自己定义,如下图,我创建了一个libs目录,用于存放.har文件

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

在上述的依赖方式中,无论是同工程,还是不同工程,在实际的开发中,都有着一定的局限性,比如,如果是同工程,那么就实现不了项目之间的复用,如果是不同工程,即便把.har复制到项目中,实现了团队协作,如果har有更新,那么还得替换,着实不便。

有没有一种类似Android中的远程Maven形式呢,可以很负责任的告诉大家,必须有,那就远程依赖方式,由于内容比较多,我们放到下一篇文档来阐述。

三、静态共享包多种调用方式

无论你是采用同工程还是不同工程,还是远程的依赖的方式,其本质的实现方式是一样的。

1、资源调用

资源调用就比较简单了,可以直接调用,不用和动态共享包那样做中转处理。

比如静态共享包中,有一个字符串资源,当然,也可以是其他的资源,比如颜色、大小、音视频等等,都可以。

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

其他引用到此静态共享包的模块,就可以直接调用,按照$r('app.type.name')格式,type是你自己定义的资源类型,name是你定义的资源名字,如上图的资源,我们就可以如下调用,毕竟是静态共享包,可以和当前模块的调用方式完全一样。

$r('app.string.static_name')

关于资源类型,HarmonyOS提供了多种资源类型,在前面的了解工程结构那章有详细的介绍,这里再简单罗列一下:

文件

概述

boolean.json

布尔型

color.json

颜色

float.json

浮点型

intarray.json

整型数组

integer.json

整型

pattern.json

样式

plural.json

复数形式

strarray.json

字符串数组

string.json

字符串值

media

多媒体文件,如图形、视频、音频等文件,支持的文件格式包括:.png、.gif、.mp3、.mp4等

rawfile

用于存储任意格式的原始资源文件:$rawfile('filename')"

2、方法调用

比如在静态共享包中,有一个add求和方法,代码如下,记得如果想外暴露,一定要使用关键字export。

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

其他引用到此静态共享包的模块就可以如下调用,直接调用add方法即可,会有提示导包,如果没有,可按照图中导包方式进行导包即可。

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

3、类调用

和方法调用一样,我们在静态共享包中创建一个需要暴露的类,这里我以一个日志打印类作为测试,记住凡是需要暴露给外部使用的,一定要添加关键字export。

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

调用方式和方法如出一辙:

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

4、组件调用

在静态共享包中有一个自定义的文本组件,展示的内容为:Hello staticlibrary,如下:

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

调用方式如下,可以直接作为视图展示:

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

5、跳转静态共享包中的页面

经过验证之后,HAR不支持在配置文件中声明pages页面,如果验证不对,还望大家可以进行指出。

6、注意事项

对外暴露的接口,需要在共享包入口文件index.ets中声明,否则,其他模块无法调用,都是固定的模式,比如上述的add方法,和自定义的组件等,切记!!!

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

同一个类中的,如果多个方法,可以复用,比如:

export { Log, add, minus } from './utils/test'

四、静态共享包混淆文件

混淆,在开发中,顾名思义,就是把易于理解的代码变成难于阅读和理解的行为,目的是为了代码的安全,避免外泄,如果仅仅是自己公司使用,确实没必要混淆,毕竟都是同一家公司,没必要做的那么苛刻,如果是作为一个开源的代码,为了自身的权益,只开放功能,而保留代码的安全,那么就可以进行混淆,当然了,凡是不能绝对,还是得具体问题具体分析。

我们先看一下未混淆前的效果,所有的源代码均可在oh_modules中清晰查看:

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

一起再看下混淆后的效果,变成了两个文件,由原来的Net.ts,换成了Net.d.ts和Net.js两个文件,再看源码,已无法查看到原来的样式。

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

如何进行混淆呢,很是简单,再需要打静态共享包的build-profile.json5文件中,增加如下的属性即可:

HarmonyOS开发:走进静态共享包的依赖与使用,HarmonyOS点石成金,HarmonyOS,鸿蒙静态共享包,静态共享包依赖,鸿蒙静态共享包创建,鸿蒙动态共享包

artifactType字段有以下两种取值,默认缺省为original。

original:不混淆。

obfuscation:混淆,目前仅支持uglify混淆。

需要注意的是,按照官方解读,artifactType字段设置为obfuscation时,apiType字段必须设置为stageMode,因为Stage模型才支持混淆。

五、总结

静态共享包解决了,多项目开发复用代码的问题,也实现了,代码功能封装直接远程使用的方便,提供了一个开源的便捷使用,这是仅应用内部代码、资源共享的动态共享包所不能比的,当然了,两种共享包,各有优缺点,如何取舍,在于自己的决策。

其实关于静态共享包.har,大家有没有发现,动态共享包在构建编译后,也会创建一个.har文件,没错,你也可以完全通过动态共享包,开发自己的静态共享包

下一篇,我们将带来静态共享包如何实现远程依赖和上传以及关于静态共享包私服的搭建,敬请期待!文章来源地址https://www.toymoban.com/news/detail-702863.html

到了这里,关于HarmonyOS开发:走进静态共享包的依赖与使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Maven】依赖管理—导入jar包的三种方式、依赖范围设置

    一、使用坐标导入 jar 包  二、使用坐标导入 jar 包 – 快捷方式  三、使用坐标导入 jar 包 – 自动导入  四、依赖范围 1、在 pom.xml 中编写 dependencies 标签 2、在 dependencies 标签中 使用 dependency 引入坐标 3、定义坐标的 groupId,artifactId,version 4、点击刷新按钮,使坐标生效 1、

    2024年02月16日
    浏览(55)
  • Maven 如何下载依赖包的源码包

    使用Maven下载依赖包的时候, 默认是不会下载源码包的,但是有时候, 需要Debug代码,或是看看依赖项的源码的写法, 就需要下载源码包了。 这里以 Apache 的 commons-text 为例, 在Maven中添加如下依赖配置: 在命令行中切换到pom.xml 的路径, 使用 mvn compile 编译项目的时候会下

    2024年02月10日
    浏览(44)
  • 【前端】-vue-对打包的静态文件进行压缩

    通过 npm run build 打包时候,会发现静态文件很大,放在nginx服务中访问页面会很慢,所以可在打包过程中对静态文件再压缩。 对js、css、html等文件进行压缩: 安装插件 “compression-webpack-plugin” 。(我本地版本: cnpm install compression-webpack-plugin@5.0.1) 配置 vue.config.js 文件: 此时运

    2024年01月22日
    浏览(42)
  • HarmonyOS共享包以及跨模块引用

    跨模块引用文件时遇到了一个问题: 参照官方文档使用:Index.ets作为导出配置文件,在另一个库中使用遇到此问题 重读官方文档得到解决方法:重新创建: Index.ts 作为导出配置文件即可 共享包概述 OpenHarmony提供了两种共享包,HAR(Harmony Archive)静态共享包,和HSP(Harmony Sh

    2024年02月01日
    浏览(75)
  • HarmonyOs开发之———容器组件使用

    谢谢关注!! 前言:上一篇文章主要介绍HarmonyOS 开发之———基础组件的使用。如需了解谢谢查阅: 一、在HarmonyOS中,不同的容器组件拥有各自的属性,用于控制布局和组件的展示方式。以下是Stack(堆栈)、Column(列)、Row(行)、Flex(弹性盒子)和Grid(网格)这些容器

    2024年04月10日
    浏览(37)
  • HarmonyOS音频开发指导:使用AVPlayer开发音频播放功能

    在HarmonyOS系统中,多种API都提供了音频播放开发的支持,不同的API适用于不同音频数据格式、音频资源来源、音频使用场景,甚至是不同开发语言。因此,选择合适的音频播放API,有助于降低开发工作量,实现更佳的音频播放效果。 ● AVPlayer:功能较完善的音频、视频播放

    2024年01月20日
    浏览(35)
  • Angular:动态依赖注入和静态依赖注入

    问题描述: 自己写的服务依赖注入到组件时候是直接在构造器内初始化的。 直到看见代码中某大哥写的 private injector: Injector   在 Angular 中,使用构造函数注入的方式将服务注入到组件中是一种静态依赖注入的方式。这种方式需要在组件的构造函数中显式声明该服务的类型,

    2024年02月15日
    浏览(48)
  • 【HarmonyOS开发】ArkTs使用Http封装

    @ohos/axios @ohos/retrofit @ohos/httpclient @ohos.net.http 本模块提供HTTP数据请求能力。应用可以通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。 http.createHttp(创建请求实例任务); request(请求); destroy(中断请求); on(订阅HTTP Response H

    2024年01月22日
    浏览(47)
  • HarmonyOS 音频开发指导:使用 OpenSL ES 开发音频播放功能

    OpenSL ES 全称为 Open Sound Library for Embedded Systems,是一个嵌入式、跨平台、免费的音频处理库。为嵌入式移动多媒体设备上的应用开发者提供标准化、高性能、低延迟的 API。HarmonyOS 的 Native API 基于Khronos Group开发的OpenSL ES 1.0.1 API 规范实现,开发者可以通过OpenSLES.h和O

    2024年02月03日
    浏览(38)
  • HarmonyOS 鸿蒙开发DevEco Studio OpenHarmony:使用低代码进行开发

    OpenHarmony低代码开发方式,具有丰富的UI界面编辑功能,遵循JS、TS开发规范 ,通过可视化界面开发方式快速构建布局,可有效降低用户的时间成本和提升用户构建UI界面的效率。 说明 支持使用低代码进行JS/eTS页面开发,本章节以开发eTS页面为例,介绍低代码功能及使用方法。

    2024年02月19日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包