软件开发工具包调用方法、装置、电子设备和计算机可读存储介质与流程

文档序号:28501625发布日期:2022-01-15 04:59阅读:57来源:国知局
软件开发工具包调用方法、装置、电子设备和计算机可读存储介质与流程

1.本技术涉及应用开发技术领域,特别是涉及一种软件开发工具包调用方法、装置、电子设备和计算机可读存储介质。


背景技术:

2.电子设备上所安装的应用,多是采用软件开发工具包(sdk,software development kit)进行开发的。其中,软件开发工具包一般是开发者为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
3.传统方法中,若sdk的sdk接口的版本与apk包(android application package,android应用程序包)中的api接口(application programming interface,应用程序接口)接口的版本一致,则apk包对应的应用才可以通过该api接口调用sdk的sdk接口,使用sdk中的功能。若sdk的sdk接口的版本与apk包中的api接口的版本不一致时,则apk包对应的应用就不可以通过该api接口调用sdk的sdk接口,也就不能使用sdk中的功能。
4.然而,由于多种原因需要对sdk不断升级更新或对apk包中的api接口不断升级更新。这就出现了经常存在sdk的sdk接口与apk包中的api接口不兼容的情况,便导致了应用通过apk包中的api接口无法调用sdk,进而无法正常使用sdk中功能的问题。


技术实现要素:

5.本技术实施例提供了一种软件开发工具包调用、装置、电子设备、计算机可读存储介质,可以解决sdk的sdk接口与api接口不兼容的问题。
6.第一方面,提供了一种软件开发工具包调用方法,应用于电子设备,所述电子设备上运行应用程序及软件开发工具包,所述方法包括:
7.获取所述应用程序的应用程序接口api接口的版本标识及所述软件开发工具包sdk的sdk接口的版本标识;
8.若所述api接口的版本标识与所述sdk接口的版本标识不一致,则对所述api接口或所述sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口;
9.控制所述应用程序基于所述适配处理后的api接口或所述适配处理后的sdk接口调用所述sdk。
10.第二方面,提供了一种软件开发工具包调用装置,应用于电子设备,所述电子设备上运行应用程序及软件开发工具包,所述装置包括:
11.版本标识获取模块,用于获取应用程序的应用程序接口api接口的版本标识及软件开发工具包sdk的sdk接口的版本标识;
12.适配处理模块,用于若所述api接口的版本标识与所述sdk接口的版本标识不一致,则对所述api接口或所述sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口;
13.sdk调用模块,用于控制所述应用程序基于所述适配处理后的api接口或所述适配处理后的sdk接口调用所述sdk。
14.第三方面,提供了一种电子设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上所述的软件开发工具包调用方法的步骤。
15.第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的软件开发工具包调用方法的步骤。
16.上述软件开发工具包调用方法,电子设备上运行应用程序及软件开发工具包,电子设备通过获取应用程序的应用程序接口api接口的版本标识及软件开发工具包sdk的sdk接口的版本标识。若api接口的版本标识与sdk接口的版本标识不一致,则对api接口或sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口。控制应用程序基于适配处理后的api接口或适配处理后的sdk接口调用sdk。在应用程序的应用程序接口api接口的版本与软件开发工具包sdk的sdk接口的版本不一致的情况下,本技术中通过对api接口或sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口。从而,就可以控制应用程序基于适配处理后的api接口或适配处理后的sdk接口调用sdk,解决了sdk的sdk接口与api接口不兼容的问题。
附图说明
17.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.图1为一个实施例中传统方法中应用程序调用sdk的示意图;
19.图2为一个实施例中软件开发工具包调用的应用环境图;
20.图3为一个实施例中软件开发工具包调用方法的流程图;
21.图4为图3中对api接口或sdk接口进行适配处理方法的流程图;
22.图5为一个实施例中软件开发工具包调用方法的示意图;
23.图6为另一个实施例中软件开发工具包调用方法的示意图;
24.图7为一个实施例中获取应用程序的api接口的版本标识方法的示意图;
25.图8为一个具体的实施例中软件开发工具包调用方法的流程图;
26.图9为一个实施例中软件开发工具包调用装置的结构框图;
27.图10为一个实施例中电子设备的结构示意图。
具体实施方式
28.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
29.可以理解,本技术所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来
说,在不脱离本技术的范围的情况下,可以将第一差异化代码称为第二差异化代码,且类似地,可将第二差异化代码称为第一差异化代码。第一差异化代码和第二差异化代码两者都是差异化代码,但其不是同一差异化代码。
30.其中,在应用程序的apk包中的api接口与sdk中的sdk接口匹配的前提下,应用程序可以通过其apk包中的api接口,调用sdk中的sdk接口,从而,实现应用程序使用sdk中的功能。但是,sdk和apk包是分别由不同的厂商独立开发的。在很多种情况下,sdk开发人员基于多种原因对sdk进行了升级更新,此时可能app application(简称app)开发人员未及时对apk包中的api接口进行升级更新。或同理app开发人员基于多种原因对apk包中的api接口进行了升级更新,但是此时sdk开发人员未对sdk进行升级更新。因此,这就出现了sdk的sdk接口与apk包中的api接口不匹配的情况,便导致了应用通过apk包中的api接口无法调用sdk,进而无法正常使用sdk中功能的问题。
31.如图1所示,为传统方法中应用程序调用sdk的示意图。传统方法中,针对cameraunit即拍照功能来说,若电子设备中具有拍照功能的某个应用程序app1中api接口的版本标识为cameraunit api 1.0,则cameraunit api1.0只能调用sdk接口的版本标识为cameraunit sdk1.0的软件开发工具包sdk,不能调用sdk接口的版本标识为cameraunit sdk2.0的软件开发工具包sdk。
32.若电子设备中具有拍照功能的某个应用程序app1中api接口的版本标识为cameraunit api2.0,则cameraunit api 2.0只能调用sdk接口的版本标识为cameraunit sdk2.0的软件开发工具包sdk,不能调用sdk接口的版本标识为cameraunit sdk1.0的软件开发工具包sdk。
33.此时,传统方法,就需要对api接口、sdk接口两者版本中较低的接口进行升级更新。因为对两者版本中较低的接口进行升级更新,将会涉及到应用程序的更新或sdk的更新,会大大增加开发成本。
34.图2为一个实施例中软件开发工具包调用方法的应用环境示意图。如图2所示,该应用环境包括电子设备220及服务器240,电子设备220上运行了多种应用程序application(简称app)及软件开发工具包sdk,应用程序(简称app)可以通过api接口调用软件开发工具包sdk的sdk接口,实现应用程序调用sdk。例如,运行了支持拍照功能的app1及与实现拍照功能对应的软件开发工具包sdk(cameraunit sdk),当然,还运行了支持其他功能的其他app及与实现其他功能对应的软件开发工具包sdk,本技术对此不做限定。在服务器240上部署了开发者平台,sdk开发人员将所开发的新版sdk的api包发布在开发者平台上,供第三方应用下载更新自身的apk安装包。而针对系统应用,则sdk开发人员可以基于新版sdk的api包,直接更新系统应用的apk安装包。并在对电子设备进行系统更新时,基于所开发的新版sdk对电子设备上所安装的旧版sdk进行更新。
35.本技术描述的就是在第三方应用或系统应用在基于所开发的新版sdk的api包对自身的apk包进行更新、基于所开发的新版sdk对电子设备上所安装的旧版sdk进行更新之后,可以在后续sdk的sdk接口与apk包中的api接口不匹配的情况下,实现sdk的sdk接口与apk包中的api接口相互兼容的问题。
36.图3为一个实施例中软件开发工具包调用方法的流程图。本实施例中的软件开发工具包调用方法,以运行于图2中的电子设备220上为例进行描述,电子设备上运行了应用
程序及软件开发工具包。如图3所示,包括步骤320至步骤360。其中,
37.步骤320,获取应用程序的应用程序接口api接口的版本标识及软件开发工具包sdk的sdk接口的版本标识。
38.其中,这里的应用程序与软件开发工具包sdk之间存在对应关系,即应用程序需要调用该软件开发工具包sdk,以实现sdk的功能。那么,首先,电子设备从应用程序的api包中获取到api接口的版本标识(versioncode),再获取软件开发工具包sdk的sdk接口的版本标识(versioncode)。例如,针对cameraunit即拍照功能来说,电子设备从具有拍照功能的某个应用程序app1的api包中获取到api接口的版本标识为cameraunit api 2.0,获取软件开发工具包sdk的sdk接口的版本标识为cameraunit sdk1.0。或者,针对cameraunit即拍照功能来说,电子设备从具有拍照功能的某个应用程序app1的api包中获取到api接口的版本标识为cameraunit api 1.0,获取软件开发工具包sdk的sdk接口的版本标识为cameraunit sdk2.0。这里的1.0、2.0只是版本标识,版本标识只是为了区别不同的发布版本而自定义的代码,本技术对此不做限定。
39.步骤340,若api接口的版本标识与sdk接口的版本标识不一致,则对api接口或sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口。
40.判断所获取的应用程序的api接口的版本标识与应用程序所要调用的sdk的sdk接口的版本标识是否一致,若一致,则说明当前应用程序的api接口的版本与应用程序所要调用的sdk的sdk接口的版本相互匹配,可以直接采用当前应用程序的api接口调用该sdk的sdk接口,从而,该应用程序就可以实现该sdk的功能。
41.若不一致,则说明应用程序的api接口的版本与应用程序所要调用的sdk的sdk接口的版本不能匹配,不能直接采用当前应用程序的api接口调用该sdk的sdk接口,从而,该应用程序也就不能实现该sdk的功能。在这种情况下,电子设备可以对应用程序的api接口及sdk的sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口。具体的,可以采用对应用程序的api接口进行适配处理生成适配处理后的api接口的方式,从而,应用程序就可以实现该sdk的功能。或,采用对sdk的sdk接口进行适配处理生成适配处理后的sdk接口的方式,从而,应用程序就可以实现该sdk的功能。还可以是同时对应用程序的api接口、sdk的sdk接口进行适配处理,从而,应用程序就可以实现该sdk的功能,本技术对此不做限定。
42.步骤360,控制应用程序基于适配处理后的api接口或适配处理后的sdk接口调用sdk。
43.在对sdk的sdk接口进行适配处理生成适配处理后的sdk接口,就可以控制应用程序基于适配处理后的sdk的sdk接口调用sdk。或对api接口进行适配处理生成适配处理后的api接口之后,就可以控制应用程序基于适配处理后api接口调用sdk。假设同时对应用程序的api接口、sdk的sdk接口进行适配处理,则就可以控制应用程序基于适配处理后的api接口、适配处理后的的sdk接口调用sdk。
44.本技术实施例中,电子设备上运行应用程序及软件开发工具包,电子设备通过获取应用程序的api接口的版本标识及软件开发工具包sdk的sdk接口的版本标识。若api接口的版本标识与sdk接口的版本标识不一致,则对api接口或sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口。控制应用程序基于适配处理后的api接口或适
配处理后的sdk接口调用sdk。在应用程序的应用程序接口api接口的版本与软件开发工具包sdk的sdk接口的版本不一致的情况下,本技术中通过对api接口或sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口。从而,就可以控制应用程序基于适配处理后的api接口或适配处理后的sdk接口调用sdk,解决了sdk的sdk接口与api接口不兼容的问题。
45.且,不需要像传统方法中对两者版本中较低的接口进行升级更新。从而,不涉及到应用程序的更新或sdk的更新,进而大大降低开发成本。
46.接前一个实施例,如图4所示,步骤340,若api接口的版本标识与sdk接口的版本标识不一致,则对api接口或sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口,包括:
47.步骤342,判断api接口的版本标识与sdk接口的版本标识是否一致;
48.步骤344,若api接口的版本标识与sdk接口的版本标识不一致,则根据适配器模式和/或工厂模式建立预设适配类。
49.首先,电子设备从应用程序的api包中获取到api接口的版本标识,再获取软件开发工具包sdk的sdk接口的版本标识。判断所获取的应用程序的api接口的版本标识与应用程序所要调用的sdk的sdk接口的版本标识是否一致,若不一致,则说明应用程序的api接口的版本与应用程序所要调用的sdk的sdk接口的版本不能匹配,不能直接采用当前应用程序的api接口调用该sdk的sdk接口。
50.此时,根据适配器模式和/或工厂模式建立预设适配类,该预设适配类用于对api接口或sdk接口进行适配处理。可以根据适配器模式建立预设适配类,可以根据工厂模式建立预设适配类,也可以根据适配器模式和工厂模式建立预设适配类,本技术对此不做限定。具体的,若该预设适配类用于对api接口进行适配处理,则根据适配器模式在应用程序的api包中建立预设适配类。若该预设适配类用于对sdk接口进行适配处理,则根据适配器模式在sdk中建立预设适配类。
51.其中,适配器模式(adapter pattern)是作为两个不兼容的接口之间的桥梁,这种类型的设计模式属于结构型模式,可以结合两个独立接口的功能。适配器模式涉及到一个适配类adapter,该适配类adapter用于向一个接口加入其他接口独立的或不兼容的接口功能。工厂模式(factory pattern)是java中常用的设计模式之一,这种类型的设计模式属于创建型模式,提供了一种创建对象的方式。在工厂模式中,在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
52.步骤346,通过预设适配类,对api接口或sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口。
53.若该预设适配类adapter用于对api接口进行适配处理,则根据适配器模式在应用程序的api包中建立预设适配类adapter。通过预设适配类adapter,对api接口进行适配处理,生成适配处理后的api接口。其中,对api接口进行适配处理,指的是使得适配处理后的api接口能够加入sdk接口的功能。
54.若该预设适配类adapter用于对sdk接口进行适配处理,则根据适配器模式在sdk中建立预设适配类adapter。通过预设适配类adapter,对sdk接口进行适配处理,生成适配处理后的sdk接口。其中,对sdk接口进行适配处理,指的是使得适配处理后的sdk接口能够
加入应用程序的api接口的功能。
55.本技术实施例中,在api接口的版本标识与sdk接口的版本标识不一致的情况下,根据适配器模式和/或工厂模式建立预设适配类。通过预设适配类就可以对api接口或sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口,使得应用程序通过适配处理后的api接口或适配处理后的sdk接口可以调用sdk。这整个过程不需要像传统方法中对两者版本中较低的接口进行升级更新。而对两者版本中较低的接口进行升级更新,将会涉及到应用程序的更新或sdk的更新,会大大增加开发成本。因此,采用根据适配器模式建立预设适配类的方式实现应用程序可以调用sdk,由于不需要对应用程序进行更新或对sdk进行更新,就大大降低了开发成本。
56.在前一个实施例中,描述了根据适配器模式和/或工厂模式建立预设适配类的方式,通过预设适配类,对api接口或sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口,进而可以实现应用程序可以调用sdk。本实施例中,详细说明通过预设适配类,对api接口或sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口的具体实现步骤,包括:
57.通过预设适配类,对api接口或sdk接口进行参数适配及功能适配,生成适配处理后的api接口或适配处理后的sdk接口。
58.其中,适配器模式(adapter pattern)是作为两个不兼容的接口之间的桥梁,这种类型的设计模式属于结构型模式,可以结合两个独立接口的功能。适配器模式涉及到一个适配类adapter,该适配类adapter用于向一个接口加入其他接口独立的或不兼容的接口功能。
59.一方面,若该预设适配类adapter用于对api接口进行适配处理,则根据适配器模式在应用程序的api包中建立预设适配类adapter。通过预设适配类adapter,对api接口进行参数适配及功能适配,生成适配处理后的api接口。
60.其中,参数适配指的是通过调用预设适配类adapter,实现将应用程序的api接口的参数转换为与sdk接口的参数一致。例如,这里的参数包括数据传输的标记(vendortag),将应用程序的api接口进行数据传输的标记(vendortag),转换为与sdk的sdk接口进行数据传输的标记(vendortag)一致,实现两个接口在实现数据传输时标记的一致性。当然,这里的参数还可以包括与传输协议相关的参数,均需要将应用程序的api接口的传输协议参数,转换为与sdk接口的传输协议参数保持一致,本技术对这里的参数内容不做具体限定。
61.其中,功能适配指的是通过调用预设适配类adapter,实现将应用程序的api接口的功能转换为与sdk接口的功能一致。
62.另一方面,若该预设适配类adapter用于对sdk接口进行适配处理,则根据适配器模式在sdk中建立预设适配类adapter。通过预设适配类adapter,对sdk接口进行参数适配及功能适配,生成适配处理后的sdk接口。
63.同理,其中,参数适配指的是通过调用预设适配类adapter,实现将sdk的sdk接口的参数转换为与应用程序的api接口的参数一致。例如,这里的参数包括数据传输的标记(vendortag),将sdk的sdk接口进行数据传输的标记(vendortag),转换为与应用程序的api接口进行数据传输的标记(vendortag)一致,实现两个接口在实现数据传输时标记的一致性。当然,这里的参数还可以包括与传输协议相关的参数,均需要将sdk的sdk接口的传输协
议参数,转换为与应用程序的api接口的传输协议参数保持一致,本技术对这里的参数内容不做具体限定。
64.其中,功能适配指的是通过调用预设适配类adapter,实现将sdk的sdk接口的功能转换为与应用程序的api接口的功能一致。
65.本技术实施例中,通过预设适配类,对api接口或sdk接口进行参数适配及功能适配两个维度的适配,从而,可以更大程度保证适配的成功率。从而,就可以控制应用程序基于适配处理后的api接口或适配处理后的sdk接口调用sdk。最终,解决了sdk的sdk接口与api接口不兼容的问题。
66.在图3所示实施例的基础上,在一个实施例中,若api接口的版本标识大于sdk接口的版本标识,则在应用程序的api包中建立预设api接口适配类;
67.通过预设适配类,对api接口或sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口,包括:
68.通过预设api接口适配类,将api接口转换为与sdk接口的版本标识适配的目标api接口。
69.具体的,首先,获取应用程序的api接口的版本标识及sdk的sdk接口的版本标识。其次,判断所获取的应用程序的api接口的版本标识与应用程序所要调用的sdk的sdk接口的版本标识是否一致。最后,若不一致,则进一步判断应用程序的api接口的版本标识与应用程序所要调用的sdk的sdk接口的版本标识之间的大小关系。
70.若判断出api接口的版本标识大于sdk接口的版本标识,例如,针对cameraunit即拍照功能来说,电子设备从具有拍照功能的某个应用程序app1的api包中获取到api接口的版本标识为cameraunit api接口2.0,获取sdk的sdk接口的版本标识为cameraunit sdk1.0。此时,即为api接口的版本标识大于sdk接口的版本标识。
71.如图5所示,由于api接口的版本标识大于sdk接口的版本标识,即api接口的版本相对于sdk接口的版本更新。此时,就需要使应用程序的高版本api接口向下兼容低版本的sdk接口。因此,在应用程序的api包中建立预设api接口适配类(api adapter1.0类),通过该预设api接口适配类(api adapter1.0类),对api接口进行参数适配及功能适配,生成适配处理后的api接口。通过api adapter1.0类可以将cameraunit开放给某个应用程序app1的cameraunit api2.0全部转换为cameraunit api1.0接口。即实现了将api接口转换为与sdk接口的版本标识cameraunit sdk1.0适配的目标api接口(cameraunit api1.0)。此时,就可以控制应用程序基于目标api接口调用sdk。其中,这里的应用程序app1可以是第三方应用或系统应用,本技术对此不做限定。
72.在api接口的版本标识(cameraunit api 2.0)与sdk接口的版本标识(cameraunit sdk2.0)一致的情况下,也可以根据适配器模式建立预设适配类(api adapter2.0类)。通过api adapter2.0类可以将cameraunit开放给某个应用程序app1的cameraunit api 2.0全部转换为cameraunit api 2.0接口,可以理解为控制cameraunit开放给某个应用程序app1的cameraunit api 2.0保持不变。如此,就可以在api接口的版本标识与sdk接口的版本标识一致或不一致的情况下,均根据适配器模式建立预设适配类,从而基于预设适配类实现了应用程序可以调用sdk。因此,在api接口的版本标识与sdk接口的版本标识一致或不一致的情况下,均可以采用预设适配类来实现接口之间的兼容性,即实现不同版本的api接口与
sdk接口之间的兼容,提高了预设适配类的复用性。同时,应用层(应用程序)不需要关注sdk不同的接口和不同功能的兼容问题,只需要关注预设适配类提供的接口,因此,也增加了该预设适配类的透明度和灵活性。
73.本技术实施例中,若api接口的版本标识大于sdk接口的版本标识,此时,就需要使应用程序的高版本api接口向下兼容低版本的sdk接口,因此,在应用程序的api包中建立预设api接口适配类。然后,通过预设api接口适配类,将api接口转换为与sdk接口的版本标识适配的目标api接口。就可以控制应用程序基于目标api接口调用sdk,从而,解决了sdk的sdk接口与api接口不兼容的问题。
74.接上一个实施例,若api接口的版本标识大于sdk接口的版本标识,则在应用程序的api包中建立预设api接口适配类。由于通过预设api接口适配类,将api接口转换为与sdk接口的版本标识适配的目标api接口,因此,控制应用程序基于适配处理后的api接口或适配处理后的sdk接口调用sdk,包括:
75.控制应用程序基于目标api接口、sdk接口调用sdk。
76.本技术实施例中,通过预设api接口适配类,将api接口转换为与sdk接口的版本标识适配的目标api接口。就可以控制应用程序基于目标api接口调用sdk,从而,解决了sdk接口与api接口不兼容的问题。
77.在图3所示实施例的基础上,在一个实施例中,若api接口的版本标识小于sdk接口的版本标识,则在sdk中建立预设sdk接口适配类;
78.通过预设适配类,对api接口或sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口,包括:
79.通过预设sdk接口适配类,将sdk接口转换为与api接口的版本标识适配的目标sdk接口。
80.具体的,首先,获取应用程序的api接口的版本标识及软件开发工具包sdk的sdk接口的版本标识。其次,判断所获取的应用程序的api接口的版本标识与应用程序所要调用的sdk的sdk接口的版本标识是否一致。最后,若不一致,则进一步判断应用程序的api接口的版本标识与应用程序所要调用的sdk的sdk接口的版本标识之间的大小关系。
81.若判断出api接口的版本标识小于sdk接口的版本标识,例如,针对cameraunit即拍照功能来说,电子设备从具有拍照功能的某个应用程序app1的api包中获取到api接口的版本标识为cameraunit api 1.0,获取sdk接口的版本标识为cameraunit sdk2.0。此时,即为api接口的版本标识小于sdk接口的版本标识。
82.如图6所示,为一个实施例中,由于api接口的版本标识小于sdk接口的版本标识,即sdk接口的版本相对于api接口的版本更新。此时,就需要使应用程序的低版本api接口向上兼容高版本的sdk接口。因此,在sdk中建立预设sdk适配类(sdk adapter2.0类),通过该预设sdk适配类(sdk adapter2.0类),对cameraunit sdk1.0进行参数适配及功能适配,生成cameraunit sdk2.0。因为通过cameraunit api接口1.0可以直接调用cameraunit sdk1.0接口,而由于对cameraunit sdk1.0进行参数适配及功能适配,生成了cameraunit sdk2.0,所以,此时实际上是调用cameraunit sdk2.0接口。此时,就可以控制应用程序基于cameraunit api接口1.0调用cameraunit sdk2.0接口,进而实现了调用sdk。其中,这里的应用程序app1可以是第三方应用或系统应用,本技术对此不做限定。
83.在api接口的版本标识(cameraunit api 1.0)与sdk接口的版本标识(cameraunit sdk1.0)一致的情况下,也可以根据适配器模式建立预设适配类(sdk adapter1.0类)。通过sdk adapter1.0类可以将cameraunit开放给某个应用程序app1的cameraunit sdk1.0全部转换为cameraunit sdk1.0接口,可以理解为控制cameraunit开放给某个应用程序app1的cameraunit sdk 1.0接口保持不变。如此,就可以在api接口的版本标识与sdk接口的版本标识一致或不一致的情况下,均根据适配器模式建立预设适配类,从而基于预设适配类实现了应用程序可以调用sdk。因此,在api接口的版本标识与sdk接口的版本标识一致或不一致的情况下,均可以采用预设适配类来实现接口之间的兼容性,即实现不同版本的api接口与sdk接口之间的兼容,提高了预设适配类的复用性。同时,应用层(应用程序)不需要关注sdk不同的接口和不同功能的兼容问题,只需要关注预设适配类提供的接口,因此,也增加了该预设适配类的透明度和灵活性。
84.本技术实施例中,若api接口的版本标识小于sdk接口的版本标识,此时,就需要使应用程序的低版本api接口向上兼容高版本的sdk接口,因此,在sdk中建立预设sdk适配类。然后,通过该预设sdk适配类(sdk adapter2.0类),对cameraunit sdk1.0进行参数适配及功能适配,生成cameraunit sdk2.0。此时,就可以控制应用程序基于cameraunit api1.0调用cameraunit sdk2.0接口,进而实现了调用sdk。从而,解决了sdk的sdk接口与api接口不兼容的问题。
85.接上一个实施例,若api接口的版本标识小于sdk接口的版本标识,则在sdk中建立预设sdk接口适配类。由于通过预设sdk接口适配类,将sdk接口转换为与api接口的版本标识适配的目标sdk接口,因此,控制应用程序基于适配处理后的api接口或适配处理后的sdk接口调用sdk,包括:
86.控制应用程序基于api接口、目标sdk接口调用sdk。
87.本技术实施例中,通过预设sdk接口适配类,将sdk接口转换为与api接口的版本标识适配的目标sdk接口,就可以控制应用程序基于api接口、目标sdk接口调用sdk,从而,解决了sdk接口与api接口不兼容的问题。
88.在图3所示实施例的基础上,如图7所示,在一个实施例中,详细说明获取应用程序的api接口的版本标识的具体实现步骤,包括:
89.步骤720,获取编译生成的应用程序的api包;应用程序包括系统应用及第三方应用,api包中包括至少一个api接口。
90.具体的,首先基于代码编译生成的应用程序的api包。预先基于分包机制区分第三方应用和系统应用,然后,分别存储第三方应用的代码、系统应用的代码。再基于第三方应用的代码进行编译生成的第三方应用的api包,基于系统应用的代码进行编译生成的系统应用的api包。其中,api包指的是可以被应用程序调用的jar包,jar包中包含了至少一个api接口。例如,jar包中包含了多个调用不同功能模块的api接口。最后,获取编译生成的第三方应用的api包及系统应用的api包。
91.步骤740,从应用程序的api包中,获取调用sdk的api接口的版本标识。
92.从第三方应用的api包中获取调用sdk的api接口的版本标识,从系统应用的api包中获取调用sdk的api接口的版本标识。例如,针对cameraunit即拍照功能来说,电子设备从具有拍照功能的某个应用程序app1的api包中获取调用cameraunit sdk的api接口的版本
标识为cameraunit api2.0。
93.本技术实施例中,由于api包中包括api接口,因此,在获取编译生成的应用程序的api包之后,就可以从应用程序的api包中,获取调用sdk的api接口的版本标识。
94.接上一个实施例,在获取应用程序的api接口的版本标识时,首先,获取编译生成的应用程序的api包;再从应用程序的api包中,获取调用sdk的api接口的版本标识。那么,如何编译生成的应用程序的api包,以下详细说明编译生成的应用程序的api包的具体实现步骤,包括:
95.获取系统应用的api接口相对于公共代码的第一差异化代码及第三方应用的api接口相对于公共代码的第二差异化代码;
96.基于公共代码及第一差异化代码编译生成系统应用的api包;
97.基于公共代码及第二差异化代码编译生成第三方应用的api包。
98.首先,基于代码编译生成的应用程序的api包。预先基于分包机制区分第三方应用和系统应用,然后,分别存储第三方应用的代码、系统应用的代码。其中,系统应用的代码包括公共代码及系统应用的api接口相对于公共代码的第一差异化代码。其中,第三方应用的代码包括公共代码及第三方应用的api接口相对于公共代码的第二差异化代码,公共代码为大部分应用所共用的代码。
99.基于系统应用的代码进行编译生成的系统应用的api包,再基于第三方应用的代码进行编译生成的第三方应用的api包。其中,api包指的是可以被应用程序调用的jar包,jar包中包含了至少一个api接口。例如,jar包中包含了多个调用不同功能模块的api接口。
100.本技术实施例中,在分别存储系统应用的代码、第三方应用的代码时,可以仅存储系统应用的api接口相对于公共代码的第一差异化代码及第三方应用的api接口相对于公共代码的第二差异化代码。如此,减少了对内存空间的占用,提高了编译的效率。
101.在一个具体的实施例中,如图8所示,提供了一种软件开发工具包调用方法,应用于电子设备,电子设备上运行应用程序及软件开发工具包,该方法包括:
102.步骤802,获取系统应用的api接口相对于公共代码的第一差异化代码及第三方应用的api接口相对于公共代码的第二差异化代码;
103.步骤804,基于公共代码及第一差异化代码编译生成系统应用的api包;基于公共代码及第二差异化代码编译生成第三方应用的api包;
104.步骤806,获取编译生成的系统应用及第三方应用的api包;
105.步骤808,从应用程序的api包中,获取调用sdk的api接口的版本标识;
106.步骤810,判断api接口的版本标识与sdk接口的版本标识是否一致,如否,进入步骤812;
107.步骤812,判断api接口的版本标识是否大于sdk接口的版本标识;若是,进入步骤814;如否,进入步骤822;
108.步骤814,在应用程序的api包中建立预设api接口适配类;
109.步骤816,通过预设api接口适配类,将api接口转换为与sdk接口的版本标识适配的目标api接口;
110.步骤818,控制应用程序基于目标api接口、sdk接口调用sdk;
111.步骤820,在sdk中建立预设sdk接口适配类;
112.步骤822,通过预设sdk接口适配类,将sdk接口转换为与api接口的版本标识适配的目标sdk接口;
113.步骤824,控制应用程序基于api接口、目标sdk接口调用sdk。
114.本技术实施例中,电子设备上运行应用程序及软件开发工具包,电子设备通过获取应用程序的应用程序接口api接口的版本标识及软件开发工具包sdk的sdk接口的版本标识。若api接口的版本标识与sdk接口的版本标识不一致,则对api接口或sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口。控制应用程序基于适配处理后的api接口或适配处理后的sdk接口调用sdk。在应用程序的应用程序接口api接口的版本与软件开发工具包sdk的sdk接口的版本不一致的情况下,本技术中通过对api接口或sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口。从而,就可以控制应用程序基于适配处理后的api接口或适配处理后的sdk接口调用sdk。最终,解决了sdk接口与api接口不兼容的问题。
115.在一个实施例中,如图9所示,提供了一种软件开发工具包调用装置900,应用于电子设备,电子设备上运行应用程序及软件开发工具包,该装置包括:
116.版本标识获取模块920,用于获取应用程序的应用程序接口api接口的版本标识及软件开发工具包sdk的sdk接口的版本标识;
117.适配处理模块940,用于若api接口的版本标识与sdk接口的版本标识不一致,则对api接口或sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口;
118.sdk调用模块960,用于控制应用程序基于适配处理后的api接口或适配处理后的sdk接口调用sdk。
119.在一个实施例中,若api接口的版本标识与sdk接口的版本标识不一致,则适配处理模块,包括:
120.建立预设适配类单元,用于若api接口的版本标识与sdk接口的版本标识不一致,则根据适配器模式和/或工厂模式建立预设适配类;
121.适配处理单元,用于通过预设适配类,对api接口或sdk接口进行适配处理,生成适配处理后的api接口或适配处理后的sdk接口。
122.在一个实施例中,适配处理单元,用于通过预设适配类,对api接口或sdk接口进行参数适配及功能适配,生成适配处理后的api接口或适配处理后的sdk接口。
123.在一个实施例中,若api接口的版本标识大于sdk接口的版本标识,则在应用程序的api包中建立预设api接口适配类;
124.适配处理单元,还用于通过预设api接口适配类,将api接口转换为与sdk接口的版本标识适配的目标api接口。
125.在一个实施例中,sdk调用模块,还用于控制应用程序基于目标api接口、sdk接口调用sdk。
126.在一个实施例中,若api接口的版本标识小于sdk接口的版本标识,则在sdk中建立预设sdk接口适配类;
127.适配处理单元,还用于通过预设sdk接口适配类,将sdk接口转换为与api接口的版本标识适配的目标sdk接口。
128.在一个实施例中,sdk调用模块,还用于控制应用程序基于api接口、目标sdk接口
调用sdk。
129.在一个实施例中,版本标识获取模块,包括:
130.api接口的版本标识获取单元,用于获取编译生成的应用程序的api包;应用程序包括系统应用及第三方应用,api包中包括至少一个api接口;从应用程序的api包中,获取调用sdk的api接口的版本标识。
131.在一个实施例中,api接口的版本标识获取单元,还包括api包编译子单元,用于获取系统应用的api接口相对于公共代码的第一差异化代码及第三方应用的api接口相对于公共代码的第二差异化代码;基于公共代码及第一差异化代码编译生成系统应用的api包;基于公共代码及第二差异化代码编译生成第三方应用的api包。
132.应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
133.上述软件开发工具包调用装置中各个模块的划分仅仅用于举例说明,在其他实施例中,可将软件开发工具包调用装置按照需要划分为不同的模块,以完成上述软件开发工具包调用装置的全部或部分功能。
134.关于软件开发工具包调用装置的具体限定可以参见上文中对于软件开发工具包调用的限定,在此不再赘述。上述软件开发工具包调用装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
135.图10为一个实施例中电子设备的内部结构示意图。该电子设备可以是手机、平板电脑、笔记本电脑、台式电脑、pda(personal digital assistant,个人数字助理)、pos(point of sales,销售终端)、车载电脑、穿戴式设备等任意终端设备。该电子设备包括通过系统总线连接的处理器和存储器。其中,该处理器可以包括一个或多个处理单元。处理器可为cpu(central processing unit,中央处理单元)或dsp(digital signal processing,数字信号处理器)等。存储器可包括非易失性存储介质及内存储器。非易失性存储介质存储有操作系统和计算机程序。该计算机程序可被处理器所执行,以用于实现以下各个实施例所提供的一种软件开发工具包调用方法。内存储器为非易失性存储介质中的操作系统计算机程序提供高速缓存的运行环境。
136.本技术实施例中提供的软件开发工具包调用装置中的各个模块的实现可为计算机程序的形式。该计算机程序可在终端或服务器上运行。该计算机程序构成的程序模块可存储在电子设备的存储器上。该计算机程序被处理器执行时,实现本技术实施例中所描述方法的步骤。
137.本技术实施例还提供了一种计算机可读存储介质。一个或多个包含计算机可执行指令的非易失性计算机可读存储介质,当计算机可执行指令被一个或多个处理器执行时,
使得处理器执行软件开发工具包调用方法的步骤。
138.本技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行软件开发工具包调用方法的步骤。
139.本技术所使用的对存储器、存储、数据库或其它介质的任何引用可包括非易失性和/或易失性存储器。非易失性存储器可包括rom(read-only memory,只读存储器)、prom(programmable read-only memory,可编程只读存储器)、eprom(erasable programmable read-only memory,可擦除可编程只读存储器)、eeprom(electrically erasable programmable read-only memory,电可擦除可编程只读存储器)或闪存。易失性存储器可包括ram(random access memory,随机存取存储器),它用作外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如sram(static random access memory,静态随机存取存储器)、dram(dynamic random access memory,动态随机存取存储器)、sdram(synchronous dynamic random access memory,同步动态随机存取存储器)、双数据率ddr sdram(double data rate synchronous dynamic random access memory,双数据率同步动态随机存取存储器)、esdram(enhanced synchronous dynamic random access memory,增强型同步动态随机存取存储器)、sldram(sync link dynamic random access memory,同步链路动态随机存取存储器)、rdram(rambus dynamic random access memory,总线式动态随机存储器)、drdram(direct rambus dynamic random access memory,接口动态随机存储器)。
140.以上实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1