当前位置: 首页 > 科技观察

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

时间:2023-03-12 18:21:31 科技观察

更多内容请访问:Harmonyos.51cto.com,开篇第一句,所有学习开发信息以官方信息为准。任何博客类别只能作为参考,自己判断,不要被误导,包括我所有的博客。HarmonyOS官方文档地址应用开发:https://developer.harmonyos.com/cn/documentation设备开发:https://device.harmonyos.com/OpenHarmony官方文档地址https://gitee.com/openharmony/docs/HarmonyOS应用开发与OpenHarmony应用开发的区别这里就不详细说HarmonyOS和OpenHarmony的区别了,请看OpenAtomFoundation的官方介绍。这里我将从开发的角度着重说明一下它们的区别:1.开发语言支持HarmonyOS主要支持java和js开发应用(当然还有c和c++),而OpenHarmony不支持java开发应用。现阶段HarmonyOS的部分功能还是基于AOSP,所以还是用java,而OpenHarmony不再使用java,可能是想彻底抛弃AOSP。2.SDK的不同应用开发工具都统一使用华为的DevEcoStudio,但使用的SDK不同,开发前必须切换SDK配置。HarmonyOS和OpenHarmony虽然都可以使用js开发应用,但是它们的api略有不同。OpenHarmony的api参考请参考OpenHarmony的官方文档。不要犯错。那么OpenHarmonysdk请下载官方支持OpenHarmony开发的sdk,不要下载DevEcostudio自带的HarmonyOSsdk。OpenHarmonysdk配置请参考官方文档,我这里只附上官方链接https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/configureOpenHarmony-SDK.md3,创建工程的方式不同。DevEco2.2Beat1版本后,可直接支持创建OpenHarmony应用项目。创建方法如下:这里重点讲解标准,也就是OpenHarmony官方所说的“标准体系”。本文提到的所有OpenHarmony应用开发都是关于标准系统的。轻量级小型系统(参考内存<128MB)标准系统(参考内存≥128MB)详见官方文档https://gitee.com/openharmony/docs/blob/master/zh-cn/readme.md4、项目目录结构不同HarmonyOSJS项目结构:OpenHarmony项目结构:5.运行和调试方式不同HarmonyOS支持预览器预览、模拟器运行、真机运行。)跑步。首先,OpenHarmony目前没有仿真器,真正的调试只能借助开发板(主要是HI3516系列开发板)进行。注意,目前不支持手机、平板等真机调试。6.不同的签名方式关于OpenHarmony的签名方式我这里就不赘述了,直接附上官方文档链接https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/快速启动/配置OpenHarmony应用程序签名信息。mdHarmonyOS签名我最想吐槽的是需要添加设备ID。我只想吐槽OpenHarmony的签名。为何Open要签约埋坑?一、OpenHarmony操作系统编译为什么要编译操作系统?如果你有现成的开发板,上面安装了操作系统,那么操作系统和sdk版本也是对应的。比如我们是基于OpenHarmony-SDK-2.0-Canary版本的,那你就应该烧一个对应的OS版本。比如我有一块很久以前的1.0版本的3516开发板,显然需要升级。完整的操作系统编译信息可以参考官网:https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-standard.md这里我强调几点:(1)使用repo同步代码仓库时,官方对操作命令的描述是:reposync-c建议换成reposync-c-j8,设置后面的数字8根据CPU核心数,查看CPU核心数的命令如下:grep-c'processor'/proc/cpuinfo这样配置后,你的同步速度会大大加快,否则同步时间会很长很长。同步过程中请使用无限制的公共网络。比如有些公司对访问外网有限制。那么网络下载速度也会直接关系到你的同步速度。如果repo同步中途失败(比如断网或者异常关机),不要太紧张。可以根据日志提示删除一些同步异常的仓库,然后继续执行上面的同步命令。(2)Linux编译服务器终端在安装编译环境时输入无法识别的命令,提示“ImportError:Nomodulenamedapt_pkg”解决方法:执行如下命令重新安装python3-apt。sudoapt-getremovepython3-aptsudoapt-getinstallpython3-apt(3)在编译构建的时候,这里遇到了一个大坑,就是电脑突然没电了,然后编译的时候报了大量错误。报错内容如下rm:cannotremove'XXXXX':Badmessage,这种问题可以用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转串口CommPort.exe驱动,如果没有,则安装CH341SER驱动程序。(2)网口编程注意事项不支持无线,需要使用网线直接连接PC。PC端需要设置ip地址为192.168.1.2/24,网关设置为192.168.1.1,烧录工具在线端口设置如下图:upload_net_server_ip:对应设置的地址PC在线端口PC上设置的子网掩码保证开发板和PC在同一网段。upload_net_client_gw:与PC设置的网关保持一致。upload_net_client_ip:设置开发板的IP地址,如192.168.1.3,确保与PC在同一网段。我没有使用官方推荐的DevEcoDeviceTool进行烧录,而是使用我最喜欢的HiBurn进行烧录,但是基本配置是一样的,截图如下点击烧录按钮后,需要先关机再开机。它将自动编程。网口烧录时间比较慢,标准系统版本2.2beta烧录估计需要20分钟。(3)USB烧录(强烈推荐,最快的方法,一分钟烧完)这个方法是配置过程中最卡住我的方法。主要原因是USB驱动没有被识别。首先我们来看一下正确识别驱动后设备管理器中的页面。一定要看到通用串口设备下面的设备,如下图(1)开发包上有两个typec接口,屁股后面的是唯一一个。这是一个USB端口,前面的那个只是一个电源端口。(2)安装HiUSBurnDriver驱动(3)win10操作系统需要修改注册表a.新建一个“文本文件.TXT”,并将文件扩展名改为.reg,如usb.reg。b.右键打开创建的usb.reg,复制以下脚本到该文件,保存关闭。WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\12D1D0010100]"SkipBOSDescriptorQuery"=hex:01,00,00,00"osvc"=hex:00,00"IgnoreHWSerNum"=hex:01c。双击执行usb。reg文件,自动修改注册表文件信息(4)当我的PC还是无法识别USB驱动时,我在系统启动时输入如下命令(串口终端连接下,进入uboot前,回车进入boot)终于解决了无法识别驱动usbdevice的问题(5)识别USB驱动后,烧录时需要注意的问题设置好烧录镜像后,请在开发上一直按update键在关机或开机之前。开发板串口旁边),上电后,出现开始编程打印后松开按键。3.在开发板上安装并应用OpenHarmony。对应的官方文档还是贴在这里https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/安装并运行OpenHarmony应用。md(1)这里使用hdc_std.exe代替HarmonyOSsdk中的hdc.exe;(2)hdc_std.exe在哪里?在OpenHarmonysdk的toolchains目录下,确保与开发板上的版本一致,即确保sdk版本与开发板的操作系统版本相匹配。4、自己编译OpenHarmonySDK为了保证sdk和自己编写的操作系统版本一致,我们可以自己编译sdk。编译命令如下:./build.sh--product-nameohos-sdk--ccache结果输出:out/ohos-arm64-release/packages/ohos-sdk/折腾了半天终于写完了。希望这篇文章加上OpenHarmony的官方文档,可以帮助更多的开发者快速投入到OpenHarmony的共建中。更多信息请访问:Harmonyos.51cto.com,与华为官方合作打造的鸿蒙技术社区