在第二系统中访问用于第一系统的第三方库的方法及系统与流程

文档序号:13767688阅读:171来源:国知局

本公开涉及移动平台软件技术领域,尤其涉及一种在第二系统中访问用于第一系统的第三方库的方法及系统。



背景技术:

目前,与移动平台配套使用的外部设备适用范围受到移动平台的操作系统限制,从而使外部设备的使用不具备普适性,制约了外部设备的发展。例如在移动平台领域,目前主流的操作系统为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是根据一示例性实施例示出的一种终端设备的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的系统和方法的例子。

图1是根据一示例性实施例示出的一种在第二系统中访问用于第一系统的第三方库的方法的流程图,本实施例可适用于实现在第二系统中访问用于第一系统的第三方库的情况,如图1所示,本实施例所述的在第二系统中访问用于第一系统的第三方库的方法包括:

在步骤S110中,通过用于第二系统的Java虚拟机以与用于第一系统的JNI加载接口兼容的形式加载第三方JNI库。

由于目前相关外设大多会采用Android的JNI标准提供第三方的运行库,以便快速与Andorid系统配合运行,以此为例,由于厂商出于维护成本的考虑,通常不会提供非Android操作系统中可用的运行库。虽然安卓系统通过对Java的定制增强了Java在安卓系统下的契合度并提高了使用效率,但是这也限制了针对其开发的第三方应用的使用范围。为了兼容Android第三方运行库以供非安卓系统使用,首先需要去Android化,而标准Java语言就是一种很好的选择。

本实施例的示例以标准Java语言来封装对第三方运行库的访问接口,这样,无论在哪一种Java虚拟机(JVM)下运行,其结果都是相同的。

作为具体实现的一个示例,可以用标准Java语言定义一个访问接口类,其中包含Java本地化方法(NativeMethod),其具体实现由第三方JNI库完成,可参考Java本地接口JNI方式实现。

JNI是JavaNativeInterface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为Java平台的一部分,它允许Java代码和其他语言写的代码进行交互。

JNI设计之初是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他编程语言,只要调用约定受支持就可以了。使用Java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的。例如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。

在步骤S120中,通过所述Java虚拟机导出所述第三方JNI库的相关API。

当步骤S110中以通过用于第二系统的Java虚拟机以与用于第一系统的JNI加载接口兼容的形式加载第三方JNI库后,就可以将该加载第三方JNI库实例化以供访问所述第三方JNI库。

以步骤S110中的示例为例,加载相应的第三方JNI库后,通过实例化所述访问接口类即可以调用其本地化方法,从而执行第三方JNI库中的特定功能。

在步骤S130中,通过JNI反向调用所述相关API以间接访问所述第三方JNI库。

当创建了所述对第三方JNI库的访问接口实例后,非安卓系统即可在本地环境下获取该接口实例,并通过该接口实例来间接地访问第三方JNI库,从而调用由第三方JNI库所实现的功能。这一调用从JVM的角度来看是反向调用,即从JVM外部的非安卓系统来调用JVM内部的类/对象/方法,因此,在本实施例中称为反向调用。通过反向调用JVM中的访问接口实例,打通了非安卓系统与针对Android开发的第三方运行库二者之间的通信渠道,从而使得所述第三方运行库可以与非安卓系统相互兼容,这极大地拓宽了非安卓系统的可用设备及第三方JNI库的范围,丰富了非安卓系统的功能,同时,第三方厂商也无需对原来为安卓系统开发的运行库进行修改,即可无缝对接至非安卓系统,降低了第三方厂商的研发和部署成本。

需要说明的是,本示例是以兼容安卓系统的第三方运行库作为所述第三方JNI库。但这仅是示例性的,实际上,针对特定系统开发的第三方JNI库转用于其他系统时,都可以参照上述方式来实现,本实施例对此不作限定。

进一步地,为了提供更加灵活的可定制性,上述示例中所涉及的Java虚拟机JVM可以为JVM,例如由OpenJDK提供的JVM等。然而,无论哪一种JVM中所包含的完整Java运行时库(RuntimeLibrary),相对于访问第三方JNI库的所述访问接口的具体功能而言都是冗余和庞大的,因为要实现所述访问接口的具体功能通常仅仅涉及Java运行时库中的一部分(有时甚至是很少部分)类和函数。如果将完整的Java运行时库加载到JVM中会增加很多不必要的空间和时间开销,对于软硬件能力受限的某些嵌入式系统(如机顶盒、可穿戴设备等智能终端),较大的Java运行时库有时是不可接受的。为了克服上述缺陷,本实施例可根据实现所述访问接口的具体功能可能会用到的具体类和函数的范围,对所述Java运行时库进行适当的裁剪,删除那些不会用到的类和函数所对应的引用库,甚至可以实现以最小的Java运行时库来运行JVM,从而大幅度降低JVM运行时的资源占用量,相应地提高JVM的运行效率,对于运算能力受限的平台非常适用,可将本实施例的技术方案应用于轻量级的系统。

本公开提供了一种快速兼容Android第三方运行库的调用及实现方法,以便非安卓系统,能够快速使用相关外设及非的商业运行库,极大地丰富了非安卓系统的功能。

图2是根据一示例性实施例示出的一种在第二系统中访问用于第一系统的第三方库的方法的流程图,如图2所示,本实施例所述的在第二系统中访问用于第一系统的第三方JNI库的方法包括:

在步骤S210中,通过用于第二系统的Java虚拟机以与用于第一系统的JNI加载接口兼容的形式加载第三方JNI库。

在步骤S220中,通过所述Java虚拟机导出所述第三方JNI库的相关API。

在步骤S230中,通过JNI反向调用所述相关API以间接访问所述第三方JNI库。

上述步骤S110-S230与实施例一中的相同,在此不再赘述,具体可参见实施例一中的描述。

在步骤S240中,针对所述非安卓系统本地化封装所述反向调用的相关API。

在实施例一的基础上,本实施例可进一步包含步骤S240,即针对上述非安卓系统本地化封装所述步骤S230中反向调用的接口。所述非安卓系统在现有技术中有很多种,例如Linux系统、iOS系统、WindowsPhone系统、等等。通常,操作系统都有其内部进程间可用的通信方式,例如QBus、DBus、或Socket等。虽然所述步骤S230中,非安卓系统通过反向调用所述JVM中的上述访问接口即能够间接完成对所述第三方JNI库的访问,但是其使用方式与上述非安卓系统之间契合度仍然不够,使用起来仍然不够方便。为了使上述非安卓系统能够便捷地通过本地接口调用方式来完成上述对第三方JNI库的访问,本实施例进一步地根据上述非安卓系统的应用需求,将所述步骤S230中反向调用的接口进行本地化封装,封装的具体方式可通过例如QBus、DBus、或Socket等本地化封装所述反向调用的相关API。通过本地化封装后,所述非安卓系统以及该环境下的应用就可以按照自己所具有或熟悉的方式来调用和访问所述第三方JNI库,能够简化访问接口,提高使用效率。

本实施例通过针对非安卓系统本地化封装到第三方JNI库的访问接口,进一步地增加了将第三方JNI库与非安卓系统兼容的便捷性,提高了在非安卓系统下使用第三方JNI库的效率。

图3是根据一示例性实施例示出的一种在第二系统中访问用于第一系统的第三方JNI库的系统的框图,如图3所示,本实施例所述的在第二系统中访问用于第一系统的第三方JNI库的系统包括加载模块310、导出模块320、以及反向调用模块330。

该加载模块310被配置为,用于通过用于第二系统的Java虚拟机以与用于第一系统的JNI加载接口兼容的形式加载第三方JNI库。

该导出模块320被配置为,用于通过所述Java虚拟机导出所述第三方JNI库的相关API。

该反向调用模块330被配置为,用于通过JNI反向调用所述相关API以间接访问所述第三方JNI库。

本实施例所述的第三方JNI库为用于操作本地设备的功能包,由第三方厂商提供。为了实现对本地设备的高效访问,通常采用本地编译代码来实现,例如C、C++等。另外,针对安卓系统开发的第三方JNI库,还基于Android的JNI机制提供了可用于Android平台的JNI调用接口,安卓系统可通过该接口直接调用第三方JNI库中的功能。但是,这一接口限制第三方JNI库只能应用于安卓系统。

于一实施例中,所述第一系统为安卓系统,所述第三方JNI库为兼容安卓系统的第三方JNI库。

于一实施例中,所述加载模块310用于通过用于所述第二系统的Java虚拟机以Java本地接口JNI的形式加载第三方JNI库。

于一实施例中,所述导出模块320用于:在JVM中创建访问接口并通过所创建的访问接口访问所述第三方JNI库。

于一实施例中,所述在第二系统中访问用于第一系统的第三方库的系统还包括选择模块(图3中未示出),用于根据所述第一系统的第三方JNI库的具体功能对所述相关API进行选择。

于一实施例中,所述第一系统为安卓系统,所述第二系统为非安卓系统,所述在第二系统中访问用于第一系统的第三方库的系统还包括封装模块(图3中未示出),用于针对所述非安卓系统本地化封装所述反向调用的相关API。

于一实施例中,所述非安卓系统为Linux系统、iOS系统、或WindowsPhone系统。

于一实施例中,所述封装模块用于,针对所述非安卓系统通过QBus、DBus、或Socket本地化封装所述反向调用的相关API。

由于目前相关外设大多会采用Android的JNI标准提供第三方的运行库,以便快速与Andorid系统配合运行,由于厂商出于维护成本的考虑,通常不会提供非Android操作系统中可用的运行库。虽然安卓系统通过对Java的定制增强了Java在安卓系统下的契合度并提高了使用效率,但是这也限制了针对其开发的第三方应用的使用范围。为了兼容Android第三方运行库以供非安卓系统使用,首先需要去Android化。而标准Java语言就是一种很好的选择。

于一示例性实施例中,以标准Java语言来封装对第三方运行库的访问接口,这样,无论在哪一种Java虚拟机(JVM)下运行,其结果都是相同的。

作为具体实现的一个示例,可以用标准Java语言定义一个访问接口类,其中包含Java本地化方法(NativeMethod),其具体实现由第三方JNI库完成,可参考Java本地接口JNI方式实现。

当以标准Java语言封装了对第三方JNI库的访问接口后,就可以将该接口实例化以供访问所述第三方JNI库。以上述示例为例,加载相应的第三方JNI库后,通过实例化所述访问接口类即可以调用其本地化方法,从而执行第三方JNI库中的特定功能。

当创建了所述对第三方JNI库的访问接口实例后,非安卓系统即可在本地环境下获取该接口实例,并通过该接口实例来间接地访问第三方JNI库,从而调用由第三方JNI库所实现的功能。这一调用从JVM的角度来看是反向调用,即从JVM外部的非安卓系统来调用JVM内部的类/对象/方法,因此,在本实施例中称为反向调用。通过反向调用JVM中的访问接口实例,打通了非安卓系统与针对Android开发的第三方运行库二者之间的通信渠道,从而使得所述第三方运行库可以与非安卓系统相互兼容,这极大地拓宽了非安卓系统的可用设备及第三方JNI库的范围,丰富了非安卓系统的功能,同时,第三方厂商也无需对原来为安卓系统开发的运行库进行修改,即可无缝对接至非安卓系统,降低了第三方厂商的研发和部署成本。

进一步地,为了提供更加灵活的可定制性,上述示例中所涉及的Java虚拟机JVM可以为JVM,例如由OpenJDK提供的JVM等。然而,无论哪一种JVM中所包含的完整Java运行时库(RuntimeLibrary),相对于访问第三方JNI库的所述访问接口的具体功能而言都是冗余和庞大的,因为要实现所述访问接口的具体功能通常仅仅涉及Java运行时库中的一部分(有时甚至是很少部分)类和函数。

如果将完整的Java运行时库加载到JVM中会增加很多不必要的空间和时间开销,对于软硬件能力受限的某些嵌入式系统(如机顶盒、可穿戴设备等智能终端),较大的Java运行时库有时是不可接受的。

为了克服上述缺陷,本实施例可根据实现所述访问接口的具体功能可能会用到的具体类和函数的范围,对所述Java运行时库进行适当的裁剪,删除那些不会用到的类和函数所对应的引用库,甚至可以实现以最小的Java运行时库来运行JVM,从而大幅度降低JVM运行时的资源占用量,相应地提高JVM的运行效率,对于运算能力受限的平台非常适用,可将本实施例的技术方案应用于轻量级的系统。

于一示例性实施例中,反向调用模块330还可以针对上述非安卓系统本地化封装所述反向调用的接口。所述非安卓系统在现有技术中有很多种,例如Linux系统、iOS系统、WindowsPhone系统、等等。通常,操作系统都有其内部进程间可用的通信方式,例如,QBus、DBus、或Socket等。虽然所述非安卓系统通过反向调用所述JVM中的上述访问接口即能够间接完成对所述第三方JNI库的访问,但是其使用方式与上述非安卓系统之间的契合度仍然不够,使用起来仍然不够方便。

为了使上述非安卓系统能够便捷地通过本地接口调用方式来完成上述对第三方JNI库的访问,本实施例进一步地根据上述非安卓系统的应用需求。将所述反向调用的接口进行本地化封装,封装的具体方式例如QBus、DBus、或Socket等。通过本地化封装后,所述非安卓系统以及该环境下的应用就可以按照自己所具有或熟悉的方式来调用和访问所述第三方JNI库,能够简化访问接口,提高使用效率。

通过针对非安卓系统本地化封装到第三方JNI库的访问接口,进一步地增加了将第三方JNI库与非安卓系统兼容的便捷性,提高了在非安卓系统下使用第三方JNI库的效率。

关于上述实施例中的系统,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

本实施例提供的在第二系统中访问用于第一系统的第三方JNI库的系统可执行本发明实施例一和实施例二所提供的在第二系统中访问用于第一系统的第三方JNI库的方法,具备执行方法相应的功能模块和有益效果。

图4是根据一示例性实施例示出的一种用于终端设备400的框图。例如,终端设备400可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。

参照图4,终端设备400可以包括以下一个或多个组件:处理组件402,存储器404,电力组件406,多媒体组件408,音频组件410,输入/输出(I/O)的接口412,传感器组件414,以及通信组件416。

处理组件402通常控制终端设备400的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件402可以包括一个或多个处理器420来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件402可以包括一个或多个模块,便于处理组件402和其他组件之间的交互。例如,处理组件402可以包括多媒体模块,以方便多媒体组件408和处理组件402之间的交互。

存储器404被配置为存储各种类型的数据以支持在设备400的操作。这些数据的示例包括用于在终端设备400上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器404可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

电力组件406为终端设备400的各种组件提供电力。电力组件406可以包括电源管理系统,一个或多个电源,及其他与为终端设备400生成、管理和分配电力相关联的组件。

多媒体组件408包括在所述终端设备400和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件408包括一个前置摄像头和/或后置摄像头。当设备400处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。

音频组件410被配置为输出和/或输入音频信号。例如,音频组件410包括一个麦克风(MIC),当终端设备400处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器404或经由通信组件416发送。在一些实施例中,音频组件410还包括一个扬声器,用于输出音频信号。

I/O接口412为处理组件402和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。

传感器组件414包括一个或多个传感器,用于为终端设备400提供各个方面的状态评估。例如,传感器组件414可以检测到设备400的打开/关闭状态,组件的相对定位,例如所述组件为终端设备400的显示器和小键盘,传感器组件414还可以检测终端设备400或终端设备400一个组件的位置改变,用户与终端设备400接触的存在或不存在,终端设备400方位或加速/减速和终端设备400的温度变化。传感器组件414可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件414还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件414还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。

通信组件416被配置为便于终端设备400和其他设备之间有线或无线方式的通信。终端设备400可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件416经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件416还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。

在示例性实施例中,终端设备400可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器404,上述指令可由终端设备400的处理器420执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。

一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行一种在第二系统中访问用于第一系统的第三方JNI库的方法,所述方法包括:

通过用于第二系统的Java虚拟机以与用于第一系统的JNI加载接口兼容的形式加载第三方JNI库;

通过所述Java虚拟机导出所述第三方JNI库的相关API;

通过JNI反向调用所述相关API以间接访问所述第三方JNI库。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1