图1 OpenHarmony 整体技术架构
一、了解OpenHarmony开源项目 在着手基于OpenHarmonyy 应用开发之前,首先有必要了解一下OpenHarmony的开源项目本身的技术信息,有利于帮助更好的了解这个系统的架构,以便后面更好的上手进行开发。这里引用了openharmony 在gitee上的readme里的部分内容,从这个内容里可以了解系统的主要架构和应用软件的一些规范定义,比如它的应用称为 FA/PA. FA 就是我们理解的APP,具有UI元素的应用,而PA则是后台应用,无界面的一种APP,这个在Android是android service的概念。
OpenHarmonyOS基本介绍
OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)的开源项目,它面向全场景、全连接、全智能时代场景下的应用,基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。
系统总体架构
· OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的组件。
内核层
· 内核子系统:采用多内核(Linux内核或者LiteOS)设计,支持针对不同资源受限设备选用适合的OS内核。内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。
· 驱动子系统:驱动框架(HDF)是系统硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。
系统服务层
系统服务层是OpenHarmony的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:
· 系统基本能力子系统集:为分布式应用在多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、公共基础库、多模输入、图形、安全、AI等子系统组成。
· 基础软件服务子系统集:提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX(Design For X) 等子系统组成。
· 增强软件服务子系统集:提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT专有业务等子系统组成。
· 硬件服务子系统集:提供硬件服务,由位置服务、用户IAM、穿戴专有硬件服务、IoT专有硬件服务等子系统组成。
根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。
框架层
框架层为应用开发提供了C/C++/JS等多语言的用户程序框架和Ability框架,适用于JS语言的ArkUI框架,以及各种软硬件服务对外开放的多语言框架API。根据系统的组件化裁剪程度,设备支持的API也会有所不同。
应用层
应用层包括系统应用和第三方非系统应用。应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。其中,FA有UI界面,提供与用户交互的能力;而PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。基于FA/PA开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。
开发环境配置介绍:
· Windwos环境供开发者参考:
· 硬件:CPU Intel(R) Core(TM)i7-4770HQ CPU @ 2.20GHz 2.20 GHz
· 内存:16G
· 硬盘:1T
· 操作系统:Win10, Vmware 15 Player
二、安装集成应用开发IDE 因为Openharmony 还没有直接可用的集成开发软件,因此开发者一般使用基于OpenHarmony开发使用华为的HarmonyOS 的集成开发工具,因为华为HarmonyOS的底层和OpenHarmony是一样的,所以可以使用华为的集成应用开发工具来做OpenHarmony的应用开发,开发软件工具名字叫 DevEco Studio,最新版本为3.0,下面页面地址即可下载。
https://developer.harmonyos.com/cn/develop/deveco-studio#download
图2 安装集成开发环境
图3 配置开发环境
图4 安装进行中
图5 安装各种插件
图6 安装Nodejs 运行框架
图7 安装鸿蒙SDK
图8 开发环境设置
图9 下载Openharmony 语言模板
图10 下载其它相关组件
三、创建鸿蒙Hello,world 程序 安装完集成开发环境之后,就可以创建一个简单的测试程序,来测试验证开发环境是否正确。打开DevEco Studio,选择创建应用,如下图:
图11 创建新应用
下一步选择平台,这里注意,要选择 OpenHarmony, 这里默认是HarmonyOS ,注意不要选错了,HarmonyOS是华为的商业系统,而OpenHarmony才是开源社区的,这里也说一下华为,既然提供工具,就不要给自家打广告了,显的格局太小。
图12 创建应用模板
选择好平台后,出现应用模板,可以按到这里有两种,一种是基于 ejs, 的开发,一种是c++的开发,ejs 是H5 框架开发的一种技术,做应用如同做页面一样简单,所以这里就选择 ejs 模板了。然后填写一些应用的参数信息,名称,项目路径,语言等。就可以了。
图13 配置应用相关参数
点击完成,就进入到项目里了,看一下代码,真的很简洁,如果熟悉 javascript的同学,恍惚认为是在做页面开发,是的,做鸿蒙js应用开发,就是这么没有“技术”含量,项目源码界面:
图14 应用软件代码编辑
也可以切换到UI编辑界面可以看到现在Hello,world的UI设计,这里稍微改一下,界面上加上板子的供应商名字,以示我做开发了,哈哈。
做完开发后,点击build里的编译,很快几步提示,编译成功。应用开发就这这么简单且无趣。
图15 应用软件UI设计器
四、编辑和编译程序 编译程序很简单,在见面上找到build,选择编译即可。编译完后,开发打包,生成可以下载开发板的app软件,同样在build界面上,点击构建安装包,就开始进行打包工作。
首次打开会弹出一个安全证书请求的要求,原来鸿蒙的应用都需要CA签名,按提示说明,填入相关的信息,进行证书的制作。这一步看着填的东西很多,其实很简单,按文档或者网上的教程照做,简单几步就可以过去了。
其中有一步需要登录得到华为网上做身份认证,选择个人身份就可以了,个人身份认证还需要实名认证,这一点不得不说鸿蒙对应用开发的安全管控做的非常周密了,以后不会像某些平台上,各种恶意匿名的恶意软件横行,让人防不胜防的情况产生了。
图16 生成公钥
图17 生成设备请求证书
图18 注册验证鸿蒙开发者账号
获取完证书,就可以打包生成可以下载的APP了,如下图所示:
图19编译打包应用
下载APP也很简单,收件把开发板插入电脑,然后在开发工具里打开DevEco Studio里的设备管理,选择本地设备,就可以看到开发板了,如果没有出现,那么说明开发板的SDK的版本和开发软件里的SDK版本不一致,搞不清版本的情况,可以进入SDK管理项里,把所有能用的SDK都勾选上,全部下载安装上,这样就可以看到开发板了。下载更多版本的SDK,需要点时间和更多的硬盘空间。
图20开发板模拟器和设备管理
此时回到开发界面,在右上角设备列表里,会出现开发板的ID,如果没有在下拉列表里会有,选择上即可以,然后点右侧的“运行”,即自动的安装运行,如下图:
图21下载到开发板测试运行
然后开发板的显示器界面上就会自动的安装并运行我们开发的APP程序了,其中可以注意到,应用的安装运行是通过命令行进行的,这些命令可以在命令行运行,进入到SDK的toolchains目录下,运行这些命令,一样可以进行安装,运行和停止,卸载。非常方便。和Android的ADB工具模式是类似的。
hdc_std uninstall com.example.myapplication
hdc_std install -r "E:HuaweiOpenHarmonyProjMyApplicationentrybuilddefaultoutputsdefaultentry-default-signed.hap"
hdc_std shell aa start -a com.example.myapplication.MainAbility -b com.example.myapplication
五、板上运行程序
把编译打包好的程序发布到开发板上,一种方式就是,通过DevEco在板上安装,运行。另外一个方式就是通过命令行来进行安装。同时因为测试程序只做了一个界面,没有退出按钮,所以应用无法退出。此时也可以通过命令行来终止运行:
hdc_std.exe shell aa force-stopcom.example.myapplication
板上运行效果如图:
图22 板上运行效果
后面附上一个板上启动运行的视频:
编译运行鸿蒙应用程序