利用辅助工具SIG为OpenHarmony操作系统开发化解疑难

描述

开发繁琐,辅助工具SIG应运而生

随着国内信息化市场的逐步成长,以 OpenAtom OpenHarmony(以下简称“OpenHarmony”)为基座,国产化操作系统为代表的创新产业汇聚了众多开发者的加入。对应用开发者,OpenHarmony 采用了多种分布式技术,使应用开发与不同终端设备的形态差异无关;对设备开发者,OpenHarmony 采用了组件化的设计方案,可根据设备的资源能力和业务特征灵活裁剪。使得 OpenHarmony 成为众多开发者青睐的开源项目。

然而,在 OpenHarmony 操作系统层面能力有待提升,需要系统开发者增强系统能力,诸如 NAPI 框架代码的重复率问题、开机动画展现受限和代码语言开发难度大等。

(1)NAPI 框架代码重复率问题。面对不同的 TS 接口,开发者都需实现相似度极高的框架代码,工作较为繁琐;

(2)开机动画展现受限。开机动画是一种特殊压缩格式的图片资源文件,仅有图片集或视频资源,开发者无法在各发行版和定制版进行定制化展现;

(3)代码语言开发难度大。对于存量接口或者已有 C/C++ 接口,开发者需要把 C/C++ 头文件手写为 IDL 文件。双方语言不同,熟悉 C/C++ 头文件语法的同时还要熟悉 IDL 语法,造成手写难度很大,影响了开发效率。

为丰富 OpenHarmony 社区生态,深圳开鸿数字产业发展有限公司(以下简称“深开鸿”)申请并由 PMC 核准成立辅助工具 SIG,负责 OpenHarmony 社区特定子领域及创新项目的架构设计、开源开发及项目维护等工作。

对症解决,辅助工具SIG化解疑难

辅助工具 SIG 主要用于辅助 OpenHarmony 操作系统开发,针对图形子系统中开机动画的快速定制,通过优化驱动 HDF 框架 HDI 接口的开发流程,系统框架层与应用层间接口 NAPI 的开发流程等环节,提高开发效率。为构建开放繁荣的 OpenHarmony 社区生态添砖加瓦。

NAPI框架代码生成工具

OpenHarmony 各子系统的诸多能力需对应用开放,NAPI 框架代码生成工具需求尤为迫切。针对 NAPI 在开发过程中的大量需求,开发效率低且重复率高等问题,深开鸿专项小组根据社区开发环境和版本计划,从 NAPI 工具开发环节切入,经过夜以继日的攻坚,实现了 NAPI 框架代码生成工具。用户可根据指定路径的 TS 接口文件,一键生成 NAPI 代码框架、业务代码框架、GN 文件。

SIG仓地址:https://gitee.com/openharmony-sig/napi_generator

框架层开发者也无需再关注 Nodejs 相关语法,C++ 与 JS 之间的接口类型转换、数据类型转换,只需关注业务实现逻辑准确性。NAPI 框架代码生成工具的应用,极大提升了开发效率。

开机动画生成工具

开发者在只有图片集或者 mp4 文件的情况下,可以使用开机动画生成工具,一键生成开机动画文件,并支持在 PC 上查看其效果。后续,该工具将实现一键进入开发板展现开机动画的功能演进。目前,开机动画生成工具已支持设置开机动画的分辨率、旋转角度、翻转镜像等功能,也可为各发行版和定制版生成定制化开机动画。

开机动画生成工具已经成功进入 OpenHarmony master 分支供广大开发者使用。

代码仓地址:https://gitee.com/openharmony/graphic_standard/tree/master/frameworks/bootanimation/data/bootanimation_tool

HDI生成工具

当客户端与服务器通信时,需要定义双方都认可的接口,以保障双方可成功通信。IDL(Interface Definition Language) 则是一种定义此类接口的语言,包含面向应用程序的北向接口和面向硬件设备的南向接口。

应用 HDI 生成工具后,开发者无需过多关注 IDL 的语法,只需定义最熟悉、最擅长的 C/C++ 接口文件,使用工具,即可生成 IDL 文件。另外,现存的大量 C/C++ 头文件,开发者借此工具可以自动将其转换为 IDL 文件,以提高 HDI 开发效率。

代码仓地址:https://gitee.com/openharmony/drivers_framework/tree/master/tools/idl-gen

技术拆解,秒懂辅助工具SIG

NAPI框架代码生成工具

1、软件架构

C++

2、代码目录及说明

 

├── napi_tool            # NAPI框架代码生成工具│   ├── doc              # 工具当前能力、版本规划│   ├── image            # 图片资源文件│   ├── output           # 工具对应的可执行程序与插件程序│   ├── code             # 工具源码│   └── README           # 工具使用指导    └──README

 

3、使用场景

(1)命令行

① Windows环境

C++

② Linux环境

C++

(2)插件

① 插件安装

② .d.ts 上点击右键,选择 .d.ts 生成 c++ 选项,即可生成 NAPI 框架代码。

安装步骤:https://gitee.com/openharmony-sig/napi_generator/blob/master/docs/INSTRUCTION_ZH.md

C++

开机动画生成工具

1、软件架构

开机动画的压缩格式如下,以此依据,设计开机动画生成工具:

 

struct HeaderInfo { uint32_t type; 占4个字节, 固定值2 uint32_t offset; 占4个字节,与上一帧对比,像素开始不同的位置 uint32_t length; 占4个字节,压缩前数据长度 uint32_t clen; 占4个字节,压缩后数据长度 uint8_t mem[0]; 实际的压缩数据}

 

bootanimation.raw 压缩文件格式如下:

C++

2、代码目录及说明

 

├── bootanimation_tool # 开机动画生成工具│ ├── raw_maker.py # 开机动画生成│ ├── raw_player.py # 开机动画查看│ └── README # 工具使用指导

 

3、使用场景

(1)使用方法

 

python raw_maker.py (-m <*.mp4> | -i ) [-o ] [-d ] [-r ] [-f]

 

(2)参数说明

 

-h, --help # 查看命令帮助并退出-m <*.mp4>, --mp4 <*.mp4> # <*.mp4>源文件-i , --image # 源image文件存放路径-o , --out # 制作开机动画.raw 文件的输出路径 -d , --display # 设置开机动画分辨率, 举例:640x480-r , --rotate # 设置开机动画旋转角度, 举例:90°,180°或270°-f, --flip                         # 设置开机动画是否翻转

 

HDI生成工具

C++

C++

2、代码目录及说明

 

├──h2idl_tool             # H转IDL代码生成工具│   ├── docs               # 工具当前能力、版本规划│   ├── out # 生成的IDL文件│   ├── testcase # 工具的测试用例│   ├── thirdparty # 使用的三方解析库│   ├──_header_parser.py # C/C++头文件解析│   └── idl_generator.py  # IDL文件生成 

 

3、使用场景

(1)使用方法

 

python idl_generator.py -f <*.h> -o 

 

(2)参数说明

 

-h, --help # Show this help message and exit-v, --version # Display version information-f <*.h>, --file <*.h> # Compile the C/C++ header file-o , --out   # Place generated .idl files into the 

 

审核编辑:郭婷

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分