写点什么

如何安装 OpenHarmony ohpm 包

作者:flfljh
  • 2024-11-07
    湖南
  • 本文字数:2476 字

    阅读完需:约 8 分钟

如何安装 OpenHarmony ohpm 包

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


如何具体按照 OpenHarmony ohpm 包.引用三方 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="@ohos/library/src/main/js/components/index/index.hml"></element>
复制代码


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


<element name="comp" src="@ohos/library/src/main/js/components/index/index.hml"></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@Componentexport 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@Componentstruct 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.jsexport function func() {   return "[ohpm] func1";}
复制代码


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


// entry/src/main/js/MainAbility/pages/index/index.jsimport {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@Componentstruct 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 模块


用户头像

flfljh

关注

还未添加个人签名 2024-10-29 加入

还未添加个人简介

评论

发布
暂无评论
如何安装 OpenHarmony ohpm 包_flfljh_InfoQ写作社区