如何安装 OpenHarmony ohpm 包
如何安装 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 支持多个仓库地址,采用英文逗号分隔。 然后通过如下两种方式设置三方包依赖信息:
方式一:在 Terminal 窗口中,执行如下命令安装三方包,DevEco Studio 会自动在工程的 oh-package.json5 中自动添加三方包依赖。
方式二:在工程的 oh-package.json5 中设置三方包依赖,配置示例如下:
依赖设置完成后,需要执行 ohpm install 命令安装依赖包,依赖包会存储在工程的 oh_modules 目录下。
引用本地库模块的文件和资源:
方式一:在 Terminal 窗口中,执行如下命令进行安装,并会在 oh-package5.json 中自动添加依赖。
方式二:在工程的 oh-package.json5 中设置三方包依赖,配置示例如下:
依赖设置完成后,需要执行 ohpm install 命令安装依赖包,依赖包会存储在工程的 oh_modules 目录下。
在引用 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 页面,示例如下:
其中,@ohos/library 为 OpenHarmony HAR 的包名,hml 页面的路径为 OpenHarmony HAR 中的相对路径。随后便可以通过设置的 name 来使用该 element 元素,以引用 OpenHarmony HAR 中的 hml 页面,示例如下:
引用 OpenHarmony HAR ArkTS 页面
ArkTS 是 TypeScript 的扩展,因此导出和引入的语法与 TypeScript 一致。在 OpenHarmony ohpm 模块中,可以通过 export 导出 ArkTS 页面,示例如下:
然后在其它模块中通过 import 引入导出的 ArkTS 页面,示例如下所示:
引用 OpenHarmony HAR 内 ts/js 方法 ts/js 方法的导出和引用,与 ArkTS 页面的引用相同,即在 OpenHarmony ohpm 模块中,可以通过 export 导出 ts/js 方法,示例如下所示:
然后在其它的 ts/js 页面中,通过 import 引入导出的 ts/js 方法,示例如下所示:
引用 OpenHarmony HAR 内资源支持在 OpenHarmony ohpm 模块和依赖 OpenHarmony ohpm 的模块中引用 OpenHarmony ohpm 模块内的资源。例如在 OpenHarmony ohpm 模块的 scr/main/resources 里添加字符串资源(在 string.json 中定义,name:hello_ohpm)和图片资源(icon_ohpm.png)。然后在 Entry 模块中引用该字符串资源和图片资源的示例如下: 当前暂不支持类 Web 范式引用 i18n 文件中的国际化资源。
在编译构建 HAP 中,DevEco Studio 会从 HAP 模块及依赖的模块中收集资源文件,如果不同模块的相同限定词目录下的资源文件出现重名冲突时,DevEco Studio 会按照以下优先级进行覆盖(优先级由高到低):
AppScope(仅 API 9 的 Stage 模型支持)
HAP 包自身模块
依赖的 OpenHarmonyHarmony ohpm 模块
评论