|
|
|
|
公众号矩阵

从HarmonyOS过渡到OpenHarmony应用开发指南&埋坑

HarmonyOS主要支持java和js来开发应用(当然还有c和c++),而OpenHarmony不支持java来开发应用。目前阶段HarmonyOS里面还是有部分功能是基于AOSP的,因此还是要用java,而OpenHarmony不再使用java,应该是想彻底放弃AOSP了。

作者:夏德旺 来源:鸿蒙社区|2021-10-11 08:37

开篇第一句,所有学习与开发资料以官方资料为准。任何博客类只能作为参考,自行判断优良,不要被误导,包括本人的所有博客。

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/配置OpenHarmony-SDK.md

3、创建项目方式不同

在DevEco 2.2Beat1版本之后,可以直接支持创建OpenHarmony应用项目了,创建方式如下:

从HarmonyOS过渡到OpenHarmony应用开发指南&埋坑-鸿蒙HarmonyOS技术社区

这里重点对standard解释下,即OpenHarmony官方说的“标准系统”,本文中所说的所有OpenHarmony应用开发都是针对的标准系统。

轻量和小型系统(参考内存<128MB)

标准系统(参考内存≥128MB)

详细说明请看官方文档

https://gitee.com/openharmony/docs/blob/master/zh-cn/readme.md

4、工程目录结构不同

HarmonyOS JS项目结构:

从HarmonyOS过渡到OpenHarmony应用开发指南&埋坑-鸿蒙HarmonyOS技术社区

OpenHarmony 项目结构:

从HarmonyOS过渡到OpenHarmony应用开发指南&埋坑-鸿蒙HarmonyOS技术社区

5、运行调测方式不同

HarmonyOS支持previewer预览、模拟器运行、真机运行三种方式,OpenHarmony支持previewer预览、真机(目前主要使用3516系列开发板)运行。

首先,目前OpenHarmony是没有模拟器的,真正运行调测只能借助开发板(主要采用HI3516系列开发板),注意目前是不支持手机平板等真机调测的。

6、签名方式不同

OpenHarmony的签名方式我这里就不赘述,直接附上官方文档链接

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/配置OpenHarmony应用签名信息.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进行代码仓同步时

官方描述的操作命令如下

  1. repo sync -c 

建议替换成

  1. repo sync -c -j8 

这个后面的数字8根据自己的cpu核数进行设置,查看cpu核数的命令如下

  1. grep -c 'processor' /proc/cpuinfo 
从HarmonyOS过渡到OpenHarmony应用开发指南&埋坑-鸿蒙HarmonyOS技术社区

这样配置之后,会大大加快你的同步速度,否则这个同步时间会非常漫长

同步过程请使用无限制的公网网络,比如某些公司访问外网会有限制。然后就是网络下载速度也会会直接关系到你的同步速度。

repo中途同步失败了(比如断网或者异常关机),也不要过于紧张,可以根据log提示删除某些同步异常的部分仓库,然后继续执行上面的同步命令即可。

(2)编译环境安装时

Linux编译服务器终端输入不识别的命令时,提示"ImportError: No module named apt_pkg"

解决办法:

执行如下命令重新安装python3-apt。

  1. sudo apt-get remove  python3-apt 
  2. 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,如下图

从HarmonyOS过渡到OpenHarmony应用开发指南&埋坑-鸿蒙HarmonyOS技术社区

烧录工具上网口的设置:

  • 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进行烧录,但是基本配置相同,截图如下

从HarmonyOS过渡到OpenHarmony应用开发指南&埋坑-鸿蒙HarmonyOS技术社区

点完烧写按钮之后,需要先下电再上电,上电之后就会自动进行烧写了。

网口烧录时间比较慢,标准系统2.2beta版本烧录估计要20分钟。

(3)USB烧录(强烈推荐,最快的方式,一分钟即可烧写完毕)

这种方式是我在配置过程中最卡我的一种方式。主要就是USB的驱动一直无法识别。首先我们来看看正确识别驱动之后,设备管理器中的页面,必须看到通用串行设备下识别了设备才行,如下图

从HarmonyOS过渡到OpenHarmony应用开发指南&埋坑-鸿蒙HarmonyOS技术社区

(1)开发套件上面有两个typec接口,屁股后面的那个才是USB口,前面的仅仅是供电口。

(2)安装HiUSBBurnDriver驱动程序

(3)win10操作系统需要修改注册表

a.创建一个“文本文档.TXT”,文件后缀名修改为.reg,如usb.reg。

b.右键打开创建的usb.reg,将如下脚本拷贝到该文件中,然后保存并关闭。

  1. 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)输入以下命令终于解决了无法识别驱动的问题

  1. usb device 

(5)待识别了USB驱动之后烧录需要注意的问题

设置好烧录镜像之后,在下电在上电之前,请一直按住开发板上面的update按钮(在开发板的串口旁边),上电之后,待出现开始烧写的打印之后再松开按钮。

3、OpenHarmony安装应用到开发板

此处依然贴出对应的官方文档

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/安装运行OpenHarmony应用.md

(1)这里使用的是hdc_std.exe,而不是HarmonyOS sdk中的hdc.exe;

(2)hdc_std.exe在哪里?

它在OpenHarmony sdk的toolchains目录下面,确保它和开发板上的版本一致,即确保sdk版本和开发板的操作系统版本匹配即可。

4、自己编译OpenHarmony SDK

为了确保sdk和自己烧写的操作系统版本一致,我们可以自己编译sdk。

编译命令如下:

  1. ./build.sh --product-name ohos-sdk --ccache 

结果输出:

  1. out/ohos-arm64-release/packages/ohos-sdk/ 

耗时了好久终于写完了,希望本文加上配上OpenHarmony官方的文档能够帮助更多的开发者快速投入OpenHarmony共建中。

想了解更多内容,请访问:

51CTO和华为官方战略合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

【编辑推荐】

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区
  2. HarmonyOS JS卡片之“星座运势”卡片开发
  3. HarmonyOS 基于LYEVK-3861 接入华为IoT平台
  4. 学习笔记 | HarmonyOS的页面间跳转
  5. HarmonyOS AI基础技术赋能之语音播报
  6. 鸿蒙轻内核M核源码分析系列十三(续) 消息队列QueueMail接口
【责任编辑:jianghua TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

视频课程+更多

MySQL数据库工程师入门培训实战教程(从MySQL5.7 到 MySQL8.0)

MySQL数据库工程师入门培训实战教程(从MySQL

讲师:风哥130757人学习过

汇编语言教程

汇编语言教程

讲师:杨大毛551人学习过

linux网络基础

linux网络基础

讲师:周玉强29243人学习过

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微