废话部分
前段时间搞了个Huawei Watch3的手表,替换了我之前用了一年多的gt2。
先简单说说watch3的感受,相比gt2来说,watch3功能多了不少,但实际上在平时的使用当中用不上:(。我在使用手表的时候,用得最多的两个功能就是看时间和扫码支付了。其次就是火车时刻表,对于我这种需要经常乘坐高铁的人来说,看检票口和开车时间不用拿出手机,特别方便。其余功能用的就不是很多了,像是检测类的,比如心率检测、血氧检测、压力检测之类的,反正能开的我都给开上了,毕竟有这个功能,不用白不用嘛。续航的话,到没有一天一充或者两天一充这么麻烦,我自己也不记得多少天充一次,不过我感觉还是能用挺长时间的,虽然平时用的不多。智能模式下续航比gt2低了不少,不过相对于gt2那种“大号手环”,watch3的表现还算及格。
开发环境
说了一堆没用的,现在进入正题。
其实watch3可以兼容Android wearOS的apk应用,不过我们今天主要开发的是HarmonyOS的APP,所以不对Android的APP进行展开讨论了。
在进行开发之前,首先需要安装开发环境,HarmonyOS的开发需要使用到DevEco IDE,这个软件在华为的HarmonyOS Developer网站上就能下载到,我使用的是最新的beta版3.0 Beta2,反正不是生产使用,就是玩一玩,就嗯造beta版了。
安装的过程就不多说了,安装完成后进入软件,经过一系列简单设置后,会开始下载SDK。下载完成后便可以开始进行开发了,DevEco是基于InterillJ开发的,所以界面与操作都与InterillJ类似。完成准备后直接新建一个项目,集成环境中有需要预置的项目模板,我选择了About Ability,然后简单进行了一下配置。

本来Language想选Java的,但是开发手表应用只能选择JS,没办法了:(
进入软件后发现还需要再下载对应版本的SDK,大概400多M。

下载的过程和前面配置的过程相同,就不多说了(在等待的过程中玩了一会儿宝可梦阿尔宙斯)。
在下载和配置完SDK后遇到了一个问题:
Unable to locate hdc within the SDK. Please check whether the hdc exists.
总之就是提示HDC不存在,不过先不管这个,等后面遇到问题时再解决。
测试环境
华为会提供一些设备以测试APP,不过是远程连接,所以延时挺大的,体验不是很好,而且使用这些测试设备还需要登录华为账号。

我选择了一台API 6 的P50,点击绿色小三角启动,每次启动后会在60s以内自动销毁,所以真要测试APP的话,还是需要有一台物理设备的。
启动测试环境后会出现下面这样一个提示框,大概意思是说在安装软件以前需要先进行签名。

这里是华为官方对真机调试功能的说明,根据这里的说明进行签名操作即可(使用自动签名也需要登录华为账号,而且需要在AppGallery Connect上创建相关项目)。

配置好相关环境后点启动,又出现了这个错误:
Failure[INSTALL_PARSE_FAILED_USESDK_ERROR]
意思是API版本错误,我选择的开发版本是7,而设备版本是6,要解决这个问题,就要选择支持API 7的设备进行测试。最后只找到一个P40 Pro是API 7 的版本,最后终于成功安装并运行了APP

真机测试
在模拟器里面成功运行了以后,上手表真机试试
在进行连接以前,需要先打开设备的开发人员选项、HDC调试、WLAN调试功能,然后在DevEco中选择IP连接。

开启后,就能在DevEco中看到相关设备了

不过在运行时又遇到了一个新的错误:
Failure[INSTALL_FAILED_APP_SOURCE_NOT_TRUSTED]
在这里给出了解决办法,看来还是签名的问题。在根据教程解决了该问题以后,又遇到了上面说的SDK API版本问题(裂开)
没办法,只能下载添加了4、5、6版本的SDK,然后再次重新签名尝试运行

经过漫长的等待后,终于下载完成,随后将SDK版本降到5,终于在手表上成功运行


简单总结
尝试了一下配置HarmonyOS的开发环境,然后编译了一个简单的模板,并且分别在虚拟机和物理平台上进行了运行测试。
在开发过程中遇到过几个问题,一是在安装完DevEco后,需要手动再下载对应版本的SDK,所有版本一起下载大概占用空间19G左右;二是如果需要使用华为的虚拟机,需要登录华为账号,需要使用自动签名,也要登录华为账号,而且要在AppGallery Connect中创建对应项目;三是在应用程序安装之前,一定要记得给软件签名,在对APP进行修改以后,也要记得重新签名;四是在创建项目后尽量选择低版本的SDK,现在beta版的DevEco的OpenHarmony SDK已经支持到8了,但是支持这么高版本SDK的设备并不多。

