全面提速 | OpenHarmony系统开发辅助工具SIG1.0全新上线 精华

鸿蒙开发者社区官方账号
发布于 2022-3-28 14:08
浏览
2收藏

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

近年来,随着国内信息化、网络安全等市场的逐步成长,趋向成熟,以OpenAtom OpenHarmony(以下简称“OpenHarmony”)为基座,国产化操作系统为代表的信创产业不断吸引了众多资源投入,汇聚了众多开发者的加入。其中,对应用开发者而言,OpenHarmony采用了多种分布式技术, 使应用开发与不同终端设备的形态差异无关;对设备开发者而言,OpenHarmony采用了组件化的设计方案,可根据设备的资源能力和业务特征灵活裁剪;这样OpenHarmony成为众多开发者青睐的对象。

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

OpenHarmony开发待改进现状:
(1)NAPI框架代码重复率问题。 面对不同的TS接口,开发者都需实现相似度极高的框架代码,繁琐且冗杂;
(2)开机动画展现受限。 开机动画是一种特殊压缩格式的图片资源文件,仅有图片集或视频资源,开发者无法在各发行版和定制版进行定制化展现;
(3)代码语言开发难度大。 对于存量接口或者已有C/C++接口,开发者需要把C/C++头文件手写为IDL文件。双方语言不同,熟悉C/C++头文件语法的同时还要熟悉IDL语法,造成手写难度很大,开发效率很低。

对此,深圳开鸿数字产业发展有限公司(以下简称“深开鸿”)于2021年12月底启动OpenHarmony系统开发辅助工具SIG(以下简称“辅助工具SIG”)开发专项,经历了详尽的前期调研、需求厘清、架构设计、方案设计、开发测试、社区评审等一系列环节,辅助工具SIG1.0于近期全新上线。

辅助工具SIG主要用于辅助OpenHarmony操作系统开发,针对图形子系统中开机动画的快速定制,通过优化驱动HDF框架HDI接口的开发流程,系统框架层与应用层间接口NAPI的开发流程等环节,提高开发效率。辅助工具SIG1.0上线后,深开鸿辅助工具SIG专项研发组也将持续深耕,推进SIG版本迭代更新,为构建开放繁荣的OpenHarmony社区生态添砖加瓦。

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

NAPI框架代码生成工具

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

(HDI生成工具 代码仓:https://gitee.com/openharmony/drivers_framework/tree/master/tools/idl-gen

技术拆解 秒懂辅助工具SIG

NAPI框架代码生成工具

1、软件架构

全面提速 | OpenHarmony系统开发辅助工具SIG1.0全新上线-鸿蒙开发者社区

2、代码目录及说明

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

3、使用场景

(1)命令行

① Windows环境

全面提速 | OpenHarmony系统开发辅助工具SIG1.0全新上线-鸿蒙开发者社区

② Linux环境

全面提速 | OpenHarmony系统开发辅助工具SIG1.0全新上线-鸿蒙开发者社区

(2)插件

① 插件安装

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

全面提速 | OpenHarmony系统开发辅助工具SIG1.0全新上线-鸿蒙开发者社区

开机动画生成工具

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压缩文件格式如下:

全面提速 | OpenHarmony系统开发辅助工具SIG1.0全新上线-鸿蒙开发者社区

2、代码目录及说明

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

3、使用场景

(1)使用方法
python raw_maker.py (-m <*.mp4> | -i<directory>) [-o<directory>] [-d<size>] [-r<rangle>] [-f]
(2)参数说明
-h, --help                # 查看命令帮助并退出              
-m <*.mp4>, --mp4 <*.mp4>   # <*.mp4>源文件
-i<directory>, --image<directory>  # 源image文件存放路径 
-o<directory>, --out<directory>    # 制作开机动画.raw 文件的输出路径 
-d<size> , --display<size>       # 设置开机动画分辨率, 举例:640x480
-r<angle>, --rotate<angle>       # 设置开机动画旋转角度, 举例:90°,180°或270° 
-f, --flip                  # 设置开机动画是否翻转

HDI生成工具

1、软件架构

全面提速 | OpenHarmony系统开发辅助工具SIG1.0全新上线-鸿蒙开发者社区

全面提速 | OpenHarmony系统开发辅助工具SIG1.0全新上线-鸿蒙开发者社区

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<directory>
(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<directory>, --out<directory>  # Place generated .idl files into the<directory>

为丰富OpenHarmony社区生态,深开鸿搭建辅助工具SIG(Special Interest Group),负责OpenHarmony社区特定子领域及创新项目的架构设计、开源开发及项目维护等工作。OpenHarmony社区的工作实体是SIG组,从基础设施到OS部件,从测试系统到版本发布都是由不同SIG的来承担,承接着领域技术竞争力分析和关键技术识别及决策,领域内功能分解分配,模块间接口定义与维护管理等职责内容。

深开鸿在辅助工具SIG方向潜心探索,开发系统能力,拓展NAPI框架生成工具。通过定义并导入声明接口TS文件,自动生成NAPI实现代码框架和编译配置等优化程序,降低开发者重复开发的工作量并提高开发效率。开机动画工具将支持更多的资源格式,做到PC和开发板之间无缝衔接,促使动画生成更快更高效。HDI工具开发也将以插件的形式集成到开发工具中,所有命令行方式、插件方式均支持Windows、Linux、Mac等多系统平台。

作为OpenHarmony生态核心成员之一,深开鸿将深耕技术探索,广泛参与各SIG组的研发,聚焦开发者痛点、行业应用场景,持续进行技术革新、行业场景适配。同时,也将创新成果不断反哺OpenHarmony项目群,携手生态合作伙伴、生态开发者,打造OpenHarmony生态价值链、产业链、应用链,共同走好OpenHarmony之路!

深开鸿简介

深圳开鸿数字产业发展有限公司是由深圳市资本运营集团有限公司(深圳市国资委下属企业)、哈勃科技创业投资有限公司(华为控股全资)、北京中软国际信息技术有限公司合资成立的专注于物联网操作系统的高科技公司,注册时间2021年8月26日,注册资金5亿元,注册地位于深圳福田区。

深开鸿以成为智能物联网操作系统领军者为战略目标,基于OpenHarmony聚焦智能物联网操作系统(KaihongOS)的技术研发与持续创新。立足泛行业及泛消费领域,专注于商业发行版、行业发行版的智能物联网操作系统及配套软硬件多场景智能化服务的深耕,赋能千行百业。从开源中来,到开源中去,深开鸿致力于构建多赢的物联网操作系统生态圈,持续拓宽行业边界,实现万物互联。

已于2022-3-31 14:33:30修改
6
收藏 2
回复
举报
11条回复
按时间正序
/
按时间倒序
zhangchunbao515
zhangchunbao515

https://gitee.com/openharmony-sig/napi_generator 这个链接无法打开

回复
2022-3-30 10:15:05
老王王王
老王王王

请问一下,NAPI的https://gitee.com/openharmony-sig/napi_generator链接点进去,啥都没有

回复
2022-3-30 10:20:34
老王王王
老王王王

https://gitee.com/openharmony-sig/napi_generator  NAPI框架代码生成工具,请问一下工具有吗?

回复
2022-3-30 10:22:45
鸿蒙开发者社区官方账号
鸿蒙开发者社区官方账号

关于https://gitee.com/openharmony-sig/napi_generator打不开的问题,请直接在https://gitee.com/openharmony-sig下寻找即可。

回复
2022-3-30 10:47:37
a305566
a305566

辅助工具SIG  有交流渠道吗?

回复
2022-3-30 10:58:00
NL_AIDC_XJS
NL_AIDC_XJS

NAPI在https://gitee.com/openharmony-sig中具体那个仓库。能用一个详细一些的案例介绍下使用吗?

回复
2022-3-31 09:05:01
wx60b25071502d0
wx60b25071502d0

仓库已经迁移到主仓:https://gitee.com/openharmony/napi_generator

回复
2022-3-31 14:21:22
mb61824076317f6
mb61824076317f6 回复了 a305566
辅助工具SIG 有交流渠道吗?

您好,可以联系我的电话或者企业微信

回复
2022-3-31 14:40:44
wx5901e071c9000
wx5901e071c9000 回复了 老王王王
https://gitee.com/openharmony-sig/napi_generator NAPI框架代码生成工具,请问一下工具有吗?

工具下载地址为https://repo.huaweicloud.com/harmonyos/develop_tools/napi_generator/napi_generator_20220319.tart.gz,使用方法详见https://gitee.com/openharmony/napi_generator/blob/master/docs/INSTRUCTION_ZH.md文档

回复
2022-3-31 16:19:26
wx5901e071c9000
wx5901e071c9000 回复了 NL_AIDC_XJS
NAPI在https://gitee.com/openharmony-sig中具体那个仓库。能用一个详细一些的案例介绍下使用吗?

仓库已经迁移至https://gitee.com/openharmony/napi_generator,工具下载地址为https://repo.huaweicloud.com/harmonyos/develop_tools/napi_generator/napi_generator_20220319.tart.gz,使用方法详见https://gitee.com/openharmony/napi_generator/blob/master/docs/INSTRUCTION_ZH.md文档

1
回复
2022-3-31 16:29:47
zhangchunbao515
zhangchunbao515

在Ubuntu20.04下执行下面命令,出现@ohos.input_sample.d.ts format invalid错误,请问该怎么解决?

./napi_generator-linux -f @ohos.input_sample.d.ts
4/2/2022, 2:44:32 PM [ERR] file name @ohos.input_sample.d.ts format invalid, @ohos.input_sample.d.ts
fail
file name @ohos.input_sample.d.ts format invalid, @ohos.input_sample.d.ts

 

回复
2022-4-2 14:46:58
回复
    相关推荐