|
【Hi3861 WiFiIoT试用连载】踩坑--hpm使用问题总结,
#hpm使用问题总结
##什么是hpm
hpm(harmony package manager)鸿蒙包管理器
是华为鸿蒙推出的组件包管理器,可以方便地从官网获取所需组件,根据需要只下载当前项目用到的组件,使得工程文件更加精简。
现有解决方案见如下网站:
https://hpm.HarmonyOS.com/#/cn/home
##前置条件
- HarmonyOS开发必备编译环境
hpm只做顶层调用,因此需要按鸿蒙官方配置好编译环境否则,无法调用对应编译工具
- ubuntu下的nodejs、npm
官方文档说的有歧义,在win10下的nodejs只能下载无法编译,因此需要在ubuntu下也安装nodejs
```
sudo apt install nodejs
```
查看nodejs(v12.13.0+)、npm(v6.14.4+)是否满足官网要求,若否则更新到最新版
```
node -v
npm -v
```
- 路径检查(使用wsl需特别注意)
wsl的环境变量默认和主系统共用,hpm 编译时遍历路径(不知道为啥hpm非要遍历,直接python build.py wifiiot 就没事)会引起错误
```
echo $PATH
```
查看是否有win10 环境变量
如有则进行如下操作禁用:
在wsl终端/etc/目录下新建wsl.conf文件(编辑系统文件,务必sudo开管理员权限!!!)
```
sudo touch /etc/wsl.conf
```
用你习惯的编辑器打开(此处以ubuntu20自带的nano为例,vim等类似)
```
sudo nano wsl.conf
```
写入以下内容保存退出
(nano为 Ctrl+O,Enter,Ctrl+X)
```
[interop]
enabLED=false
appendWindowsPath=false
```
回到主系统以管理员权限打开powershell,输入下列指令重启wsl服务
```
net stop LxssManager
net start LxssManager
```
再次在wsl中查看环境变量
```
echo $PATH
```
此时不再包含/mnt下的环境变量
##hpm 安装和使用
安装hpm命令行工具
```
npm install -g @ohos/hpm-cli
```
查看hpm是否安装成功
```
hpm -V
```
显示正确的hpm版本号
参照官网下载对应组件
下面以WiFiIoT为例(解决方案名以官网最新为准,截止发稿日有已4个)
目录初始化
```
hpm init -t dist
```
下载对应组件及依赖包
```
hpm i @ohos/wifi_iot
```
显示Installed 成功下载
可以看到此时目录下是没有build.py文件的,需要在下一步生成
执行发行版本命令(包含编译)
```
hpm dist
```
显示BUILDE SUCCESS 编译成功
此时 build.py 已生成 后面用python build.py wifiiot 可照常编译
##题外话
- 使用hpm对鸿蒙编译有了一定了解,之前一直想不明白为什么系统工程文件包含这么多语言的代码,现在捋一捋:
硬件开发者接触的主要程序还是嵌入式常用的C/C++,
nodejs顶层调用电脑里的脚本,执行版本管理和python编译文件的生成
python编译路径寻址的中间文件
gn 、nijia类似cmake和make但编译语言不限于C
- hpm的初衷应该是方便在生态做大后的各种组件管理,根据手头的硬件按需下载。只是当前解决方案还不够丰富,期待后续更多优秀方案取得官方认定。一起加油! |
|