电子产业一站式赋能平台

PCB联盟网

搜索
查看: 671|回复: 0
收起左侧

【Hi3861 WiFiIoT试用连载】踩坑--hpm使用问题总结

[复制链接]

2607

主题

2607

帖子

7472

积分

高级会员

Rank: 5Rank: 5

积分
7472
发表于 2021-1-11 09:57:17 | 显示全部楼层 |阅读模式
【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的初衷应该是方便在生态做大后的各种组件管理,根据手头的硬件按需下载。只是当前解决方案还不够丰富,期待后续更多优秀方案取得官方认定。一起加油!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表