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

ops/2025/2/21 7:05:30/

文章目录

  • 一、静态库(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.ppmy.cn/ops/10507.html

相关文章

政安晨:【深度学习神经网络基础】(九)—— 在深度学习神经网络反向传播训练中理解梯度

目录 简述 理解梯度 什么是梯度 计算梯度 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 简述 在深度…

计算机网络的基础知识

tcp叫段,udp叫报,ip叫包,链路层叫帧。 我们在网线中跑的就是帧。 tcp段和udp报没有长度限制,只有在ip层和链路层才有包和帧的最大限制。 一个tcp段,在tcp缓存区中被封装,然后传到ip层进行拆分和封装&#x…

Java web应用性能分析之服务端慢[网络慢]

Java web应用性能分析之服务端慢,如果是网络原因引起的服务端慢,经常会被忽略,很多时候我们第一时间不会去排查网络原因。出现这种情况也很正常,因为应用的外部网络都是超100M的大宽带服务器,而内部则是千兆网卡或者万…

Ruby中Rack中间件的使用场景和注意事项

Rack中间件在Ruby中是一种非常常见的模式,用于处理HTTP请求和响应。它们位于Web服务器和Web应用之间,允许开发者在请求到达应用之前或响应返回给客户端之后执行某些操作。Rack中间件可以执行诸如日志记录、身份验证、错误处理、缓存等任务。 使用场景 …

【嵌入式】Arduino IDE + ESP32开发环境配置

一 背景说明 最近想捣鼓一下ESP32的集成芯片,比较了一下,选择Arduino IDE并添加ESP32支持库的方式来开发,下面记录一下安装过程以及安装过程中遇到的坑。 二 下载准备 【1】Arduino IDE ESP32支持一键安装包(非常推荐&#xff0…

HTML中的页面可见性

页面可见性介绍 长期以来一直缺少一个判断用户是否正在浏览某个指定标签页的方法。 用户是否去看别的网站了?他们切换回来了么? HTML5 里页面可见性接口就提供给了程序员一个方法,让他们使用 visibilitychange 页面事件来判断当前页面可见…

【基础算法】双指针

1.移动零 移动零 思路: 利用双指针算法 cur:从左往右扫描数组,遍历数组 dest:处理好的区间包括dest dest初始化为-1,因为刚开始dest前应该没有非零元素。 即将非零元素移到dest之前即可 class Solution { public…

Web 前端基础—— Http 和CSS 学习笔记

HTML 1、 对HTML语义化的理解 语义化是指根据内容的结构化(内容语义化),选择合适的标签(代码语义化)。通俗来讲就是用 正确的标签做正确的事情。 语义化的优点如下: 对机器友好,带有语义的文字表现力丰富,更适合搜索引擎的爬虫爬取有效信息,有利于SEO。除 此之外,…