HarmonyOS-静态库(SDK)的创建和使用

news/2024/5/19 4:24:57

文章目录

  • 一、静态库(SDK)
  • 二、创建静态库
    • 1.新建静态库模块
    • 2. 开发静态库内容
    • 3. 编译静态库
  • 三、使用静态库
    • 1. 配置项目依赖
    • 2. 在应用中使用静态库
    • 3. 注意事项
  • 四、打包错误
    • 1. library引用本地har包错误

一、静态库(SDK)

在HarmonyOS中,静态库(通常以.har为文件扩展名)是一种用于代码和资源共享的机制。它允许开发者创建可重用的组件、接口和资源,以便在多个应用中共享和复用。

二、创建静态库

1.新建静态库模块

  1. 打开DevEco Studio: 启动HarmonyOS开发环境。
  2. 创建项目: 如果还没有项目,创建一个新的HarmonyOS项目。
  3. 添加模块: 在项目视图中,右键点击项目名称,选择New > Module…。
    在这里插入图片描述
  4. 选择模块类型: 在弹出的对话框中,选择Static Library。
  5. 命名模块: 输入模块名称,例如BaseLibrary,然后点击Finish。

2. 开发静态库内容

  1. 编写组件
    在新创建的静态库模块中,开发你的ArkUI组件、接口或资源,如下示例:
    定义Base的页面:
@Component
export struct BasePage {@State message: string = '';build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)}.width('100%')}.height('100%')}
}

定义基础的类:

@Component
export class BaseConfig {IMAGE_BACK_SIZE: number = 21;IMAGE_BACK_MARGIN_RIGHT: number = 18;IMAGE_LOADING_SIZE: number = 22;BAR_HEIGHT: number = 47;BAR_MARGIN_HORIZONTAL: number = 26;BAR_MARGIN_TOP: number = 10;WEIGHT: string = '50%';
}

2.导出内容
在ets文件夹下的index.ets文件中,使用export关键字导出你想要共享的组件或接口。如下示例,导出一个页面和一个名为 BaseConfig 的类。

export { MainPage } from './src/main/ets/components/mainpage/MainPage'
export { DKBaseBleAlg } from './src/main/ets/components/DKBaseBleAlg'

3. 编译静态库

  1. 构建模块
    在项目视图中,选择静态库模块,然后点击Build > Make Module ‘BaseLibrary’
    在这里插入图片描述

2.获取.har文件
编译成功后,在模块的build/default/outputs/default目录下找到baselibrary.har文件。
在这里插入图片描述

三、使用静态库

1. 配置项目依赖

  1. 编辑 oh-package.json5: 在主工程的根目录下,打开oh-package.json5文件。
  2. 添加依赖: 在dependencies部分,添加静态库的依赖项,例如:
{"license": "","devDependencies": {},"author": "","name": "entry","description": "Please describe the basic information.","main": "","version": "1.0.0","dependencies": {// 直接使用module,直接引用module的路径"Baselibrary": "file:../Baselibrary"// 将wmdinglibrary.har放到固定目录下时引用// "Baselibrary": "file:../entry/src/main/lib/Baselibrary.har"}
}
  1. 同步项目 : 点击Sync Now按钮,同步项目以包含新添加的静态库。

2. 在应用中使用静态库

  1. 导入组件或接口: 在你的应用代码中,使用import语句导入静态库中的组件或接口。
  2. 使用组件: 在你的应用页面或逻辑中,直接使用静态库类。
import { Baselibrary, MainPage } from 'Baselibrary'@Entry
@Component
struct UseLibraryPage {@State message: string = 'Hello World';build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)}.width('100%')}.height('100%')}
}

3. 注意事项

  1. 路径正确性: 确保在oh-package.json5中指定的静态库路径正确无误。
  2. 同步操作: 添加或更新依赖后,务必执行同步操作,否则项目可能无法正确识别静态库。
  3. 资源冲突: 如果静态库中包含资源文件,确保资源名称不会与主工程中的资源冲突。
  4. 编译顺序: 在构建项目时,确保静态库先于使用它的模块编译,以避免依赖问题。
  5. 权限和配置: 根据静态库的功能,可能需要在应用的配置文件中添加相应的权限或配置。

四、打包错误

1. library引用本地har包错误

在这里插入图片描述

解决措施
HarmonyOS library引用本地的har包的引用方式需要进行改造,具体步骤为:

  1. 在工程根目录下创建一个libs文件夹,并将需要引用的本地har包放到该文件夹下。
    在这里插入图片描述
    不支持har引本地har的格式,需要引用的har发布到npm仓上然后引用!

http://www.mrgr.cn/p/62660171

相关文章

网络流做题记录

网络流的建图灵活,需要大量练习。 一些常见套路:拆点:一般来说可以把一个点拆为一个入点和一个出点并连边,用于点边转化。连 INF 边:这种边不可能包含在最小割中,可以用来将点定向。建立超级源点和超级汇点:用于构建网络流模型。加辅助点:比较灵活,可以用于处理多种问…

CMU 15-751 CS Theory Toolkit Lecture Lecture 3 - Factorials Binomial Coefficients

CMU 15-751 课程第三课笔记。 接上回 CMU15-751-2。 同样照抄参考了 Lecture Note。 今天学习的是阶乘和二项式系数的渐进分析,这两种的出现频率非常高,因此我们很有必要熟悉他们的渐进方法。这也是我们做更多渐进分析的练习的机会。阶乘(Factorials) \(n! = 2^{\Theta(n\l…

python与上位机开发day02

1.常见运算符 1.1 赋值运算符 赋值运算符主要用来对变量进行赋值,包括如下这些: 运算符描述赋值加等于-减等于*乘等于/除等于//整除等于%模等于**幂等于 实例如下: a 10 a 5 # 等价于 a a5 a *2 # 等价于 a a*21.2 比较运算符 比较运算符主要用来比较两个数据的大小…

SpringMVC学习总结 + 【手写SpringMVC底层机制核心】

SpringMVC笔记 SpringMVC介绍 基本介绍SpringMVC 是WEB 层框架, 接管了Web 层组件, 支持MVC 的开发模式/开发架构 SpringMVC 通过注解,让POJO 成为控制器,不需要继承类或者实现接口 SpringMVC 采用低耦合的组件设计方式,具有更好扩展和灵活性. 支持REST 格式的URL 请求.Spri…

VS Code如何创建HTML文件并运行(新手友好)

一、下载VS Code 首先从官网 https://code.visualstudio.com/下载VS Code 。 二、在VS Code中下载相关的插件 1、首先打开Visual Studio Code 2、点击左侧工具栏中“扩展”栏,也可使用扩展快捷键打开(Ctrl+Shift+X),打开扩展下载以下三个插件。(三个插件安装完成后都需要重…

人工智能论文GPT-3(2):2020.5 Language Models are Few-Shot Learners;微调;少样本Few-Shot (FS)

2 方法Approach 我们的基本预训练方法,包括模型、数据和训练,与GPT-2中描述的过程相似,只是模型规模、数据集规模和多样性,以及训练时长有所扩大,相对简单直接。 我们使用的上下文学习也与GPT-2相似,但在…

docker的安装以及docker中nginx配置

机器 test3 192.168.23.103 1机器初始化配置 1.1关闭防火墙,清空防火墙规则 systemctl stop firewalld iptables -F setenforce 01.2部署时间同步 yum install ntp ntpdate -y1.3安装基础软件包 yum install -y wget net-tools nfs-utils lrzsz gcc gcc-c make…

【MySQL】A01、性能优化-语句分析

1、数据库优化方向 A、SQL及索引优化 根据需求写出良好的SQL,并创建有效的索引,实现某一种需求可以多种写法,这时候我们就要选择一种效率最高的写法。这个时候就要了解sql优化 B、数据库表结构优化 根据数据库的范式,设计表结构&…

分析 MyBatis/MyBatis-Plus 慢 SQL 的分析组件 --SQL 慢镜️‍♀️

大家好!我是聪ζ🌱我做了一个分析 MyBatis/MyBatis-Plus 慢 SQL 的分析组件 --SQL 慢镜🕵️‍♀️ GitHub仓库地址🚀: https://github.com/lhccong/sql-slow-mirror 点点 star 我的朋友们✨ 背景🧊: 大家…

串口服务器可以直接连接工业路由器吗

串口服务器可以直接连接工业路由器吗 在工业物联网的架构中,串口服务器和工业路由器都是不可或缺的重要组件。串口服务器的主要功能是将串口通信转换为网络通信,实现数据的远程传输和管理;而工业路由器则负责在工业环境中提供稳定、可靠的网络连接,确保数据的顺畅传输。那么…

Excel为批注设置图片背景 出现Bad Request - Request Too long

Excel为批注设置图片背景 打开EXCEL 点击文件 点选项 点击信任中心 点击信任中心设置 点击隐私选项 点击隐私设置 取消全部勾选关闭EXCEL 重新打开再操作,在填充效果中 选图片出现 点脱机工作 就可以正常先图片了

Composer初次接触

php一直都是简单处理一下单片机的后台服务,没什么深入研究 今天安装一个 php composer.phar require qiniu/php-sdkComposer完全不懂,照着一试,就报错了 - topthink/think-installer v1.0.12 requires composer-plugin-api ^1.0 -> found…

串口服务器和光纤交换机有什么不同

串口服务器与光纤交换机在功能和应用上存在显著区别。串口服务器主要实现串口设备与以太网设备之间的数据转换与传输,适用于远程监控、数据采集等场景;而光纤交换机则专注于高速光纤网络中的数据交换,为大型企业或数据中心提供稳定、高效的数据传输服务。简而言之,串口服务…

掘金、聚宽和米筐各量化平台优缺点

1、聚宽和米筐的商业模式主要是卖数据,掘金有自己做实盘, 2、聚宽有策略商城可以卖策略,掘金社区不太活跃 3、平台都有相关书籍,可以对照,有源码,掘金《》, 4、以python为例,掘金易用性较好,API文档清晰,windows客户端做的比较好, 策略都在本地运行, 很好的python代码…

parallels desktop19.3最新版本软件新功能详细介绍

Parallels Desktop是一款运行在Mac电脑上的虚拟机软件,它允许用户在Mac系统上同时运行多个操作系统,比如Windows、Linux等。通过这款软件,Mac用户可以轻松地在同一台电脑上体验不同操作系统的功能和应用程序,而无需额外的硬件设备…

source 1.5 中不支持 lambda 表达式, Deployment failed repository element

1、java:[400,90] 错误: -source 1.5 中不支持 lambda 表达式 Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project原因是未指定版本,默认用jdk 1.5在编译 <plugins><!-- 指定maven编译的jdk版本,如…

算法刷题day46

目录 引言一、树的重心二、毕业旅行问题三、高精度乘法 引言 今天复习了一下高精度的所有模板&#xff0c;包括加法、减法、乘法、除法&#xff0c;因为自己当时在蓝桥杯的时候没有看出来那个题使用高精度&#xff0c;因为对于一个数的大小和一个数的长度&#xff0c;自己有时…

微软Phi-3,3.8亿参数能与Mixtral 8x7B和GPT-3.5相媲美,量化后还可直接在IPhone中运行

Phi-3系列 Phi-3是一系列先进的语言模型,专注于在保持足够紧凑以便在移动设备上部署的同时,实现高性能。Phi-3系列包括不同大小的模型:Phi-3-mini(38亿参数) - 该模型在3.3万亿个令牌上进行训练,设计得足够小,可以在现代智能手机上运行。尽管体积紧凑,它的性能却可与更…

postgresql中两张表的聚合函数合并到一列或一行,做除法,并保留两位小数

--两张表的无关数据合并到一张表 SELECT A.name, B.name FROM (select o.name, row_number() over(order by name) from tb_org as o) A FULL JOIN (select r.name, row_number() over(order by r.name) from tb_region as r) B ON A.row_number = B.row_number;这里是利用了…

Git - 在PyCharm/Idea中集成使用Git

文章目录 Git - 在PyCharm/Idea中集成使用Git1.新建GitHub仓库2.将仓库与项目绑定3.在PyCharm中使用Git4.新建Gitee仓库5.将仓库与项目绑定6.在IDEA中使用Git Git - 在PyCharm/Idea中集成使用Git 本文详细讲解了如何在 PyCharm 或 Idea 中配置 Gitee 或 GitHub 仓库&#xff0…