在鸿蒙应用里使用ohpm命令安装第三方组件包
今天应用里有个需求需要实现一个自定义组件,在ohpm.openharmony.cn上找了一下正好有一个这样的组件包,于是按照说明执行下载安装命令ohpm install @xxx/ooooo,没有安装成功同时Terminal面板给出如下报错信息:
PS D:\XXOOProject> ohpm install @xxx/ooooo ohpm : 无法将“ohpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1 + ohpm install @xxx/ooooo + ~~~~ + CategoryInfo : ObjectNotFound: (ohpm:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
遇事找AI,告知先确认ohpm是否安装,结果如下:
PS D:\XXOOProject> ohpm -v ohpm : 无法将“ohpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1 + ohpm -v + ~~~~ + CategoryInfo : ObjectNotFound: (ohpm:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
既然是因为没有安装ohpm命令,那么就看怎么安装吧。经查询得知ohpm是华为官方提供的一个专门用于管理第三方组件包的命令行工具,支持OpenHarmony共享包的发布、安装和依赖管理。打开下面的官方链接可以看详细介绍:
打开上述链接,先选择顶部“指南”,然后在左边树形菜单依次选择“工具”->“命令行工具”->“三方依赖管理工具(ohpm)”即可看到详细介绍。如果提示“HarmonyOS a.b.c(API xyz)文档归档不再维护”,可以在下面的链接中选择最新版的HarmonyOS版本。
如果要下载ohpm安装包,在左边树形菜单依次选择“工具”->“命令行工具”->“获取命令行工具”,可以看到“请前往下载中心获取命令行工具Command Line Tools”,点击“下载中心”即可到达下载页面,不过该页面需要登录华为账号,下载链接如下:
选择Windows版本下载,不过体积还不小2.4G,下载完成后需要将解压后command-line-tools文件夹的bin目录配置到环境变量中。环境变量配好后再次验证ohpm命令是否可用:
PS D:\XXOOProject> ohpm -v 5.1.2 PS D:\XXOOProject> ohpm --version 5.1.2
验证ohpm命令是可用的,继续安装第一步的第三方组件包,很顺利就安装成功了。安装信息如下:
PS D:\XXOOProject> ohpm install @xxx/ooooo ohpm INFO: MetaDataFetcher fetching meta info of package '@xxx/ooooo' from https://ohpm.openharmony.cn/ohpm/ ohpm INFO: fetch meta info of package '@xxx/ooooo' success https://ohpm.openharmony.cn/ohpm/@xxx/ooooo install completed in 0s 451ms
没想到第三方包安装成功了,部署到真机上时却报错了,错误信息如下:
"C:\Program Files\Huawei\DevEco Studio\tools\node\node.exe" "C:\Program Files\Huawei\DevEco Studio\tools\hvigor\bin\hvigorw.js" --mode module -p module=entry@default,shared_library_hsp@default -p product=default -p requiredDeviceType=phone assembleHap assembleHsp --analyze=normal --parallel --incremental --daemon > hvigor hvigor client: Starting hvigor daemon. > hvigor Hvigor Daemon started in 565 ms > hvigor Finished :entry:default@PreBuild... after 137 ms > hvigor Finished :shared_library_hsp:default@PreBuild... after 117 ms > hvigor UP-TO-DATE :entry:default@GenerateMetadata... > hvigor Finished :entry:default@ConfigureCmake... after 1 ms > hvigor ERROR: Failed :entry:default@MergeProfile... > hvigor ERROR: The compatibleSdkVersion 16 cannot be smaller than version 17 declared in library [:ooooo] as the library might be using APIS not available in 16 > hvigor ERROR: BUILD FAILED in 2 s 412 ms Process finished with exit code -1
原来是因为该第三方包用的API 17版本,而我的应用是API 16版本,既然不能用只能先卸载了,趁机整理了几条ohpm常用命令如下文。
①、ohpm删除单个包
命令:ohpm uninstall @xxx/ooooo
PS D:\XXOOProject> ohpm uninstall @xxx/ooooo ohpm INFO: remove useless folder succeed: "D:\XXOOProject\oh_modules\.ohpm\@xxx+ooooo@1.0.0" ohpm INFO: remove useless folder succeed: "D:\XXOOProject\oh_modules\@xxx/ooooo" ohpm INFO: delete useless empty folder succeed: "D:\XXOOProject\oh_modules\@xxx" ohpm INFO: remove useless folder succeed: "D:\XXOOProject\oh_modules\.ohpm\oh_modules\@xxx/ooooo" ohpm INFO: delete useless empty folder succeed: "D:\XXOOProject\oh_modules\.ohpm\oh_modules\@wuyo" uninstall completed in 0s 83ms
②、ohpm删除多个包
命令:ohpm uninstall @xxx/ooooo1 @xxx/ooooo2 @xxx/ooooo3
③、强制删除(忽略依赖关系检查)
ohpm uninstall -f @xxx/ooooo
④、删除全局安装的包
ohpm uninstall -g @xxx/ooooo
⑤、查看已安装的包
ohpm list
PS D:\XXOOProject> ohpm list . D:\XXOOProjectD:\XXOOProject ├── @ohos/hypium 1.0.21 └── @ohos/hamock 1.0.0
⑥、ohpm删除包注意
1、删除操作会从项目的 oh_modules 目录中移除包文件 2、同时会更新 oh-package.json5 文件,移除对应的依赖项 3、如果删除的是 devDependencies 中的包,使用相同的命令即可
在删除操作后,需要手动移除oh-package.json5中对应的依赖行。不过,使用ohpm uninstall命令会自动更新oh-package.json5,不需要手动操作。