开篇第一句,所有学习与开发资料以官方资料为准。任何博客类只能作为参考,自行判断优良,不要被误导,包括本人的所有博客。
HarmonyOS 官方文档地址
https://developer.harmonyos.com/cn/documentation
https://device.harmonyos.com/
OpenHarmony 官方文档地址
https://gitee.com/openharmony/docs/
HarmonyOS 与 OpenHarmony 的区别
关于 HarmonyOS 与 OpenHarmony 的区别我这里不再过多阐述,请看开放原子基金会的官方介绍。
我这里着重从开发角度上讲解它们的区别:
①开发语言支持
HarmonyOS 主要支持 Java 和 JS 来开发应用(当然还有 C 和 C++),而 OpenHarmony 不支持 Java 来开发应用。
目前阶段 HarmonyOS 里面还是有部分功能是基于 AOSP 的,因此还是要用 Java,而 OpenHarmony 不再使用 Java,应该是想彻底放弃 AOSP 了。
②SDK 的不同
应用开发工具都是统一使用华为的 DevEco Studio,但是使用的 sdk 不同,开发前首先要切换 sdk 配置。
虽然 HarmonyOS 和 OpenHarmony 都可以用 js 来开发应用,但是它们的 api 还是有些细微的区别。
OpenHarmony 的 api 参考请参看 OpenHarmony 的官方文档,千万别看错了。
然后 OpenHarmony 的 sdk 请下载官方的支持 OpenHarmony 开发的 sdk,而不是 DevEco studio 自带的 HarmonyOS sdk。
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/配置OpenHarmony-SDK.md
③创建项目方式不同
在 DevEco 2.2 Beat1 版本之后,可以直接支持创建 OpenHarmony 应用项目了。
这里重点对 standard 解释下,即 OpenHarmony 官方说的“标准系统”,本文中所说的所有 OpenHarmony 应用开发都是针对的标准系统。
https://gitee.com/openharmony/docs/blob/master/zh-cn/readme.md
④工程目录结构不同
⑤运行调测方式不同
HarmonyOS 支持 previewer 预览、模拟器运行、真机运行三种方式;OpenHarmony 支持 previewer 预览、真机(目前主要使用 3516 系列开发板)运行。
首先,目前 OpenHarmony 是没有模拟器的,真正运行调测只能借助开发板(主要采用 HI3516 系列开发板),注意目前是不支持手机平板等真机调测的。
⑥签名方式不同
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/配置OpenHarmony应用签名信息.md
HarmonyOS 的签名我最想吐槽的就是需要添加设备 ID。OpenHarmony 的签名我只想吐槽一句,既然 open 为何还必须要签名。
埋坑
上面的区别对比已经埋了部分坑了,下面再针对纯粹上层应用开发人员初次接触 OpenHarmony 开发的坑。
①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
关于这里我强调几点:
repo sync -c
建议替换成:
repo sync -c -j8
这个后面的数字 8 根据自己的 cpu 核数进行设置,查看 cpu 核数的命令如下:
grep -c 'processor' /proc/cpuinfo
sudo apt-get remove python3-apt
sudo apt-get install python3-apt
(3)编译构建时,我这里遇到一个大坑,就是电脑突然断电了,然后再执行编译的时候报大量错误,错误内容如下:
rm: cannot remove ‘XXXXX‘: Bad message
②操作系统烧录
官方描述的是使用网口进行烧录,官网地址如下:
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-standard-burn.md
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 在一个网段即可。
首先我们来看看正确识别驱动之后,设备管理器中的页面,必须看到通用串行设备下识别了设备才行,如下图:
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
(4)我 PC 依然迟迟无法识别 USB 驱动的时候,我在系统的 boot 里面(串口终端连接下,进入 uboot 之前,狂按回车进入 boot)输入以下命令终于解决了无法识别驱动的问题。
usb device
③OpenHarmony 安装应用到开发板
此处依然贴出对应的官方文档:
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/安装运行OpenHarmony应用.md
④自己编译 OpenHarmony SDK
编译命令如下:
./build.sh --product-name ohos-sdk --ccache
结果输出:
out/ohos-arm64-release/packages/ohos-sdk/
👇点击关注鸿蒙技术社区👇
了解鸿蒙一手资讯
求分享
求点赞
求在看