本发明专利技术实施例公开了一种在第二系统中访问用于第一系统的第三方库的方法及系统,方法包括:通过用于第二系统的Java虚拟机以与用于第一系统的JNI加载接口兼容的形式加载第三方JNI库;通过所述Java虚拟机导出所述第三方JNI库的相关API;通过JNI反向调用所述相关API以间接访问所述第三方JNI库。本发明专利技术的技术方案能实现在第二系统中访问用于第一系统的第三方库,极大地扩充了外部设备的适用范围。
【技术实现步骤摘要】
本公开涉及移动平台软件
,尤其涉及一种在第二系统中访问用于第一系统的第三方库的方法及系统。
技术介绍
目前,与移动平台配套使用的外部设备适用范围受到移动平台的操作系统限制,从而使外部设备的使用不具备普适性,制约了外部设备的发展。例如在移动平台领域,目前主流的操作系统为Google创建并发展起的安卓系统(Android)。由于其使用广泛,造成很多相关外部设备与其配合运行时,只提供基于Android的JNI(JavaNativeInterface,Java本地接口)接口库,造成非Android的操作系统难于兼容厂商提供的第三方实现库。而且,有些厂商基于安全和竞争的考虑,无法提供第三方JNI库的版本,从而对于非Android的操作系统,更是无法与之配合使用。例如目前使用广泛的NFC技术,由于NFC的应用市场方向主要涉及的是配备安卓系统的移动设备,这就造成厂商通常只会提供基于Android的JNI接口实现的库,以完成NFC的核心运行功能。对于非Android的操作系统,厂商所提供的上述库无法兼容。与之类似的模块还有camera等等,非Android的操作系统均无法轻易兼容相关第三方厂商提供的库。虽然非安卓系统在市场份额上并不占据相对优势,但是毕竟这些系统是客观存在的,在绝对数量上也很庞大,为了满足这些非安卓系统对不断涌现的第三方设备的需求,有必要提供一种途径将现有的针对安卓系统开发的第三方设备的运行库适配到非安卓系统中去。
技术实现思路
为克服相关技术中存在的问题,本专利技术提供了一种在第二系统中访问用于第一系统的第三方库的方法、系统及终端设备。根据本公开实施例的第一方面,提供一种在第二系统中访问用于第一系统的第三方库的方法,包括:通过用于第二系统的Java虚拟机以与用于第一系统的JNI加载接口兼容的形式加载第三方JNI库;通过所述Java虚拟机导出所述第三方JNI库的相关API(ApplicationProgrammingInterface,应用程序编程接口);通过JNI反向调用所述相关API以间接访问所述第三方JNI库。于一实施例中,所述第一系统为安卓系统,所述第三方JNI库为兼容安卓系统的第三方JNI库。于一实施例中,通过用于第二系统的Java虚拟机以与用于第一系统的JNI加载接口兼容的形式加载第三方JNI库的操作包括:通过用于所述第二系统的Java虚拟机以Java本地接口JNI的形式加载第三方JNI库。于一实施例中,通过所述Java虚拟机导出所述第三方JNI库的相关API的操作包括:在JVM(JavaVirtualMachine,Java虚拟机的缩写)中创建访问接口并通过所创建的访问接口访问所述第三方JNI库。于一实施例中,所述方法还包括根据所述第一系统的第三方JNI库的具体功能对所述相关API进行选择。于一实施例中,所述第一系统为安卓系统,所述第二系统为非安卓系统,所述方法还包括针对所述非安卓系统本地化封装所述反向调用的相关API。于一实施例中,所述非安卓系统为Linux系统、iOS系统、或WindowsPhone系统。于一实施例中,针对所述非安卓系统本地化封装所述反向调用的相关API的操作包括针对所述非安卓系统通过QBus、DBus、或Socket本地化封装所述反向调用的相关API。根据本公开实施例的第二方面,提供一种在第二系统中访问用于第一系统的第三方库的系统,包括:加载模块,用于通过用于第二系统的Java虚拟机以与用于第一系统的JNI加载接口兼容的形式加载第三方JNI库;导出模块,用于通过所述Java虚拟机导出所述第三方JNI库的相关API;反向调用模块,用于通过JNI反向调用所述相关API以间接访问所述第三方JNI库。于一实施例中,所述第一系统为安卓系统,所述第三方JNI库为兼容安卓系统的第三方JNI库。于一实施例中,所述加载模块用于:通过用于所述第二系统的Java虚拟机以Java本地接口JNI的形式加载第三方JNI库。于一实施例中,所述导出模块用于:在JVM中创建访问接口并通过所创建的访问接口访问所述第三方JNI库。于一实施例中,所述在第二系统中访问用于第一系统的第三方库的系统还包括选择模块,用于根据所述第一系统的第三方JNI库的具体功能对所述相关API进行选择。于一实施例中,所述第一系统为安卓系统,所述第二系统为非安卓系统,所述在第二系统中访问用于第一系统的第三方库的系统还包括封装模块,用于针对所述非安卓系统本地化封装所述反向调用的相关API。于一实施例中,所述非安卓系统为Linux系统、iOS系统、或WindowsPhone系统。于一实施例中,所述封装模块用于,针对所述非安卓系统通过QBus、DBus、或Socket本地化封装所述反向调用的相关API。根据本公开实施例的第三方面,提供一种终端设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:通过用于第二系统的Java虚拟机以与用于第一系统的JNI加载接口兼容的形式加载第三方JNI库;通过所述Java虚拟机导出所述第三方JNI库的相关API;通过JNI反向调用所述相关API以间接访问所述第三方JNI库。本公开的实施例提供的技术方案可以包括以下有益效果:本公开的实施例提供了一种快速兼容Android第三方运行库的调用及实现方法,以便非安卓系统,能够快速使用相关外设及非的商业运行库,极大地丰富了非安卓系统的功能。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本专利技术的原理。图1是根据一示例性实施例示出的一种在第二系统中访问用于第一系统的第三方库的方法的流程图;图2是根据一示例性实施例示出的一种在第二系统中访问用于第一系统的第三方库的方法的流程图;图3是根据一示例性实施例示出的一种在第二系统中访问用于第一系统的第三方库的系统的框图;图4是根据一示例性实施例示出的一种终端设备的框图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本专利技术相一致本文档来自技高网...
【技术保护点】
一种在第二系统中访问用于第一系统的第三方库的方法,其特征在于,包括:通过用于第二系统的Java虚拟机以与用于第一系统的JNI加载接口兼容的形式加载第三方JNI库;通过所述Java虚拟机导出所述第三方JNI库的相关API;通过JNI反向调用所述相关API以间接访问所述第三方JNI库。
【技术特征摘要】
1.一种在第二系统中访问用于第一系统的第三方库的方法,其特征在
于,包括:
通过用于第二系统的Java虚拟机以与用于第一系统的JNI加载接口兼容
的形式加载第三方JNI库;
通过所述Java虚拟机导出所述第三方JNI库的相关API;
通过JNI反向调用所述相关API以间接访问所述第三方JNI库。
2.根据权利要求1所述的方法,其特征在于,所述第一系统为安卓系
统,所述第三方JNI库为兼容安卓系统的第三方JNI库。
3.根据权利要求1所述的方法,其特征在于,通过用于第二系统的
Java虚拟机以与用于第一系统的JNI加载接口兼容的形式加载第三方JNI库
的操作包括:通过用于所述第二系统的Java虚拟机以Java本地接口JNI的
形式加载第三方JNI库。
4.根据权利要求1所述的方法,其特征在于,通过所述Java虚拟机导
出所述第三方JNI库的相关API的操作包括:在JVM中创建访问接口并通过
所创建的访问接口访问所述第三方JNI库。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括根据所
述第一系统的第三方JNI库的具体功能对所述相关API进行选择。
6.根据权利要求1所述的方法,其特征在于,所述第一系统为安卓系
统,所述第二系统为非安卓系统,所述方法还包括针对所述非安卓系统本地
化封装所述反向调用的相...
【专利技术属性】
技术研发人员:张浦,
申请(专利权)人:北京元心科技有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。