0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙开发学习:【OpenHarmony HAR】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-03-18 16:27 次阅读

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

如何安装OpenHarmony HAR

引用三方HAR,包括从仓库进行安装和从本地库模块中进行安装两种方式。

引用仓库安装的HAR:

引用ohpm仓中的HAR,首先需要设置三方HAR的仓库信息,DevEco Studio默认仓库地址是[ohpm],如果您想设置自定义仓库,请在DevEco Studio的Terminal窗口执行如下命令进行设置(执行命令前,请确保将DevEco Studio中ohpm安装地址配置在“环境变量-系统变量-PATH”中):

ohpm config set registry=your_registry1,your_registry2

说明:ohpm支持多个仓库地址,采用英文逗号分隔。 然后通过如下两种方式设置三方包依赖信息:

  • 方式一:在Terminal窗口中,执行如下命令安装三方包,DevEco Studio会自动在工程的oh-package.json5中自动添加三方包依赖。
ohpm install @ohos/lottie
  • 方式二:在工程的oh-package.json5中设置三方包依赖,配置示例如下:
"dependencies": { "@ohos/lottie": "^2.0.0"}

依赖设置完成后,需要执行ohpm install命令安装依赖包,依赖包会存储在工程的oh_modules目录下。

ohpm install

引用本地库模块的文件和资源:

  • 方式一:在Terminal窗口中,执行如下命令进行安装,并会在oh-package5.json中自动添加依赖。
ohpm install ../library
  • 方式二:在工程的oh-package.json5中设置三方包依赖,配置示例如下:
"dependencies": {
   "@ohos/library": "file:../library"
}

依赖设置完成后,需要执行ohpm install命令安装依赖包,依赖包会存储在工程的oh_modules目录下。

ohpm install

在引用OpenHarmony HAR时,请注意以下事项:

  • 当前只支持在模块和工程下的oh-package.json5文件中声明dependencies依赖,才会被当做OpenHarmony依赖使用,并在编译构建过程中进行相应的处理。
  • 引用的模块的compileSdkVersion不能低于其依赖的OpenHarmony ohpm三方包(可在oh_modules目录下,找到引用的ohpm包的src > main > module.json5 中查看)。

引用OpenHarmony HAR hml页面

在JS工程范式中,组件功能由hml承载,开发者可以在JS工程的hml页面通过标签来引入OpenHarmony HAR中的共享hml页面,示例如下:

< element name="comp" src="https://www.elecfans.com/images/chaijie_default.png" >< /element >

其中,@ohos/library为OpenHarmony HAR的包名,hml页面的路径为OpenHarmony HAR中的相对路径。
随后便可以通过设置的name来使用该element元素,以引用OpenHarmony HAR中的hml页面,示例如下:

< element name="comp" src="https://www.elecfans.com/images/chaijie_default.png" >< /element >

< div class="container" >
   < comp >< /comp >
   < text class="title" >
      {{ $t('strings.hello') }} {{ title }}
   < /text >
< /div >

引用OpenHarmony HAR ArkTS页面

ArkTS是TypeScript的扩展,因此导出和引入的语法与TypeScript一致。在OpenHarmony ohpm模块中,可以通过export导出ArkTS页面,示例如下:

// library/src/main/ets/components/MainPage/MainPage.ets
@Entry
@Component
export struct MainPage {
   @State message: string = 'Hello World'
   build() { 
      Row() { 
         Column() { 
            Text(this.message)
            .fontSize(50)
            .fontWeight(FontWeight.Bold)
         } 
         .width('100%') 
      } .height('100%') 
   }
}

然后在其它模块中通过import引入导出的ArkTS页面,示例如下所示:

// entry/MainAbility/pages/index.ets

import { MainPage } from "@ohos/library"
@Entry
@Component
struct Index {
   @State message: string = 'Hello World' 
   build() { 
      Column() { 
         MainPage() 
         Row() { 
            Text(this.message)
            .fontSize(50)
            .fontWeight(FontWeight.Bold)
         }
         .width('100%')
      } 
      .height('10%') 
   }
}

引用OpenHarmony HAR内ts/js方法ts/js方法的导出和引用,与ArkTS页面的引用相同,即在OpenHarmony ohpm模块中,可以通过export导出ts/js方法,示例如下所示:

// library/index.js
export function func() {
   return "[ohpm] func1";
}

然后在其它的ts/js页面中,通过import引入导出的ts/js方法,示例如下所示:

// entry/src/main/js/MainAbility/pages/index/index.js
import {func} from "@ohos/library"
export default {
   data: {
      title: ""
   },
   onInit() {
      this.title = func();
   }
}

引用OpenHarmony HAR内资源支持在OpenHarmony ohpm模块和依赖OpenHarmony ohpm的模块中引用OpenHarmony ohpm模块内的资源。例如在OpenHarmony ohpm模块的scr/main/resources里添加字符串资源(在string.json中定义,name:hello_ohpm)和图片资源(icon_ohpm.png)。然后在Entry模块中引用该字符串资源和图片资源的示例如下: 当前暂不支持类Web范式引用i18n文件中的国际化资源。

// entry/src/main/ets/MainAbility/pages/index.ets
@Entry
@Component
struct Index {
   @State message: string = 'Hello World'
   build() {
      Column() {
         Row() {
            Text($r("app.string.hello_ohpm")) // 字符串资源
              .fontSize(40)
              .fontWeight(FontWeight.Bold)
         }
         .width('50%')
         Image($r("app.media.icon_ohpm")) // 图片资源
      }
      .height('100%')
   }
}

在编译构建HAP中,DevEco Studio会从HAP模块及依赖的模块中收集资源文件,如果不同模块的相同限定词目录下的资源文件出现重名冲突时,DevEco Studio会按照以下优先级进行覆盖(优先级由高到低):

  • AppScope(仅API 9的Stage模型支持)
  • HAP包自身模块
  • 依赖的OpenHarmonyHarmony ohpm模块

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 鸿蒙
    +关注

    关注

    55

    文章

    1641

    浏览量

    42123
  • OpenHarmony
    +关注

    关注

    23

    文章

    3322

    浏览量

    15161
收藏 人收藏

    评论

    相关推荐

    鸿蒙开发OpenHarmony组件复用案例

    ) } }, item => item) } } } 本文主要是对鸿蒙开发基础当中的OpenHarmony技术组件复用示例, 更多鸿蒙开发
    发表于 01-15 17:37

    鸿蒙不再兼容安卓,那么鸿蒙开发者是否会大增?

    鸿蒙技术,享受蓝海红利。 鸿蒙的技术技能体系是怎么的?其实鸿蒙的板块内容也是居多的,可以用一张鸿蒙开发
    发表于 01-31 22:17

    鸿蒙实战项目开发:【短信服务】

    ://gitee.com/openharmony/applications_app_samples.git git pull origin master ​ 最后呢,很多开发朋友不知道需要学习那些
    发表于 03-03 21:29

    开发者如何快速加入鸿蒙生态?(学习方法+职业定位)

    HarmonyOS/OpenHarmony开发者们在学习、成长中对自己的准确的定位,包括个人开发者、企业开发者、各个不同职能的
    发表于 11-10 16:04

    基于 OpenHarmony,国内首个轻鸿蒙手表 OS 发行版出炉

    4G 蜂窝通信的鸿蒙手表。选择明年再开发蜂窝版手表,一方面和 OpenHarmony 的开源进展有关,另一方面也和好叭自身的规划有关——技术上从简单到复杂,品类上目前主要针对成人市场/运动手表,未来或进入儿童/老人手表市场等等
    发表于 11-16 14:14

    软通动力OpenHarmony启鸿开发板搭配鸿蒙智能编程平台助力青少年编程学习

    启鸿开发板,是一款基于海思3861L芯片和OpenHarmony开发板,兼容micro:bit生态的国产编程学习开发板;它尺寸小易收纳,同
    发表于 05-18 15:48

    openharmony鸿蒙区别

    OpenHarmony是HarmonyOS的开源版。 华为的鸿蒙操作系统是纯自己研发的,但是openharmony却不是华为的,openharmony是由开放原子开源基金会(OpenA
    的头像 发表于 06-24 16:21 3467次阅读

    openharmony鸿蒙有什么关系

    ,让平板、手机、智能家居都可以通过建房子搭积木的方式来使用鸿蒙系统。 openharmony鸿蒙之间属于相辅相成的,可以说openharmony就是建设
    的头像 发表于 06-22 16:02 1.1w次阅读

    openharmony官网和鸿蒙

    openharmony官网和鸿蒙 OpenHarmony(开源鸿蒙系统)是HarmonyOS的开源版,由华为捐赠给开放原子开源基金会(OpenAtom Foundation)开源,第一
    的头像 发表于 06-21 19:50 2167次阅读

    华为openharmony鸿蒙 2.0

    华为openharmony鸿蒙 2.0 IT之家 5 月 17 日消息 微博博主 @钊哥科普 此前爆料,华为鸿蒙 OpenHarmony 2.0 从 5 月 16 日开始开源,关键代码
    的头像 发表于 06-21 20:13 1817次阅读

    openharmony鸿蒙的区别是什么

    我们都知道,华为鸿蒙系统华为是开源了的,开源项目叫做OpenHarmony 2.0,那么这个开源的OpenHarmony 2.0与华为自家使用的鸿蒙HarmonyOS 2,又有什么区别
    的头像 发表于 06-23 11:53 9237次阅读

    开发鸿蒙开发者使用的日期选择器

    该三方开源库从github fork过来,主要将底层接口调用的实现修改成鸿蒙接口的实现,将三方库鸿蒙化,供开发鸿蒙应用的开发者使用。 Dat
    发表于 03-28 10:44 1次下载

    鸿蒙应用开发者使用的计数动画文本视图

    该三方开源库从github fork过来,主要将底层接口调用的实现修改成鸿蒙接口的实现,将三方库鸿蒙化,供开发鸿蒙应用的开发者使用 计数动画
    发表于 03-29 10:38 0次下载

    开发鸿蒙开发者使用的自定义滚轮类控件

    该三方开源库从github fork过来,主要将底层接口调用的实现修改成鸿蒙接口的实现,将三方库鸿蒙化,供开发鸿蒙应用的开发者使用。 一个自
    发表于 03-30 11:38 0次下载

    openHarmony之蓝牙快速开发框架

    Ohos Bluetooth Low Energy 蓝牙快速开发框架。 openHarmonyOs,使用简单的方式进行搜索、连接、读写等一系列蓝牙操作,并实时地得到操作反馈。 通过DevEco
    发表于 04-13 09:35 7次下载