【OpenHarmony成长计划】#校园极客秀#碰一碰配网快速上手(附WSL编译环境搭建)

碰一碰配网步骤与流程(以智能风扇为例):

一、整体流程图:

二、开发准备工作

  1. 华为手机,系统版本号为HarmonyOS2.0.0.168及以上(当前支持HarmonyOS系统的手机型号包括:Mate X2、P50Pro、P50、Mate40、Mate40E、Mate 40 Pro、Mate 40 Pro+、Mate 40 RS保时捷设计、P40、P40 Pro、P40 Pro+、Mate 30 4G、Mate 30 Pro 4G、Mate 30 5G、Mate30 Pro 5G、Mate 30 RS保时捷设计、Mate 30E Pro 5G等。)

  2. 小熊派bearpi_hm_nano开发底板+E53_IA1拓展板如下图:

  3. 请自行准备1个NFC标签,可以用手机触碰NFC标签,提前确保NFC功能可用。(说明: 请不要使用HiSpark
    Wi-Fi IoT智能家居套件中自带的NFC板,可以使用小熊派开发板自带NFC标签。)

  4. 在华为应用市场,下载并安装“应用调测助手”APP,用于写NFC标签。

  5. 打开手机设置 > 应用和服务 > 应用管理
    (点击右上角图标,点击显示系统程序选项),搜索“智慧生活基础服务”,检测智慧生活基础服务的版本是否为12.0.2.306及以上。如果不是,请打开华为手机的“智慧生活”APP,点击“我的
    > 设置 > 检查应用更新”,更新“智慧生活基础服务”。

  6. 确保HarmonyOS 手机中api version 在 API 6以上,查看HarmonyOS
    手机API方法:在HarmonyOS
    SDK存储目录下的Sdk\toolchains文件下打开命令行工具,执行如下命令进行查询真机设备的apiversion和releaseType取值。

hdc shell

getprop hw_sc.build.os.apiversion // 返回数值是6或者6以上

三、Linux环境配置(以wsl为例)及源码下载

使用 WSL(Windows Subsystem forLinux)来代替传统的虚拟机,可以避免虚拟机启动速度满,消耗资源多的问题,以下为WSL搭建Open
Harmony开发环境的的步骤(详细内容参考此博客,下文为简要步骤,快速上手WSL):

  1. 右键windows左下角->应用和功能->相关设置-程序和功能->启用或关闭windows功能勾选适用于Linux的windows子系统和虚拟机平台(WSL2需要)选项如下图。按要求重启使设置生效。

在这里插入图片描述

  1. 打开Microsoft Store,搜索wsl2,下载Ubuntu20.04。

在这里插入图片描述

  1. 在开始菜单中找到刚刚安装的ubuntu20.04,打开后会自动进行安装:在这里插入图片描述

  2. 安装完成后,会提示创建用户。按照提示输入你的用户名和密码即可。

  3. 点击下方网址直接下载Linux内核包进行安装,安装完成后,重启电脑。

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

  1. 以管理员权限打开powershell,执行此命令 wsl -l --all -v,显示下图信息代表安装wsl1成功

  1. 下面我们要将它升级成WSL2,执行此命令:wsl --set-version Ubuntu-20.04 2耐心等待即可

  1. 再次执行此命令wsl -l --all -v查询版本确定升级成功。

执行此命令 wsl --set-default-version 2 使WSL 2成为你的默认体系结构。

  1. 将wsl2的默认存储从C盘移到D盘,避免C盘空间不够。

第一步:先关闭Ubuntu:

wsl –shutdown

第二步:导出Ubuntu:

wsl --export Ubuntu-20.04 D:\\wsl-ubuntu20.04.tar

导出完成后,在相应磁盘下即可看到名为wsl-ubuntu20.04.tar的压缩包:

第三步:注销当前分发版:

wsl --unregister Ubuntu-20.04

第四步:重新导入并安装WSL2到指定目录:

wsl --import Ubuntu-20.04 D:\\wsl2-ubuntu20.04 D:\\wsl-ubuntu20.04.tar --version 2

导出完成后,在D磁盘路径下即可看到wsl2-ubuntu20.04文件夹

第五步:设置WSL2默认登录用户(xxx表示你的用户名):

ubuntu2004 config --default-user xxx

第六步:删除之前导出的压缩包(空间足够不删除,也OK) :

del D:\\wsl-ubuntu20.04.tar

  1. window访问wsl2的问题:

直接在资源管理器中输入\\wsl$ 即可:

将此文件夹固定在快速访问中,方便以后的以后直接访问。

  1. 建议安装Windows terminal,并配置启动目录,将启动目录的内容替换为:

\\wsl\$\Ubuntu-20.04\home\xxx(这里的xxx应填入自己设置的Ubuntu的用户名)

然后保存。这样每次都会直接进入主目录 ~

  1. 正式开始搭建OpenHarmony开发环境:
  • 更换Ubuntu软件源,执行如下命令:
   sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

   sudo vim /etc/apt/sources.list
  • 将文件的内容替换成如下内容(阿里云国内源):
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe  multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
  • 保存退出后执行此命令:

sudo apt-get update

  • 创建python软连接:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
  • 安装并升级Python包管理工具(pip3):
sudo apt-get install python3-setuptools python3-pip -y

sudo pip3 install --upgrade pip
  • 安装码云repo工具:
###### 下载码云repo
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > repo
###### 移动repo
sudo mv repo /usr/local/bin/repo
##### 赋予可执行权限
sudo chmod a+x /usr/local/bin/repo
  • 添加ssh-key至gitee:

gitee添加SSH公钥_fangye945a的博客-CSDN博客_ssh生成

注意!博客中的第一步配置错误,正确指令如下:

git config --global user.name “xxx”

git config --global user.email “xxx@xx.com”

git config --global credential.helper store
  • docker的安装和使用

下载网站:https://www.docker.com/products/docker-desktop

安装时会提示:

直接ok,开始安装即可。

安装完毕,点击close and log out,会自动注销电脑,重新登录后,点击Accept

然后在Settings->Resources->WSL Integration中进度设置,勾选Ubuntu-20.04,然后点击应用并重启。

再打开Windows terminal, 执行docker -v,查看docker是否可用:

  • 在powershell中执行如下命令,下载轻量系统docker和标准系统docker:
docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.4

docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker-standard:0.0.5
  • 在Ubuntu中执行如下命令,给docker设置一个别名,方便调用docker:

vim ~/.bashrc

  • 添加如下内容在文档末尾,保存退出:
#docker
alias ohos_small_docker='docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.4'

alias ohos_stand_docker='docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker-standard:0.0.5'
  • 使配置生效:

source ~/.bashrc

如下图所示,直接输入别名,即可快速进入对应的docker镜像进行代码编译(别名可以自行定义):

  • 数字管家代码下载:
cd ~

git clone git@gitee.com:openharmony-sig/knowledge_demo_smart_home.git
  • OpenHarmony代码下载:
#特别注意:请下载OpenHarmony 1.0.1 版本

mkdir ~/OpenHarmony1.01

cd ~/OpenHarmony1.01

repo init -u git@gitee.com:openharmony/manifest.git -b
OpenHarmony_1.0.1_release --no-repo-verify

repo sync -c

repo forall -c 'git lfs pull'
  • 代码拷贝:
cp -rfa ~/knowledge_demo_smart_home/dev/device/bearpi ~/OpenHarmony1.01/device/

cp -rfa ~/knowledge_demo_smart_home/dev/team_x ~/OpenHarmony1.01/vendor/

cp -rfa ~/knowledge_demo_smart_home/dev/third_party/iot_link ~/OpenHarmony1.01/third_party/

整合并修改完成后的目录结构如下图:

  1. 设备端代码的编译和烧录:

通过WindowsTerminal打开wsl2,输入以下命令:

cd ~

cd OpenHarmony1.01

ohos_small_docker

hb set

当出现Input code path:后,输入.(没错,就是输入一个点,.表示当前路径。)

按键盘上下键选择smart_fan,按下回车进行确定。

输入hb build 进行编译,编译成功会提示build success

编译生成的固件在OpenHarmony1.01下的out文件夹内。

固件烧录:

在Windows中打开Hiburn工具,并点击Refresh,选择相应com(在设备管理器中的端口中查看,上文有提到过)如下图示
在这里插入图片描述

点击左上角setting,设置波特率(baund)为921600,

点击Hiburn工具中的Select file按钮,在弹出的文件框中,选择代码编译所生成的固件(Hi3861_wifiiot_app_allinone.bin)然后确认;选中Auto burn按钮,然后点击connect按钮,等待下载,如下图:

按下设备上的复位按钮,开始烧录固件,当第二次出现successful后,手动点击disconnect(Refresh旁的那个按键),烧录完成!

四、Windows开发环境准备

  1. 安装DevEco studio :Windows系统下,下载DevEco Studio 3.0 Beta2版本,并配置好DevEco Studio开发环境。

  2. 烧录工具下载:HiBurn链接1HiBurn连接2(任选一个连接进行下载)

  3. USB转串口驱动安装:CH340驱动,安装完成后,可以通过Windows上的设备管理器查看串口号,例如目前开发板的串口号为COM6如下图:

设备管理器可用快捷键win+X后再按下M键打开,如下图:

  1. 数字管家应用的编译与安装
  • 打开DevEco-studio

File -> Setting -> SDK Manager -> HarmonyOS Legacy SDK ->Platforms 页面中确保API6 相关sdk 已下载,如下图所示:

  • 打开数字管家项目(我的数字管家文件打开路径:[\\wsl.localhost\Ubuntu-20.04\home\user\knowledge_demo_smart_home\FA\DistSchedule](file:///\wsl.localhost\Ubuntu-20.04\home\user\knowledge_demo_smart_home\FA\DistSchedule),根据自己的数字管家下载位置来确定)

  • 在AGC((AppGallery Connect)中创建项目和应用:

打开DevEcoStudio,点击右上角圆形头像登录华为账号(如下图)后

在这里插入图片描述

再次点击右上角圆形头像,点击AppGallery Connect(如下图)。

在这里插入图片描述

  • 登录AGC平台,创建你的项目: 填写自己的项目名称(可以自定义)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3me5SyON-1650637877127)(https://gitee.com/affluent/image/raw/master/202204211534990.png)]

  • 添加应用,应用名称自定义,该名称后面会用到。

  • 添加配置文件

将此文件复制放在entry目录下

将下列三个文件bundleName由com.example.distschedule修改为自己刚刚在AGC平台添加应用时设置的bundleName。

./entry/src/config.json

./netconfig/src/main/config.json

./netconfig/src/main/js/default/pages/index/index.js

  • 手机端所需准备:

​ 将手机用USB数据线连接电脑,将USB连接方式设置为传输文件:

打开手机设置,点击关于手机,多次点击版本号,接着屏幕下方会出现会出现您已处于开发者模式(如下左图),无需进行此操作。(前提要在手机上登录华为账号),处于开发者模式后,点击系统和更新,点击开发人员选项,点击USB调试(如下右图)

选择确定(如下图)

手机和电脑连接成功后,会在右上角显示手机型号如上图,之后的步骤要保持手机与电脑的连接。

  • 点击左上角Files,选择settings,来到HarmonyOS SDK窗口,复制文件路径至文件夹中搜索框中,进入toolchains文件夹,全选文件路径并输入cmd,进入命令窗口。

在命令窗口输入hdc shell bm get -u ,得到了手机的UDID,此UDID需要保存。然后来到AGC设备管理平台,进入用户与访问添加设备,将此UDID填入,设备名称自定义。

  • 获取密钥.csr和签名.p12【参考官网文档】

在Generate CSR界面,选择密钥和设置CSR文件存储路径:

点击Finish按钮,创建CSR文件成功,可以在存储路径下获取生成的密钥库文件(.p12)和证书请求文件(.csr)

  • 获取数字证书(.cer文件)和Profile文件(.p7b文件)【参考官网文档】

数字证书(.cer文件

登录AppGallery Connect网站,在网站首页中点击“用户与访问”:
在这里插入图片描述

在左侧导航栏点击“证书管理”,进入“证书管理”页面。

点击“新增证书”,弹出“新增证书”窗口。
在“新增证书”窗口中填写要申请的证书信息(证书类型选择调试证书),点击“提交”。
在这里插入图片描述

证书申请成功后,“证书管理”页面展示“证书名称”、“证书类型”,“失效日期”和“操作”列信息。

在“操作”列点击“下载”,将证书(.cer文件)与.p12和.csr文件放在一起。

申请profile文件(.p7b文件):

回到首页,在网站首页中点击“我的项目”。

找到您的项目,点击您创建的HarmonyOS应用。

在左侧导航栏选择“HarmonyOS应用> HAP Provision Profile管理”,进入“管理HAP Provision Profile”页面。

点击右上角“添加”,弹出“HarmonyAppProvision信息”窗口。

在弹出的“HarmonyAppProvision信息”窗口中添加Profile(类型选择调试)。

选择设备:选择刚刚所添加的设备

下载Profile文件,将Profile文件(.p7b文件)与证书(.cer文件),.p12和.csr文件放在同一个文件夹中。

手动签名所需文件已全部下载完成,现在到IDE中进行配置

来到DevEco Studio(先登录),在 File (文件选项栏)> Project Structure > Project>Signing Configs

点击Run中的Edit Configurations

在此窗口执行如图操作

点击右上角的三角符号,将数组管家应用安装到手机上!(需要个几分钟的等待)

安装完成后,输入手机号登录,数字管家应用安装成功!(图转自官网)

五、NFC和应用服务关联的相关配置

  1. NFC标签信息的申请和写入
  • 下载应用调测助手(建议下载1.2.1.300的版本,应用市场下载的最新版本目前无法关联包名)

1.2.1.300版本下载 提取码:1234(记得关闭应用市场的自动升级)

  • 申请productID:
    在这里插入图片描述

其中自定义数据的生成规则和部分设备NFC配网信息可参照官网说明,例如智能风扇的自定义数据为:

1246150601d88056b027dd2ca47205Fan01308123456784011511teamX-Fan01如下左图表示成功写入手机nfc缓存区,下右图表示写入设备的nfc标签成功。

  1. 配置应用服务关联
  • 进入华为开发者联盟管理中心页面中依次点击智慧服务->HarmonyOS服务开放平台,最终进入到下图的智慧服务平台。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YMjhpg6v-1650637877140)(https://gitee.com/affluent/image/raw/master/202204211538363.jpeg)]

  • 点击HarmonyOS测试服务填写服务相关信息,点击创建按钮完成智慧服务模型的创建。

  • 完善智慧服务相关信息(带星号的为必填项)

填完要记得点击保存

此处官网教程有误,正确填法如下图(错误原因:网页标签错位,名称与内容不对应)

实现类型按照默认设置就行,支持设备选择手机,App名称填写建议与AGC平台应用名称,其他的按下图所示填写信息

  • 点击测试栏,进入智慧服务测试页面,进行测试相关信息的填写:

第一步:点击创建进入创建真机测试名单窗口。

填写手机号码与描述后确认。

第二步:确认 该手机已经录入名单中;

第三步:点击准备测试按钮。到此,应用功能唤起信息申请和配置完成。

至此碰一碰配网步骤全部完成!

六、碰一碰配网可能遇见的问题及部分解决方法

(转载自侯鹏飞老师的相关文章

1. 手机碰一碰NFC标签,弹框提示“系统错误”,如何处理?

问题现象:手机碰一碰待连接设备,弹框提示“系统错误”,更换Wi-Fi后报错仍无法清除。

可能原因:手机时间与网络时间不一致。设备发起请求时,会将手机时间与设备激活码等信息传到云端。云端会对手机时间与网络时间的一致性进行校验,以确保请求的合法性。如果两者的时间差大于一小时,则请求无效。

解决措施:将手机的时间设置为“自动设置”,使手机与当前网络上的时间同步。

以华为手机为例:

  • 进入手机“设置”。
  • 选择“ 系统和更新 > 日期和时间”。
  • 开启“自动设置”开关。

2.手机碰一碰NFC标签,提示“未获取到应用信息”。

问题现象:手机碰一碰NFC标签,提示“未获取到应用信息”。

可能原因:

原因一:服务意图配置的HarmonyOS标签的产品型号不是当前的ProductID。

原因二:NFC标签写入的码流中的ProductID有误。

解决措施:

  • 确认服务意图配置的HarmonyOS标签的产品型号是否为当前的ProductID。

    • 登录华为快服务智慧平台。
    • 在服务列表中找到对应的原子化服务,单击“编辑”。
    • 选择“配置 > HarmonyOS标签”,确认设备标签中的“产品型号”是否正确。如果不正
      确,需要重新配置。
  • 确认NFC标签码流的ProductID字段是否正确。如果不正确,需要重新写入。

  • 若之前已拉起成功,且上述检测均正确,可点击重新发布快服务至测试态。

    • 登录华为快服务智慧平台。
    • 在服务列表中找到对应的原子化服务,单击“编辑”。
    • 点击“测试 > 重新准备测试”按钮。
    • 等待几分钟重新尝试碰一碰
  • 如果以上方法都使用过后,该问题依旧未解决,则可以查看此文章

3.碰一碰拉不起应用

问题现象:碰一碰之后,拉不起应用,有显示碰一碰动画

可能原因:

  • 检测网络能否上网

  • 检测productId、包名、服务名、子型号:快服务助手中检测 productId和写入nfc的是否一致、包名为已安装数字管家包名,服务名是否为项目config.json 的 AddDeviceAbility的路径一致,(子型号填00)

  • 快服务测试是否点击重新准备测试

  • 刚配置完,可能需要等待一会

  • 如果拉起成功,但是应用闪退,Nfc自定义数据写错了

4.碰一碰NFC标签无法拉起FA,NFC服务提示“发现NFC标签,点击启动应用”。

问题现象:手机碰一碰待连接设备,NFC服务弹出提示“发现NFC标签,点击启动

应用”,无法正常拉起原子化服务。

可能原因:NFC标签码流录入错误,导致手机系统无法正确解析NFC码流。

解决措施

  • 在Device Partner平台上申请NFC标签码流,并根据实际设备信息生成可用的标签

    码流。

  • 将码流重新写入NFC标签,并重试碰一碰拉起原子化服务。

5.手机首次碰一碰NFC标签,拉起的是非配网FA页面。

问题现象:手机首次碰一碰NFC标签,拉起的是非配网FA页面(比如控制FA页面)。

可能原因:服务意图配置的Ability名称不是配网FA页面的Ability名称。

原子化服务包中其他模块的Ability与配网FA的Ability重名,导致拉起的FA页面有误。

解决措施:

  • 确认服务意图配置的“服务名”是否为配网FA的Ability名称。

    • 登录华为快服务智慧平台。

    • 在服务列表中找到对应的原子化服务,单击“编辑”。

    • 选择“配置 > FA信息”,确认配置方式中的“服务名”是否为配网FA的Ability名称。

    如果不正确,需要重新配置。

  • 确认其他模块Ability名称是否与配网FA的Ability重名。

​ 在DevEco Studio项目下,逐个排查其他模块中的“src/main/config.json”文件。

​ 在json文件中,找到“module/mainAbility”配置项,检查是否与配网FA的Ability同名。

​ 找到并选中重名的Ability,单击右键,选择“Refactor > Rename”,重命名文件。

6.问题现象:

碰一碰拉起配网FA,无法进行NAN配网,FA日志中打印碰一碰Intent参数

nanSessionId字段的值为“NAN_DEVICE_NOT_FOUND”。

可能原因:

用于配网的模组不支持NAN配网。

手机与模组之间距离大于30cm。

上一次碰一碰拉起配网FA进行NAN配网未完成,模组的NAN通道将锁定一段时间。

解决措施:

  • 咨询产品对应模组厂商,确认模组是否支持NAN配网。

  • 将手机靠近至模组30cm半径以内后重新碰一碰配网。

  • 等待模组日志打印以下信息时,即可进行NAN配网(x代表任意数字)。

​ Send: msgType[x] msgId[x] msgLen[x]

7.问题现象:

碰一碰拉起配网FA,进度100% 跳转不到控制页面

可能原因:

NAN发送包失败,断开连接了。

[NetCfgNAN]Send: msgType[9] msgId[2] msgLen[23]

send nan packet fail.

wait STA join AP

解决措施:

  • IoT 进行复位重新配网

  • 手机重新配网

七、小记

Linux中vim工具的使用方法和技巧:

​ 切换模式:

​ 编辑模式Insert Mode:按i键进入编辑模式;

​ 命令模式Command Mode:按ESC键退出编辑进入命令模式

​ 命令:

​ 输入 :wq 保存并退出vim工具(注意所有的命令前面都有有一个冒号:)

​ 输入 :q 退出vim工具

​ 输入 :q! 强制退出vim工具

​ 使用小技巧:

​ 使用vim删除全部内容:先用G(一定得是大写的G) 转到文件尾,然后使用此命令:1,.d(别忘了冒号,在vim中," . "表示当前 行,“1,.”表示从第一行到当前行,“d ”表示删除。)

​ 如果只是想删除某一行:

​ 那么把光标指到该行,然后输入d d 即可。

​ 设置显示行号:

​ 在 vim 里执行(在命令模式下直接按冒号,并输入此命令:set number

常见的配网方式:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值