基于银河锐华操作系统的C++适配层技术方案

技术编号:26596519 阅读:63 留言:0更新日期:2020-12-04 21:18
本发明专利技术提供了一种基于银河锐华操作系统的C++适配层,包括:C++插件库:根据预设的插件库的基类,C++插件库继承该插件库的基类并根据具体功能需求实现桥接类,桥接类作为C++插件库接受JS的调用指令的入口;插件库模块管理器:将每个C++插件库作为一个模块进行动态管理,保存有系统对C++插件库调用所需的信息;插件对象管理器:每个应用将独立拥有一个专属于该应用进程的插件对象管理器,插件对象管理器向应用封装接口,应用通过所述接口与C++插件库进行交互。本发明专利技术在JS端能够通过简单的系统接口调用便能够实现与C++代码的交互,不需要引入额外的第三方框架,从而使得应用对C++代码的调用变得更加简单与安全。

【技术实现步骤摘要】
基于银河锐华操作系统的C++适配层
本专利技术涉及,具体地,涉及基于银河锐华操作系统的C++适配层。
技术介绍
目前存在的JS/C++混合开发技术使用较多的为nodejs框架以及QWebKit。对于nodejs框架来说,若要进行JS与C++进行混合编译,需要nodejs扩展模块开发支持包以及node-gyp构建自动化工具支持编译,而这些模块均需要根据不用移动设备进行移植,从而带来较大的工作量以及不可控性,可移植性差。此外,在使用nodejs框架构建工程时,需要编写node包管理文件以及模块描述文件进行大量编译配置工作,使得代码的开发难度,工作量增加。而QWebKit则是用于在基于QT框架开发的应用中嵌入Web控件并与之进行交互,并不能满足在基于Html5/CSS/JS框架开发的应用中进行JS/C++混合开发的需求。C++适配层通过扩展系统接口的方式实现JS与C++的交互调用,C++代码的编译完全使用系统的编译器进行,使得C++的开发与编译简单易行,不需要由于C++适配层需要运行不同的移动设备上而产生额外的移植工作;此外系统接口的方式也使得在JS端与C++代码的交互变得简单,开发难度大大降低。由于Html5/CSS/JS框架的使用使得前段开发变得更加简单、高效,对前端的布局、字体、颜色、背景等效果实现了更加精确的控制,且维护成本更低,这些优势使得Html5/CSS/JS成为前端开发的趋势。但是对于运行在移动操作系统中的应用尤其是系统应用来说,在很多时候需要针对某些特色硬件设备进行操控与访问,而Html5/CSS/JS框架很难直接与硬件驱动进行对接;此外,对于一些算法或功能,在很多情况下存在即有的C/C++实现,而对其进行JS移植则存在很大的工作量。这些问题都使得在移动操作系统上实现JS/C++的混合应用开发变得非常必要。而C++适配层的实现能够在对现有的C++代码进行简单封装后实现与JS的交互调用,从而最大限度的实现代码的复用,减少开发成本。
技术实现思路
针对现有技术中的缺陷,本专利技术的目的是提供一种基于银河锐华操作系统的C++适配层。根据本专利技术提供的一种基于银河锐华操作系统的C++适配层,包括:C++插件库:根据预设的插件库的基类,C++插件库继承该插件库的基类并根据具体功能需求实现桥接类,桥接类作为C++插件库接受JS的调用指令的入口;插件库模块管理器:将每个C++插件库作为一个模块进行动态管理,保存有系统对C++插件库调用所需的信息;插件对象管理器:每个应用将独立拥有一个专属于该应用进程的插件对象管理器,插件对象管理器向应用封装接口,应用通过所述接口与C++插件库进行交互。优选地,所述桥接类的主要功能包括:插件的初始化、插件方法调用;所述实现桥接类的方法包括:调用方法的重载实现,调用方法接受JS传递的操作指令,以及指令参数,根据指令插件库进行相应操作决策,并将执行最终结果返回到JS。优选地,还包括插件回调方法:通过ID唯一标示每一次回调过程,并使用一个字符串参数传递回调参数,字符串通用需要C++插件库根据需要进行编解码。优选地,所述统对C++插件库调用所需的信息包括:插件库句柄:用于保存C++插件库的句柄;插件库桥接类实例指针:用于保存桥接类的实例;回调方法指针:用于保存C++插件库发起对JS调用的入口方法;注册回调指针方法:用于系统向插件库中进行回调方法的注册;删除回调指针方法:用于系统移出插件库中的回调方法;调用方法:用于系统发起对C++插件库的调用;每当发起加载一个C++插件库的请求时,系统为该插件库动态生成插件模块进行保存;当使用JS进行C++库调用时,插件库模块管理器将通过C++插件库的句柄调用调用方法;若C++插件库需要进行回调,需要首先通过注册回调指针方法向插件库中注册回调方法指针进行保存,插件库通过插件模块中保存的回调方法指针进行回调。优选地,所述插件对象管理器向上层应用封装的接口包括:C++插件库初始化接口init:用于动态加载指定C++插件库,创建该库的模块实例;C++插件库调用接口exec:用于调用C++插件库中的指定功能;注册回调方法接口addListener:用于注册接受并处理C++插件库中回调事件的方法;移除回调方法接口removeListener:用于停止接受与处理C++插件库中的回调事件;检测库是否加载接口isloadedlibrary:用于检测某指定C++插件库是否被成功加载;卸载C++插件库接口unloadlibrary:用于卸载指定的C++插件库。优选地,所述C++适配层通过接口的方式向上层应用提供与C++插件库的交互调用功能。优选地,所述C++适配层通过接口的方式向上层应用提供与C++插件库的交互调用功能包括:应用通过C++插件库初始化接口init加载指定路径的C++插件库,并为该C++插件库指定一个唯一的标示符;通过调用执行方法exec指定操作字段,C++插件库根据操作字段进行指定操作;上层应用调用注册回调方法接口addListener,用于接收处理C++插件库的回调事件,回调事件中包括用于标示每个回调的唯一ID,以及传递的参数,回调事件处理方法通过识别不同的回调ID来进行不同的处理;当应用于C++插件库的交互调用结束时,通过调用移除回调方法接口removeListener接口结束C++插件库回调的监听,通过调用卸载C++插件库接口unloadlibrary卸载指定C++插件库。与现有技术相比,本专利技术具有如下的有益效果:C++适配层通过对C++代码进行特定封装后能够与JS代码进行交互调用,这就使得在移动操作系统中基于Html5/CSS/JS开发的应用能够方便、安全的与底层硬件设备进行交互,也使得一些通过C/C++实现的即有功能模块能够快速移植,这些都使得应用开发的难度降低,工作量减少,功能更加多样化,也使得移动终端中在针对特殊外设开发特殊应用时不需要进行操作系统的定制,从而缩短开发周期,提高应用的可移植性。在JS端能够通过简单的系统接口调用便能够实现与C++代码的交互,不需要引入额外的第三方框架,从而使得应用对C++代码的调用变得更加简单与安全。附图说明通过阅读参照以下附图对非限制性实施例所作的详细描述,本专利技术的其它特征、目的和优点将会变得更明显:图1为本专利技术提供的C++适配层的架构示意图。图2为本专利技术提供的上层应用与C++插件库的交互流程示意图。具体实施方式下面结合具体实施例对本专利技术进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本专利技术,但不以任何形式限制本专利技术。应当指出的是,对本领域的普通技术人员来说,在不脱离本专利技术构思的前提下,还可以做出若干变化和改进。这些都属于本专利技术的保护范围。根据本专利技术提供本文档来自技高网
...

【技术保护点】
1.一种基于银河锐华操作系统的C++适配层,其特征在于,包括:/nC++插件库:根据预设的插件库的基类,C++插件库继承该插件库的基类并根据具体功能需求实现桥接类,桥接类作为C++插件库接受JS的调用指令的入口;/n插件库模块管理器:将每个C++插件库作为一个模块进行动态管理,保存有系统对C++插件库调用所需的信息;/n插件对象管理器:每个应用将独立拥有一个专属于该应用进程的插件对象管理器,插件对象管理器向应用封装接口,应用通过所述接口与C++插件库进行交互。/n

【技术特征摘要】
1.一种基于银河锐华操作系统的C++适配层,其特征在于,包括:
C++插件库:根据预设的插件库的基类,C++插件库继承该插件库的基类并根据具体功能需求实现桥接类,桥接类作为C++插件库接受JS的调用指令的入口;
插件库模块管理器:将每个C++插件库作为一个模块进行动态管理,保存有系统对C++插件库调用所需的信息;
插件对象管理器:每个应用将独立拥有一个专属于该应用进程的插件对象管理器,插件对象管理器向应用封装接口,应用通过所述接口与C++插件库进行交互。


2.根据权利要求1所述的基于银河锐华操作系统的C++适配层,其特征在于,所述桥接类的主要功能包括:
插件的初始化、插件方法调用;
所述实现桥接类的方法包括:
调用方法的重载实现,调用方法接受JS传递的操作指令,以及指令参数,根据指令插件库进行相应操作决策,并将执行最终结果返回到JS。


3.根据权利要求1所述的基于银河锐华操作系统的C++适配层,其特征在于,还包括插件回调方法:
通过ID唯一标示每一次回调过程,并使用一个字符串参数传递回调参数,字符串通用需要C++插件库根据需要进行编解码。


4.根据权利要求1所述的基于银河锐华操作系统的C++适配层,其特征在于,所述统对C++插件库调用所需的信息包括:
插件库句柄:用于保存C++插件库的句柄;
插件库桥接类实例指针:用于保存桥接类的实例;
回调方法指针:用于保存C++插件库发起对JS调用的入口方法;
注册回调指针方法:用于系统向插件库中进行回调方法的注册;
删除回调指针方法:用于系统移出插件库中的回调方法;
调用方法:用于系统发起对C++插件库的调用;
每当发起加载一个C++插件库的请求时,系统为该插件库动态生成插件模块进行保存;
当使用JS进行C++库调用时,插件库模块管理器将通过C++插件库的句柄调用调用方法;
若C++插件库需要进行回调,需要首先通...

【专利技术属性】
技术研发人员:王千陆平高元钧徐冬晨
申请(专利权)人:华东计算技术研究所中国电子科技集团公司第三十二研究所
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1