登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
登录
注册
9月20日,Gitee × 模力方舟来成都了!聚焦 AI 应用在开发范式、算力架构、交互设计、硬件选型等跨场景创新实践,点击立即报名~
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
7
Star
28
Fork
8
Gitee Community
/
OpenHarmony组件开发大赛-有奖征文
代码
Issues
17
Pull Requests
0
Wiki
统计
流水线
服务
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
从HarmonyOS过渡到OpenHarmony应用开发指南&埋坑
意向
#I4BT42
需求
xiadewang
创建于
2021-09-25 23:36
为何要写这篇文章呢?主要是通过本次组件开发大赛,发现好多人提交的代码的工程目录结构都不对,还带有java代码,没有区分HamonyOS开发和OpenHarmony的开发。想通过本篇文章帮助各位开发者快速入门OpenHarmony应用开发 # 从HarmonyOS过渡到OpenHarmony应用开发指南&埋坑 开篇第一句,所有学习与开发资料以官方资料为准。任何博客类只能作为参考,自行判断优良,不要被误导,包括本人的所有博客。 ## HarmonyOS官方文档地址 应用开发:https://developer.harmonyos.com/cn/documentation 设备开发:https://device.harmonyos.com/ ## OpenHarmony官方文档地址 https://gitee.com/openharmony/docs/ ## HarmonyOS应用开发&OpenHarmony应用开发区别 关于HarmonyOS与OpenHarmony的区别我这里不再过多阐述,请看开放原子基金会的官方介绍。 **我这里着重从开发角度上讲解它们的区别:** ### 1、开发语言支持 HarmonyOS主要支持java和js来开发应用(当然还有c和c++),而**OpenHarmony不支持java来开发应用。** 目前阶段HarmonyOS里面还是有部分功能是基于AOSP的,因此还是要用java,而OpenHarmony不再使用java,应该是想彻底放弃AOSP了。 ### 2、sdk的不同 应用开发工具都是统一使用华为的DevEco Studio,但是使用的sdk不同,开发前首先要切换sdk配置。虽然HarmonyOS和OpenHarmony都可以用js来开发应用,但是它们的api还是有些细微的区别,**OpenHarmony的api参考请参看OpenHarmony的官方文档**,千万别看错了。然后OpenHarmony的sdk请下载官方的支持OpenHarmony开发的sdk,而不是DevEco studio自带的HarmonyOS sdk。 关于OpenHarmony sdk配置请参考官方文档,我这里仅仅附上官方链接 https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/%E9%85%8D%E7%BD%AEOpenHarmony-SDK.md ### 3、创建项目方式不同 在DevEco 2.2Beat1版本之后,可以直接支持创建OpenHarmony应用项目了,创建方式如下  这里重点对standard解释下,即OpenHarmony官方说的“标准系统”,本文中所说的所有OpenHarmony应用开发都是针对的标准系统。 轻量和小型系统(参考内存<128MB) 标准系统(参考内存≥128MB) 详细说明请看官方文档 https://gitee.com/openharmony/docs/blob/master/zh-cn/readme.md ### 4、工程目录结构不同 HarmonyOS JS项目结构:  OpenHarmony 项目结构:  ### 5、运行调测方式不同 HarmonyOS支持previewer预览、模拟器运行、真机运行三种方式,OpenHarmony支持previewer预览、真机(目前主要使用3516系列开发板)运行。 首先,目前OpenHarmony是没有模拟器的,真正运行调测只能借助开发板(主要采用HI3516系列开发板),注意目前是不支持手机平板等真机调测的。 ### 6、签名方式不同 OpenHarmony的签名方式我这里就不赘述,直接附上官方文档链接 https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/%E9%85%8D%E7%BD%AEOpenHarmony%E5%BA%94%E7%94%A8%E7%AD%BE%E5%90%8D%E4%BF%A1%E6%81%AF.md HarmonyOS的签名我最想吐槽的就是需要添加设备ID。OpenHarmony的签名我只想吐槽一句,既然open为何还必须要签名 ## 埋坑 上面的区别对比已经埋了部分坑了,下面再针对纯粹上层应用开发人员初次接触OpenHarmony开发的坑。 ### 1、OpenHarmony操作系统编译 为何要编译操作系统,如果你手上有现成的安装好操作系统的开发板你,操作系统和sdk版本也对应,比如我们是基于OpenHarmony-SDK-2.0-Canary版本,那你应该烧录一个对应的操作系统版本。比如我手上是很久之前的一个1.0版本的3516开发板,显然要升级。 操作系统编译的完整资料依然请参考官网: https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-standard.md 关于这里我强调几点: **(1)使用repo进行代码仓同步时** 官方描述的操作命令如下 ```shell repo sync -c ``` 建议替换成 ```shell repo sync -c -j8 ``` 这个后面的数字8根据自己的cpu核数进行设置,查看cpu核数的命令如下 ```shell grep -c 'processor' /proc/cpuinfo ```  **这样配置之后,会大大加快你的同步速度,否则这个同步时间会非常漫长** 同步过程请使用无限制的公网网络,比如某些公司访问外网会有限制。然后就是网络下载速度也会会直接关系到你的同步速度。 repo中途同步失败了(比如断网或者异常关机),也不要过于紧张,可以根据log提示删除某些同步异常的部分仓库,然后继续执行上面的同步命令即可。 **(2)编译环境安装时** Linux编译服务器终端输入不识别的命令时,提示"ImportError: No module named apt_pkg" 解决办法: 执行如下命令重新安装python3-apt。 ```shell sudo apt-get remove python3-apt sudo apt-get install python3-apt ``` **(3)编译构建时** 编译构建时,我这里遇到一个大坑,就是电脑突然断电了,然后再执行编译的时候报大量错误,错误内容如下 rm: cannot remove ‘XXXXX‘: Bad message,这种问题本来可以采用fsck 的方式来修复文件系统,但是由于编译过程中产生了大量的很小的临时文件,所以修复起来太慢太不现实,干脆删除了虚拟机重新加载之前保存的虚拟机镜像,重新再来一次。 ### 2、操作系统烧录 官方描述的是使用网口进行烧录,官网地址如下 https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-standard-burn.md 需要注意的点: 本文档针对的开发版是官方推荐的AI_Camera_Hi3516DV300开发套件。 **(1)确保USB转串口驱动能安装上,即在PC的设备管理器上能识别到COM口** 首先安装USB-to-Serial Comm Port.exe驱动,如果没有识别请再安装CH341SER驱动。 **(2)网口烧录注意事项** 不支持无线,需要使用网线直连PC,网卡是千兆网卡,最好选择六类网线,这样速度更快。 PC端需要设置ip地址为192.168.1.2/24,网关为192.168.1.1,如下图  烧录工具上网口的设置: - upload_net_server_ip:对应PC上网口设置的地址 - upload_net_client_mask:设置开发板的子网掩码,对应PC上设置的子网掩码,确保开发板和pc在一个网段。 - upload_net_client_gw:和PC上设置的网关保持一致。 - upload_net_client_ip:设置开发板的IP地址,例如192.168.1.3,确保和PC在一个网段即可。 我没有使用官方推荐的DevEco Device Tool进行烧录,而是使用了我喜欢的HiBurn进行烧录,但是基本配置相同,截图如下  点完烧写按钮之后,需要先下电再上电,上电之后就会自动进行烧写了。 网口烧录时间比较慢,标准系统2.2beta版本烧录估计要20分钟。 **(3)USB烧录(强烈推荐,最快的方式,一分钟即可烧写完毕)** 这种方式是我在配置过程中最卡我的一种方式。主要就是USB的驱动一直无法识别。首先我们来看看正确识别驱动之后,设备管理器中的页面,必须看到通用串行设备下识别了设备才行,如下图  **(1)开发套件上面有两个typec接口,屁股后面的那个才是USB口,前面的仅仅是供电口。** **(2)安装[HiUSBBurnDriver](http://www.hihope.org/download/download.aspx?mtt=11)驱动程序** **(3)win10操作系统需要修改注册表** a.创建一个“文本文档.TXT”,文件后缀名修改为.reg,如usb.reg。 b.右键打开创建的usb.reg,将如下脚本拷贝到该文件中,然后保存并关闭。 ``` Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\12D1D0010100]"SkipBOSDescriptorQuery"=hex:01,00,00,00"osvc"=hex:00,00"IgnoreHWSerNum"=hex:01 ``` c.双击执行usb.reg文件,自动修改注册表文件信息 **(4)我PC依然迟迟无法识别USB驱动的时候,我在系统的boot里面(串口终端连接下,进入uboot之前,狂按回车进入boot)输入以下命令终于解决了无法识别驱动的问题** ``` usb device ``` **(5)待识别了USB驱动之后烧录需要注意的问题** 设置好烧录镜像之后,在下电在上电之前,请一直按住开发板上面的update按钮(在开发板的串口旁边),上电之后,待出现开始烧写的打印之后再松开按钮。 ### 3、OpenHarmony安装应用到开发板 此处依然贴出对应的官方文档 https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/%E5%AE%89%E8%A3%85%E8%BF%90%E8%A1%8COpenHarmony%E5%BA%94%E7%94%A8.md **(1)这里使用的是hdc_std.exe,而不是HarmonyOS sdk中的hdc.exe;** **(2)hdc_std.exe在哪里?** 它在OpenHarmony sdk的toolchains目录下面,确保它和开发板上的版本一致,即确保sdk版本和开发板的操作系统版本匹配即可。 ### 4、自己编译OpenHarmony SDK 为了确保sdk和自己烧写的操作系统版本一致,我们可以自己编译sdk。 **编译命令如下:** ``` ./build.sh --product-name ohos-sdk --ccache ``` **结果输出:** ``` out/ohos-arm64-release/packages/ohos-sdk/ ``` 耗时了好久终于写完了,希望本文加上配上OpenHarmony官方的文档能够帮助更多的开发者快速投入OpenHarmony共建中。 **作者:夏德旺 **
为何要写这篇文章呢?主要是通过本次组件开发大赛,发现好多人提交的代码的工程目录结构都不对,还带有java代码,没有区分HamonyOS开发和OpenHarmony的开发。想通过本篇文章帮助各位开发者快速入门OpenHarmony应用开发 # 从HarmonyOS过渡到OpenHarmony应用开发指南&埋坑 开篇第一句,所有学习与开发资料以官方资料为准。任何博客类只能作为参考,自行判断优良,不要被误导,包括本人的所有博客。 ## HarmonyOS官方文档地址 应用开发:https://developer.harmonyos.com/cn/documentation 设备开发:https://device.harmonyos.com/ ## OpenHarmony官方文档地址 https://gitee.com/openharmony/docs/ ## HarmonyOS应用开发&OpenHarmony应用开发区别 关于HarmonyOS与OpenHarmony的区别我这里不再过多阐述,请看开放原子基金会的官方介绍。 **我这里着重从开发角度上讲解它们的区别:** ### 1、开发语言支持 HarmonyOS主要支持java和js来开发应用(当然还有c和c++),而**OpenHarmony不支持java来开发应用。** 目前阶段HarmonyOS里面还是有部分功能是基于AOSP的,因此还是要用java,而OpenHarmony不再使用java,应该是想彻底放弃AOSP了。 ### 2、sdk的不同 应用开发工具都是统一使用华为的DevEco Studio,但是使用的sdk不同,开发前首先要切换sdk配置。虽然HarmonyOS和OpenHarmony都可以用js来开发应用,但是它们的api还是有些细微的区别,**OpenHarmony的api参考请参看OpenHarmony的官方文档**,千万别看错了。然后OpenHarmony的sdk请下载官方的支持OpenHarmony开发的sdk,而不是DevEco studio自带的HarmonyOS sdk。 关于OpenHarmony sdk配置请参考官方文档,我这里仅仅附上官方链接 https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/%E9%85%8D%E7%BD%AEOpenHarmony-SDK.md ### 3、创建项目方式不同 在DevEco 2.2Beat1版本之后,可以直接支持创建OpenHarmony应用项目了,创建方式如下  这里重点对standard解释下,即OpenHarmony官方说的“标准系统”,本文中所说的所有OpenHarmony应用开发都是针对的标准系统。 轻量和小型系统(参考内存<128MB) 标准系统(参考内存≥128MB) 详细说明请看官方文档 https://gitee.com/openharmony/docs/blob/master/zh-cn/readme.md ### 4、工程目录结构不同 HarmonyOS JS项目结构:  OpenHarmony 项目结构:  ### 5、运行调测方式不同 HarmonyOS支持previewer预览、模拟器运行、真机运行三种方式,OpenHarmony支持previewer预览、真机(目前主要使用3516系列开发板)运行。 首先,目前OpenHarmony是没有模拟器的,真正运行调测只能借助开发板(主要采用HI3516系列开发板),注意目前是不支持手机平板等真机调测的。 ### 6、签名方式不同 OpenHarmony的签名方式我这里就不赘述,直接附上官方文档链接 https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/%E9%85%8D%E7%BD%AEOpenHarmony%E5%BA%94%E7%94%A8%E7%AD%BE%E5%90%8D%E4%BF%A1%E6%81%AF.md HarmonyOS的签名我最想吐槽的就是需要添加设备ID。OpenHarmony的签名我只想吐槽一句,既然open为何还必须要签名 ## 埋坑 上面的区别对比已经埋了部分坑了,下面再针对纯粹上层应用开发人员初次接触OpenHarmony开发的坑。 ### 1、OpenHarmony操作系统编译 为何要编译操作系统,如果你手上有现成的安装好操作系统的开发板你,操作系统和sdk版本也对应,比如我们是基于OpenHarmony-SDK-2.0-Canary版本,那你应该烧录一个对应的操作系统版本。比如我手上是很久之前的一个1.0版本的3516开发板,显然要升级。 操作系统编译的完整资料依然请参考官网: https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-standard.md 关于这里我强调几点: **(1)使用repo进行代码仓同步时** 官方描述的操作命令如下 ```shell repo sync -c ``` 建议替换成 ```shell repo sync -c -j8 ``` 这个后面的数字8根据自己的cpu核数进行设置,查看cpu核数的命令如下 ```shell grep -c 'processor' /proc/cpuinfo ```  **这样配置之后,会大大加快你的同步速度,否则这个同步时间会非常漫长** 同步过程请使用无限制的公网网络,比如某些公司访问外网会有限制。然后就是网络下载速度也会会直接关系到你的同步速度。 repo中途同步失败了(比如断网或者异常关机),也不要过于紧张,可以根据log提示删除某些同步异常的部分仓库,然后继续执行上面的同步命令即可。 **(2)编译环境安装时** Linux编译服务器终端输入不识别的命令时,提示"ImportError: No module named apt_pkg" 解决办法: 执行如下命令重新安装python3-apt。 ```shell sudo apt-get remove python3-apt sudo apt-get install python3-apt ``` **(3)编译构建时** 编译构建时,我这里遇到一个大坑,就是电脑突然断电了,然后再执行编译的时候报大量错误,错误内容如下 rm: cannot remove ‘XXXXX‘: Bad message,这种问题本来可以采用fsck 的方式来修复文件系统,但是由于编译过程中产生了大量的很小的临时文件,所以修复起来太慢太不现实,干脆删除了虚拟机重新加载之前保存的虚拟机镜像,重新再来一次。 ### 2、操作系统烧录 官方描述的是使用网口进行烧录,官网地址如下 https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-standard-burn.md 需要注意的点: 本文档针对的开发版是官方推荐的AI_Camera_Hi3516DV300开发套件。 **(1)确保USB转串口驱动能安装上,即在PC的设备管理器上能识别到COM口** 首先安装USB-to-Serial Comm Port.exe驱动,如果没有识别请再安装CH341SER驱动。 **(2)网口烧录注意事项** 不支持无线,需要使用网线直连PC,网卡是千兆网卡,最好选择六类网线,这样速度更快。 PC端需要设置ip地址为192.168.1.2/24,网关为192.168.1.1,如下图  烧录工具上网口的设置: - upload_net_server_ip:对应PC上网口设置的地址 - upload_net_client_mask:设置开发板的子网掩码,对应PC上设置的子网掩码,确保开发板和pc在一个网段。 - upload_net_client_gw:和PC上设置的网关保持一致。 - upload_net_client_ip:设置开发板的IP地址,例如192.168.1.3,确保和PC在一个网段即可。 我没有使用官方推荐的DevEco Device Tool进行烧录,而是使用了我喜欢的HiBurn进行烧录,但是基本配置相同,截图如下  点完烧写按钮之后,需要先下电再上电,上电之后就会自动进行烧写了。 网口烧录时间比较慢,标准系统2.2beta版本烧录估计要20分钟。 **(3)USB烧录(强烈推荐,最快的方式,一分钟即可烧写完毕)** 这种方式是我在配置过程中最卡我的一种方式。主要就是USB的驱动一直无法识别。首先我们来看看正确识别驱动之后,设备管理器中的页面,必须看到通用串行设备下识别了设备才行,如下图  **(1)开发套件上面有两个typec接口,屁股后面的那个才是USB口,前面的仅仅是供电口。** **(2)安装[HiUSBBurnDriver](http://www.hihope.org/download/download.aspx?mtt=11)驱动程序** **(3)win10操作系统需要修改注册表** a.创建一个“文本文档.TXT”,文件后缀名修改为.reg,如usb.reg。 b.右键打开创建的usb.reg,将如下脚本拷贝到该文件中,然后保存并关闭。 ``` Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\12D1D0010100]"SkipBOSDescriptorQuery"=hex:01,00,00,00"osvc"=hex:00,00"IgnoreHWSerNum"=hex:01 ``` c.双击执行usb.reg文件,自动修改注册表文件信息 **(4)我PC依然迟迟无法识别USB驱动的时候,我在系统的boot里面(串口终端连接下,进入uboot之前,狂按回车进入boot)输入以下命令终于解决了无法识别驱动的问题** ``` usb device ``` **(5)待识别了USB驱动之后烧录需要注意的问题** 设置好烧录镜像之后,在下电在上电之前,请一直按住开发板上面的update按钮(在开发板的串口旁边),上电之后,待出现开始烧写的打印之后再松开按钮。 ### 3、OpenHarmony安装应用到开发板 此处依然贴出对应的官方文档 https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/%E5%AE%89%E8%A3%85%E8%BF%90%E8%A1%8COpenHarmony%E5%BA%94%E7%94%A8.md **(1)这里使用的是hdc_std.exe,而不是HarmonyOS sdk中的hdc.exe;** **(2)hdc_std.exe在哪里?** 它在OpenHarmony sdk的toolchains目录下面,确保它和开发板上的版本一致,即确保sdk版本和开发板的操作系统版本匹配即可。 ### 4、自己编译OpenHarmony SDK 为了确保sdk和自己烧写的操作系统版本一致,我们可以自己编译sdk。 **编译命令如下:** ``` ./build.sh --product-name ohos-sdk --ccache ``` **结果输出:** ``` out/ohos-arm64-release/packages/ohos-sdk/ ``` 耗时了好久终于写完了,希望本文加上配上OpenHarmony官方的文档能够帮助更多的开发者快速投入OpenHarmony共建中。 **作者:夏德旺 **
评论 (
1
)
登录
后才可以发表评论
状态
意向
意向
已确认
方案设计
UI设计
开发中
待测试
测试中
待演示
待上线
已上线
已验收
已拒绝
挂起
负责人
未设置
标签
未设置
项目
未立项任务
未立项任务
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
未关联
master
develop
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
预计工期
(小时)
参与者(1)
其他
1
https://gitee.com/gitee-community/OHZW210809.git
[email protected]
:gitee-community/OHZW210809.git
gitee-community
OHZW210809
OpenHarmony组件开发大赛-有奖征文
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册