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


    一、静态库(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%')
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    定义基础的类:

    @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%';
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

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

    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    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%')
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    3. 注意事项

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

    四、打包错误

    1. library引用本地har包错误

    在这里插入图片描述

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

    1. 在工程根目录下创建一个libs文件夹,并将需要引用的本地har包放到该文件夹下。
      在这里插入图片描述
      不支持har引本地har的格式,需要引用的har发布到npm仓上然后引用!
  • 相关阅读:
    12 带音视频、多媒体、2D3D显示加速的嵌入式类芯片介绍
    最近在使用Flutter开发,其中有个关于睡眠质量的图表,类似于IOS中睡眠阶段的图表
    Json Schema简介和Json Schema的高性能.net实现库 LateApexEarlySpeed.Json.Schema
    云原生爱好者周刊:M1 芯片 Mac 可以成功运行 Linux
    GEE——自GLDAS-2.0 每日流域模型批量导出逐月Terrestrial water storage水存量影像下载
    云计算(虚拟化)面试宝典
    项目构建工具maven的基本配置+idea 中配置 maven
    【学习笔记】Cutting-edge Practice innovation and Entrepreneurship
    分布式事务入门
    你还不知道责任链模式的使用场景吗?
  • 原文地址:https://blog.csdn.net/guoxulieying/article/details/137951919