本帖最后由 数码小叶 于 2022-4-13 21:21 编辑
通过几天的实践,对于Openharmomy有了更多的了解,比如怎么把一个简单的程序编译到系统里去。
首先需要一个实现功能的源码程序,比如helloworld.c。还需要一个BUILD.gn文件。.gn文件是一种编译构建文件,类似于Cmake。相较于Cmake,当工程规模增大到难以想象的量级时,编译速度和工程模块的划分变得尤为重要,而gn便很好解决了这两个问题。Openharmomy的文档里,介绍了相关的.gn编码规范。
BUILD.gn基本结构如下
import("//build/lite/config/component/lite_component.gni")
executable("生成的库名称") {
output_name = "可执行文件名称"
sources = [ "源文件" ]
include_dirs = []
defines = []
cflags_c = []
ldflags = []
}
lite_component("lite组件名") {
features = [
":库文件",
]
}
导入 gni 组件,将源码编译成库文件,然后将库文件打包成 lite组件,同时,定义好了输出的可执行文件的名称。
还有和Cmake一样的地方是,这个BUILD.gn也对大小写敏感,开始就是这个弄错了,一直编译不过
接着就是配置~\bearpi\project\bearpi-hm_micro_small\build\lite\components\applications.json文件,将刚才定义的lite组件添加进去
添加后保存,再修改单板配置文件~\bearpi\project\bearpi-hm_micro_small\vendor\bearpi\bearpi_hm_micro\config.json
开箱时,看到自带的锁屏画面,其功能所定义的组件也在这里看到了,倒退回刚才的applications.json文件,也可以找到screensaver相关内容,相比简单的helloworld串口输出,锁屏依赖的组件就比较多了
同时,也可以解释,上一篇烧录完源码后,只有两个应用,在这可以看到定义
到这个目录下,找找看锁屏的原始图片春夏秋冬四季的图片
对于如何修改上面几个文件,每个文件里的参数什么意义,在Openharmomy的文档里都可以找到详细的介绍,包括内部结构说明以及配置示例
编译整个源码,和上一篇一样,将编译后的文件烧录进BearPi-HM Micro
烧录完成后,打开串口助手,通过串口助手,可以使用大部分的linux操作指令
运行我们编译的程序,查看串口输出
./bin/helloworld
成功打印了源文件里的内容
整个过程操作下来,发现和组件打交道的次数还是比较多的,OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的组件。子系统是一个逻辑概念,它具体由对应的组件构成。
组件就是对子系统的进一步拆分,可复用的软件单元,它包含源码、配置文件、资源文件和编译脚本;能独立构建,以二进制方式集成,具备独立验证能力的二进制单元。