CN110837378B - 软件开发工具包sdk功能的调用方法及装置 - Google Patents
软件开发工具包sdk功能的调用方法及装置 Download PDFInfo
- Publication number
- CN110837378B CN110837378B CN201810935000.9A CN201810935000A CN110837378B CN 110837378 B CN110837378 B CN 110837378B CN 201810935000 A CN201810935000 A CN 201810935000A CN 110837378 B CN110837378 B CN 110837378B
- Authority
- CN
- China
- Prior art keywords
- update
- sdk
- version
- target application
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种SDK功能的调用方法及装置,属于终端技术领域。所述方法包括:在目标应用运行的过程中,当检测到目标应用集成的SDK功能的当前版本存在更新版本时,向服务器发送更新请求;接收服务器发送的更新版本对应的更新文件,通过第一类加载器对更新文件进行加载,以在目标应用中集成更新版本;当接收到对SDK功能接口的调用指令时,将调用指令从当前版本重定向到更新版本;根据重定向后的调用指令,调用更新版本提供的SDK功能接口,通过SDK功能接口,运行更新版本对应的更新功能。本发明可以在目标应用运行的过程中,实现对SDK功能的热更新,以及对更新的SDK功能的调用,避免了对目标应用的源程序的重新编译、打包及安装,提高了更新效率。
Description
技术领域
本发明涉及终端技术领域,特别涉及一种SDK(Software Develop Kit,软件开发工具包)功能的调用方法及装置。
背景技术
目前,终端中安装的一些应用通常会集成其他应用的SDK功能,以通过集成的SDK功能,使用其他应用的部分功能。比如,第一应用会集成第二应用的SDK功能,第二应用的SDK功能可以为第一应用提供至少一个接口,第一应用通过调用这些接口,即可使用第二应用的部分功能。比如,视频应用通常会集成社交应用的SDK功能,该SDK功能可以为视频应用提供分享接口,视频应用通过调用该分享接口可以将视频分享到社交应用中。而且,当开发者对SDK功能进行了修复或更改时,第一应用还需要对集成的SDK功能进行更新,然后再对更新后的SDK功能进行调用。
相关技术中,当第二应用的开发者对第二应用的SDK功能进行了修复或更改后,可以将新版本的SDK功能的更新文件发布到第二应用的官网上。对于第一应用来说,如果要对第一应用集成的第二应用的SDK功能进行更新,需要第一应用的开发者从第二应用的官网上下载该SDK功能的更新文件,然后将该更新文件插入到第一应用的源程序中,并对插入后的源程序重新进行编译和打包,得到第一应用的更新安装包,再将第一应用的更新安装包发布到应用商店,以便安装了该第一应用的终端能够从应用商店下载该第一应用的更新安装包,并通过运行该更新安装包,对该SDK功能进行更新。更新完成之后,当检测到接口调用指令时,即可对更新后的SDK功能提供的接口进行调用。
由上可知,相关技术中对第二应用集成的SDK功能进行更新时,需要侵入第一应用的打包流程,也即是,需要第一应用的开发者配合对第一应用的源程序进行修改,然后对修改后的源程序重新编译和打包,更新周期较长。而且,第一应用的更新安装包发布到应用商店之后,需要用户主动升级,才能使用到新的SDK功能,更新效率较低。
发明内容
本发明实施例提供了一种SDK功能的调用方法及装置,可以用于解决相关技术中存在的SDK功能的更新周期长,更新效率低的问题。所述技术方案如下:
一方面,提供了一种SDK功能的调用方法,所述方法包括:
在目标应用运行的过程中,当检测到所述目标应用集成的SDK功能的当前版本存在更新版本时,向服务器发送更新请求,所述更新请求用于请求获取所述更新版本对应的更新文件;
接收所述服务器发送的所述更新文件,通过第一类加载器对所述更新文件进行加载,以在所述目标应用中集成所述更新版本;
当接收到对SDK功能接口的调用指令时,将所述调用指令从所述当前版本重定向到所述更新版本;
根据重定向后的所述调用指令,调用所述更新版本提供的所述SDK功能接口,通过所述SDK功能接口,运行所述更新版本对应的更新功能。
一方面,提供了一种SDK功能的调用装置,所述装置包括:
第一发送模块,用于在目标应用运行的过程中,当检测到所述目标应用集成的SDK功能的当前版本存在更新版本时,向服务器发送更新请求,所述更新请求用于请求获取所述更新版本对应的更新文件;
接收模块,用于接收所述服务器发送的所述更新文件;
加载模块,用于通过第一类加载器对所述更新文件进行加载,以在所述目标应用中集成所述更新版本;
重定向模块,用于当接收到对SDK功能接口的调用指令时,将所述调用指令从所述当前版本重定向到所述更新版本;
调用模块,用于根据重定向后的所述调用指令,调用所述更新版本提供的所述SDK功能接口,通过所述SDK功能接口,运行所述更新版本对应的更新功能。
一方面,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现上述SDK功能的调用方法。
一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由处理器加载并执行以实现上述SDK功能的调用方法。
本发明实施例提供的技术方案带来的有益效果是:本发明实施例中,可以在目标应用运行的过程中,当检测到目标应用集成的SDK功能的当前版本存在更新版本时,向服务器发送更新请求,以获取更新版本对应的更新文件,然后通过类加载器对更新文件进行加载,以在目标应用中集成该更新版本,之后,当接收到对SDK功能接口的调用指令时,可以先将调用指令从当前版本重定向到更新版本,以根据该调用指令直接调用更新版本提供的SDK功能接口,并通过调用的接口运行更新版本对应的更新功能。如此,可以在目标应用运行的过程中,实现对SDK功能的热更新,以及对更新后的SDK功能的调用,避免了对目标应用的源程序的重新编译和打包,以及对目标应用的重新安装,减少了更新周期,提高了更新效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种SDK热更新系统的示意图;
图2是本发明实施例提供的另一种SDK热更新系统的示意图;
图3是本发明实施例提供的一种SDK功能的调用方法流程图;
图4是本发明实施例提供的另一种SDK功能的调用方法流程图;
图5是本发明实施例提供的一种SDK功能的调用装置的结构示意图;
图6是本发明实施例提供的一种终端600的结构示意图;
图7是本发明实施例提供的一种服务器700的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在对本发明实施例进行详细地解释说明之前,为了便于理解本发明实施例,先对SDK功能的特性进行介绍。一般而言,SDK功能具有以下3种典型特性:
1、对外提供的接口稳定。对于集成SDK功能的目标应用,目标应用一般只会直接调用SDK功能对外提供的接口,并不会直接调用SDK功能内部的功能逻辑,所以SDK功能对外提供的接口一般不会发生变化,因此,本发明实施例中,在对SDK功能进行更新时,不需要更新接口,仅需更新接口对应的功能逻辑即可。
2、内部功能逻辑独立。对SDK功能的接口进行调用时,仅会调用该SDK功能内部的类或方法,而不会调用到该SDK功能外部的其他类或方法。
3、SDK功能内一般无资源文件。资源文件包括用于支持UI(User Interface,用户界面)的图片、窗口或控件等,也即是,SDK功能无需展示UI,也无需进行UI的更新。
接下来,对本发明实施例的实施环境进行介绍。
本发明实施例中提供的SDK功能的调用方法应用于SDK热更新系统中,图1是本发明实施例提供的一种SDK热更新系统的示意图,如图1所示,该系统包括终端10和服务器20,终端10和服务器20可以通过有线网络或无线网络进行连接。
其中,终端10中安装有目标应用11,目标应用11中集成有其他应用的SDK功能12。服务器20为SDK功能12的后台服务器,可以向终端10下发SDK功能的更新版本对应的更新文件。
本发明实施例中,在目标应用11运行的过程中,当检测到目标应用11集成的SDK功能12的当前版本存在更新版本时,终端10可以向服务器20发送更新请求,该更新请求用于请求获取更新版本对应的更新文件。服务器20接收到该更新请求后,可以向终端10发送该更新文件。终端10接收到该更新文件后,可以通过第一类加载器对该更新文件进行加载,以在目标应用11中集成该更新版本。之后,当接收到对SDK功能接口的调用指令时,可以将该调用指令从当前版本重定向到更新版本,然后根据重定向的调用指令,直接调用更新版本提供的SDK功能接口,并通过该SDK接口,运行更新版本对应的更新功能。
也即是,本发明实施例中,目标应用11可以在运行的过程中,通过加载从服务器20获取的SDK功能12的更新版本对应的更新文件,实现对SDK功能12的更新,并在接收到对SDK功能接口的调用指令时,将调用指令从当前版本重定向到更新版本,以调用更新版本提供的SDK接口,从而实现对更新后的SDK功能12的调用。如此,实现了在目标应用运行的过程中,对集成的SDK功能的热更新,避免了对目标应用的源重新进行重新编译和打包,也避免了对目标应用的重新进行安装,减少了SDK功能的更新周期,提高了更新效率。
需要说明的是,服务器20中的更新版本对应的更新文件可以由该SDK功能12的开发人员上传得到,例如,可以由开发人员通过SDK CMS(SDK Content Manager System,SDK内容管理系统)上传得到。接下来将以开发人员通过SDK CMS向服务器20上传SDK功能12的更新版本对应的更新文件为例进行说明。
图2是本发明实施例提供的另一种SDK热更新系统示意图,如图2所示,该系统包括终端10、服务器20和SDK CMS30。其中,终端10、服务器20和SDK CMS30可以通过有线网络或无线网络进行连接。其中,SDK CMS30是为开发人员提供的对SDK功能12进行管理的管理平台,开发人员可以通过SDK CMS30向服务器10上传SDK功能12的更新版本对应的更新文件。
进一步地,目标应用11集成的SDK功能12可以包括SDK代理层、热更新管理层和SDK实现层。其中,SDK代理层用于向目标应用11提供SDK功能12的对外接口,也即是,将SDK功能12的对外接口统一封装到了SDK代理层中。SDK实现层封装有SDK功能12的对外接口的具体功能逻辑,接口调用时,可以通过SDK代理层将对SDK功能12的接口的调用转发给SDK实现层,通过SDK实现层实现所调用的接口的具体功能逻辑。热更新管理层用于管理SDK功能12的更新,可以与服务器20进行交互,以检测SDK功能12的当前版本是否存在更新版本,当存在更新版本时,从服务器20获取更新版本对应的更新文件。
进一步地,服务器20可以包括更新文件入库模块和更新文件下发模块。其中,更新文件入库模块用于接收和存储SDK功能12的更新版本对应更新文件,更新文件下发模块22用于向终端10下发更新文件。
进一步地,SDK CMS30可以包括更新文件上传模块和更新文件回滚模块。其中,更新文件上传模块用于将开发人员上传的更新文件发送给服务器20,以便服务器20通过更新文件入库模块将接收的更新文件进行入库。更新文件回滚模块用于对更新后的SDK功能12进行回滚,比如SDK CMS30可以通过更新文件回滚模块向服务器20发送回滚指令,服务器20再将该回滚指令转发给终端10,以指示终端10对更新后的SDK功能12进行回滚,也即是,将SDK功能12的更新版本恢复为原始版本。
图3是本发明实施例提供的一种SDK功能的调用方法流程图,该方法可以应用于上述图1或图2所示的SDK热更新系统中。参见图3,该方法包括:
步骤301:在目标应用运行的过程中,当检测到目标应用集成的SDK功能的当前版本存在更新版本时,终端向服务器发送更新请求。
其中,目标应用可以为终端中安装的任一应用,该终端可以为支持安卓系统或其他系统的终端。目标应用集成的SDK功能为除目标应用之外的另一应用的SDK功能,用于为目标应用提供另一应用的部分功能。而且,该SDK功能可以为目标应用提供至少一个SDK功能接口,目标应用可以通过调用这至少一个SDK功能接口来使用另一应用的部门功能。
比如,该SDK功能提供的至少一个SDK功能接口可以为分享接口、登录接口或扫码接口等。目标应用通过调用分享接口,可以将信息分享到另一应用中;通过调用登录接口,可以使用另一应用的账号进行登录;通过调用扫码接口,可以使用另一应用的扫码功能对条形码或二维码进行扫描。
其中,SDK功能的当前版本为目标应用已集成的该SDK功能的所有版本中的最新版本。比如,若目标应用已集成了SDK功能的第一版本和第二版本,且第一版本的发布时间早于第二版本的发布时间,则第二版本为目标应用集成的该SDK功能的当前版本。
其中,服务器可以为另一应用或该SDK功能的后台服务器。当该SDK功能的开发者对该SDK功能进行了修复或更改后,可以将SDK功能的更新版本对应的更新文件上传到服务器,由服务器对该更新文件进行存储。在一个实施例中,参见图2,开发人员可以通过SDKCMS,将更新版本对应的更新文件上传到服务器。
其中,该SDK功能的更新文件用于实现一个完整的更新版本的SDK功能,可以按照构建当前版本的SDK功能的原始文件的方式构建该更新文件,所以在构建该更新文件时无需特殊的打包操作,只需按照原始文件的构建规则进行构建即可。示例的,该更新文件可以为Dex文件(一种可执行文件)。
其中,该更新请求至少携带该SDK功能的标识和当前版本标识,用于请求服务器根据该SDK功能的标识和当前版本标识,确定该SDK功能的更新版本。该SDK功能的标识用于唯一标识该SDK功能,可以为该SDK功能的名称或ID(Identification,身份标识号)等。当前版本标识用于唯一标识该SDK功能的当前版本,可以包括当前版本号或当前版本的SDK功能的构建次序等。进一步地,该更新请求还可以携带目标应用的标识,目标应用的标识可以为目标应用的名称或ID、目标应用的安装包的名称或ID等。更进一步地,该更新请求还可以携带该SDK功能的渠道号或使用地域等信息,本发明实施例对此不做限定。
本发明实施例中,可以在目标应用运行的过程中,检测目标应用集成的SDK功能的当前版本是否存在更新版本。当检测到存在更新版本时,向服务器发送更新请求,以从服务器获取更新版本对应的更新文件。具体地,检测目标应用集成的SDK功能的当前版本是否存在更新版本的方式可以包括以下两种:
第一种实现方式:向服务器发送更新检测请求,该更新检测请求携带该SDK功能的标识和当前版本标识,由服务器根据该SDK功能的标识和当前版本标识,检测当前是否已发布相较于当前版本的更新版本,并将检测结果发送给终端。终端根据该检测结果,确定该SDK功能的当前版本是否存在更新版本。
第二种实现方式:服务器在接收到上传的该SDK功能的更新版本时,可以通过集成该SDK功能的目标应用向终端发送更新消息,该更新消息携带该SDK功能的更新版本标识。终端可以根据是否接收到该更新消息,以及该更新消息中的更新版本标识,确定该SDK功能的当前版本是否存在更新版本。
此外,在目标应用运行的过程中,可以周期性地检测目标应用集成的SDK功能的当前版本是否存在更新版本,也可以根据预先设置的触发条件触发检测,比如,可以在接收到对SDK功能接口的调用指令时触发检测。
在一个实施例中,参见图2,SDK代理层可以在接收到对该SDK功能的SDK功能接口的调用指令时,触发热更新管理层检测该SDK功能的当前版本是否存在更新版本,当检测到存在更新版本时,从服务器20的更新文件下发模块获取更新版本对应的更新文件。另外,当检测到不存在更新版本时,热更新管理层还可以指示SDK代理层将调用指令转发给SDK实现层,以便SDK实现层根据该调用指令,调用当前版本的SDK功能接口,并运行所调用接口的具体功能逻辑。也即是,当该SDK功能的当前版本不存在更新版本时,目标应用可以不对该SDK功能进行更新,并直接调用当前版本的SDK功能提供的接口。
步骤302:服务器根据该更新请求,向终端发送更新版本对应的更新文件。
也即是,服务器可以根据该更新请求携带的匹配条件,从存储的多个可下发的更新文件中选择匹配的更新文件,并将匹配的更新文件下发给终端。其中,该匹配条件至少包括该SDK功能的标识和当前版本标识,进一步地还可以包括目标应用的标识、该SDK功能的渠道号或使用地域等。
具体地,服务器可以根据该SDK功能的标识和当前版本标识,从已发布的该SDK功能的更新版本中确定与当前版本匹配的更新版本,然后将匹配的更新版本对应的更新文件发送给终端。其中,与当前版本匹配的更新版本可以为当前版本的下一个版本,也可以为该SDK功能的最新版本,本发明实施例对此不做限定。
进一步地,确定匹配的更新版本之后,服务器还可以从该更新版本对应的更新文件中选择构建次序最近的更新文件,再将选择的更新文件发送给终端。或者,当该更新请求还携带目标应用的标识时,还可以先从匹配的更新版本对应的更新文件中选择适用于目标应用的更新文件,再将选择的更新文件发送给终端。或者,当该更新请求还携带该SDK功能的渠道号或使用地域时,还可以从匹配的更新版本对应的更新文件中选择与该SDK功能的渠道号或使用地域匹配的更新文件,再将选择的更新文件发送给终端。
需要说明的是,本发明实施例仅是以根据上述几种匹配条件选择匹配的更新文件为例进行说明,而实际应用中,还可以根据其他匹配条件选择匹配的更新文件,本发明实施例对此不做限定。
进一步地,向终端发送更新版本对应的更新文件之前,服务器还可以先检测该终端的网络环境,当该网络环境满足下发条件时,再向该终端发送该更新文件。比如,可以在该终端处于WIFI(Wireless-Fidelity,无线保真)网络时,确定该终端的网络环境满足下发条件。
步骤303:终端接收服务器发送的更新文件,通过第一类加载器对该更新文件进行加载,以在目标应用中集成该更新版本。
通过第一类加载器对更新文件进行加载之后,即可在目标应用中集成SDK功能的更新版本,从而使得目标应用中即集成有SDK功能的当前版本,也集成有更新版本,也即是,SDK功能的当前版本和更新版本在目标应用中均存在。
其中,类加载器(Class Loader)是终端系统自带的加载工具,用于将类文件加载到虚拟机中,从而读取类文件。比如,类加载器可以读取Java字节码形式的类文件,并将Java字节码转换成类的一个实例。
本发明实施例中,该更新文件是对SDK功能的更新程序进行编译之后得到的类文件,因此,终端在接收到该更新文件之后,需要先通过第一类加载器对该更新文件进行加载,以读取该更新文件。比如,假设SDK功能的更新程序为Java源程序,则更新文件可以是通过Java编译器对Java源程序进行编译之后得到的Java字节代码形式的类文件,通过第一类加载器对该更新文件进行加载,可以读取Java字节码形式的类文件,并将Java字节码转换成类的一个实例。
在一个可能的实施例中,在通过第一类加载器对该更新文件进行加载之前,可以将用于加载目标应用的第二类加载器的父类加载器确定为第一类加载器,以通过加载目标应用本身的第二类加载器的父类加载器来加载该更新文件。
由于该SDK功能的当前版本对应的原始文件和更新版本对应的更新文件中可能具有相同名称的类,因此如果对这两个文件采用相同的类加载器进行加载,则对于具有相同名称的类,该类加载器将无法进行识别,从而无法判断应该加载哪个类,进而产生加载冲突。而且,加载当前版本对应的原始文件的类加载器和加载目标应用本身的加载器是同一个加载器,即均为第二类加载器,因此,为了避免加载冲突,需要使用与第二类加载器不同的类加载器来加载该更新文件,以使该更新文件能够在独立的类加载器中运行。此外,由于系统一般会优先使用父类加载器加载的文件,因此,为了便于优先调用更新文件提供的SDK功能接口,还需要使用第二类加载器的父类加载器来加载该更新文件。
进一步地,在通过第一类加载器对该更新文件进行加载之后,当检测到当前版本需要将第一数据对象发送给目标应用时,还可以先将第一数据对象转换为目标应用能够识别的第二数据对象,再通过更新版本,将第二数据对象发送给目标应用。
具体地,第一数据对象可以包括更新版本的初始化数据或更新版本的执行结果等。比如,更新版本可以在加载完成后,将更新版本的一些初始化数据发送给目标应用,或者,在目标应用调用更新版本的SDK功能接口时,将接口调用的响应数据发送给目标应用等。
而且,第一数据对象为通过第二类加载器加载的更新版本的SDK功能能够识别的数据对象,第二数据对象为通过第一类加载器加载的目标应用能够识别的数据对象。当该更新文件和目标应用通过不同的类加载器进行加载时,由于不同的类加载器使用的加载规则不同,因此,目标应用可能无法识别更新版本的SDK功能产生和发送的数据对象。本发明实施例中,当更新版本需要将其第一数据对象发送给目标应用时,通过先将第一数据对象转换为目标应用能够识别的第二数据对象,可以避免目标应用无法识别的问题。
具体地,将第一数据对象转换为目标应用能够识别的第二数据对象可以包括:先根据第一类加载器的加载规则,将第一数据对象转换为序列化数据对象,再根据第二类加载器的加载规则,将该序列化数据对象转换为第二数据对象。
其中,该序列化数据对象是第一类加载器和第二类加载器均支持的数据对象,比如,该序列化数据对象可以为Parcel数据对象。具体地,可以先根据第一类加载器的加载规则,对第一数据对象进行序列化处理,得到序列化数据对象。然后,根据第二类加载器的加载规则,对该序列化数据对象进行反序列化处理,得到第二数据对象。
进一步地,通过第一类加载器对该更新文件进行加载之后,还可以确定当前版本中的第一回调监听对象,然后将该第一回调监听对象注册到该更新版本中。其中,第一回调监听对象由目标应用注册,并用于监听该当前版本的执行结果,将监听数据发送给目标应用。可选地,当该更新版本包括SDK代理层和SDK实现层时,可以将第一回调监听对象注册到该更新版本的SDK代理层。
在SDK功能的当前版本初始化时,目标应用通常会将一些第一回调监听对象注册到当前版本中,以便在调用该当前版本时,通过这些第一回调监听对象监听该当前版本的执行结果,比如监听当前版本的SDK功能的接口调用的响应数据。也即是,注册于当前版本中的第一回调监听对象可以监听当前版本的执行结果,并将监听到的数据返回给目标应用,以便目标应用及时获知当前版本的执行结果。
但是,由于更新版本是在目标应用中重新加载的版本,其中并未注册第一回调监听对象,因此,目标应用也就无法监听到更新版本的执行结果,为了使得目标应用同样能够监听到更新版本的执行结果,需要将第一回调监听对象注册到该更新版本中。
具体地,将第一回调监听对象注册到该更新版本中包括:通过动态类装载功能,在该更新版本中创建第二回调监听对象,该第二回调监听对象和该第一回调监听的类名相同。之后,当监听到更新版本的执行结果时,通过第二回调监听对象,将监听数据发送给第一回调监听对象,通过第一回调监听对象,将监听数据发送给目标应用。
具体地,可以通过动态类装载功能,在该更新文件中创建第二回调监听对象。动态类装载功能是指能够在运行状态下,动态获取类的相关信息以及动态调用类的功能,因此通过动态类装载功能,可以在该更新文件中创建出与第一回调监听的类名相同第二回调监听对象。其中,该动态类装载功能可以为反射机制,如Java反射机制。
由于更新版本中的第二回调监听不是由目标应用直接注册的,而是通过动态类装载功能创建的,因此,第二回调监听对象也就无法将监听数据直接发送给目标应用,本发明实施例中,当第二回调监听对象监听到更新版本的执行结果时,可以先将监听数据发送给第一回调监听对象,再由第一回调监听对象转发给目标应用。
另外,由于更新版本和目标应用是通过不同的类加载器加载的,为了避免目标应用无法识别第二回调监听对象的监听数据,在第二回调监听对象将监听数据发送给第一回调监听对象之前,还可以先对监听数据进行数据转换,得到目标应用能够识别的监听数据,再将转换后的监听数据发送给第一回调监听对象,由第一回调监听对象转发给目标应用。
步骤304:当接收到SDK功能接口的调用指令时,终端将该调用指令从当前版本重定向到更新版本。
其中,该SDK功能接口的调用指令是由目标应用触发的,且是针对于当前版本的SDK功能接口的调用指令,该SDK功能接口可以为该当前版本的SDK功能能够提供的任一接口。而且,根据SDK功能的特性可知,SDK功能的不同版本提供的对外SDK功能接口一般不会发生变化,区别仅在于不同版本提供的SDK功能接口对应的代码不同,能够实现的具体功能逻辑相应不同。因此,当前版本和更新版本均提供有该SDK功能接口。
具体地,将该调用指令从当前版本重定向到更新版本包括:通过当前版本,将该调用指令发送给该更新版本。也即是,当当前版本接收到该调用指令时,可以将该调用指令发送给更新版本,由更新版本根据该调用指令调用更新版本提供的SDK功能接口。
步骤305:终端根据重定向后的调用指令,调用更新版本提供的SDK功能接口,通过该SDK功能接口,运行更新版本对应的更新功能。
本发明实施例中,当终端接收到SDK功能接口的调用指令时,可以将原来对当前版本的SDK功能接口的调用,转换为对更新版本提供的SDK功能接口的调用,以运行该更新版本对应的更新功能,从而实现对接口功能的更新。
具体地,通过该SDK功能接口,运行更新版本对应的更新功能可以包括:从加载的更新文件中确定该SDK功能接口对应的目标类;通过动态类装载功能,运行该更新文件中该目标类对应的代码。其中,该动态类装载功能可以为反射机制等,该目标类对应的代码可以为该更新文件中该目标类对应的方法。
也即是,可以通过调用更新文件中该SDK功能接口对应的代码,运行更新版本提供的该SDK功能接口对应的功能逻辑,从而实现对该SDK接口对应的原始功能逻辑的替换,进而完成对SDK功能的内部功能逻辑的更新。
进一步地,在调用该更新版本提供的该SDK功能接口之后,若未接收到该SDK功能接口的调用响应,还可以对该更新版本进行回滚,也即是,将该SDK功能从更新版本恢复为当前版本。
当未接收到该SDK功能接口的调用响应时,说明更新版本的SDK功能接口出现了接口调用异常,通过在更新版本的接口调用异常时,将更新版本恢复为当前版本,可以便于和后续重新通过当前版本的SDK功能,顺利完成接口的调用,确保不影响目标应用的运行,如此,可以提高目标应用的容灾能力。
具体地,对该更新版本进行回滚包括:删除该更新文件,调用当前版本提供的该SDK功能接口,根据该SDK功能接口,运行当前版本对应的原始功能。
进一步地,在调用当前版本提供的该SDK功能接口之前,还可以对该当前版本的SDK功能重新进行初始化,以便恢复当前版本对应的原始功能。此外,重新初始化时,还可以将目标应用发送给更新版本的初始化数据同步到当前版本中。
进一步地,还可以在调用该更新版本提供的该SDK功能接口之后的预设时长内,未接收到该SDK功能接口的调用响应时,对该更新版本进行回滚。该预设时长可以由目标应用默认设置,也可以由用户设置,本发明实施例对此不做限定。
进一步地,删除该更新版本对应的更新文件之后,还可以记录该更新版本的版本标识,以便在后续更新过程中不再加载该更新版本对应的更新文件。当该更新版本无法对接口调用进行响应时,说明该更新文件的内部程序是有问题的,通过不再加载该更新文件,可以避免再次出现相同的接口调用异常问题。
由上可知,通过本发明实施例提供的方法,目标应用可以在运行过程中,对集成的SDK功能进行热更新,也即是,无需侵入目标应用的打包流程,且目标应用不需要感知热更新能力的存在,也不需要进行特殊修改。而且,这种热更新方式对SDK功能的可更新范围大,除了暴露给目标应用的接口外,其内部的功能逻辑可随意更新,比如对类、方法或成员变量的增加和减少均可支持。而且,本发明实施例提供设计的更新文件的生成方式简单,无需进行特殊的打包处理。此外,本发明实施例不仅局限于对SDK功能中代码的热更新,当SDK功能中还包括资源文件或SO(Shared Object,共享对象)文件时,还可以支持对资源文件或SO文件的热更新。
本发明实施例中,可以在目标应用运行的过程中,当检测到目标应用集成的SDK功能的当前版本存在更新版本时,向服务器发送更新请求,以获取更新版本对应的更新文件,然后通过类加载器对更新文件进行加载,以在目标应用中集成该更新版本,之后,当接收到对SDK功能接口的调用指令时,可以先将调用指令从当前版本重定向到更新版本,以根据该调用指令直接调用更新版本提供的SDK功能接口,并通过调用的接口运行更新版本对应的更新功能。如此,可以在目标应用运行的过程中,实现对SDK功能的热更新,以及对更新后的SDK功能的调用,避免了对目标应用的源程序的重新编译和打包,以及对目标应用的重新安装,减少了更新周期,提高了更新效率。
为了便于读者理解本发明实施例提供的方法,接下来以在目标应用运行过程中,当接收到对SDK功能接口的调用指令时,触发对SDK功能的更新检测逻辑为例,对本发明实施例提供的方法进行说明。图4是本发明实施例提供的另一种SDK功能的调用方法流程图,该方法的执行主体为终端,参见图4,该方法包括:
步骤401:在目标应用运行的过程中,接收对目标应用集成的SDK功能的当前版本提供的SDK功能接口的调用指令。
其中,该SDK功能接口可以为目标应用集成的SDK功能提供的任一接口,该调用指令由目标应用触发。
步骤402:根据该调用指令,检测目标应用集成的SDK功能的当前版本是否存在更新版本。
也即是,可以在接收到对该SDK功能的当前版本提供的SDK功能接口的调用指令时,触发对该SDK功能的更新检测逻辑。
步骤403:若检测结果为是,则向服务器发送更新请求,该更新请求用于请求获取该更新版本对应的更新文件。
也即是,当检测到目标应用集成的SDK功能的当前版本存在更新版本时,执行步骤403-步骤405。
具体地,该更新请求可以携带该SDK功能的标识和当前版本标识,以便服务器根据该SDK功能的标识和当前版本标识,从存储的多个版本中确定与该当前版本匹配的更新版本。
步骤404:接收服务器发送的该更新文件,通过第一类加载器对该更新文件进行加载,以在目标应用中集成该更新版本。
步骤405:将该调用指令重定向到该更新版本,根据该调用指令,调用更新版本提供的该SDK功能接口,通过该SDK功能接口,运行该更新版本对应的更新功能。
具体地,可以将该调用指令发送给该更新版本,以实现对该调用指令的重定向。
步骤406:若检测结果为否,则根据该调用指令,调用当前版本提供的该SDK功能接口,根据该SDK功能接口,运行当前版本对应的原始功能。
也即是,当检测到目标应用集成的SDK功能的当前版本不存在更新版本时,可以不对该SDK功能进行更新,并直接调用当前版本提供的接口即可。
图5是本发明实施例提供的一种SDK功能的调用装置的结构示意图,如图5所示,该装置包括:第一发送模块501、接收模块501、加载模块503、重定向模块504和调用模块505。
第一发送模块501,用于在目标应用运行的过程中,当检测到该目标应用集成的SDK功能的当前版本存在更新版本时,向服务器发送更新请求,该更新请求用于请求获取该更新版本对应的更新文件;
接收模块502,用于接收该服务器发送的该更新文件;
加载模块503,用于通过第一类加载器对该更新文件进行加载,以在该目标应用中集成该更新版本;
重定向模块504,用于当接收到对SDK功能接口的调用指令时,将该调用指令从该当前版本重定向到该更新版本;
调用模块505,用于根据重定向后的该调用指令,调用该更新版本提供的该SDK功能接口,通过该SDK功能接口,运行该更新版本对应的更新功能。
可选地,调用模块505包括:
确定单元,用于从该更新文件中确定该SDK功能接口对应的目标类;
运行单元,用于通过动态类装载功能,运行该更新文件中该目标类对应的代码。
可选地,该装置还包括:
第一确定模块,用于将用于加载该目标应用的第二类加载器的父类加载器确定为该第一类加载器。
可选地,该装置还包括:
转换模块,用于当检测到该更新版本需要将第一数据对象发送给该目标应用时,将该第一数据对象转换为该目标应用能够识别的第二数据对象;
第二发送模块,用于通过该更新版本,将该第二数据对象发送给该目标应用。
可选地,该转换模块具体用于:
根据该第一类加载器的加载规则,将该第一数据对象转换为序列化数据对象;
根据该第二类加载器的加载规则,将该序列化数据对象转换为该第二数据对象。
可选地,该装置还包括:
第二确定模块,用于确定该当前版本中的第一回调监听对象,该第一回调监听对象由该目标应用注册,并用于监听该当前版本的执行结果,将监听数据发送给该目标应用;
注册模块,用于将该第一回调监听对象注册到该更新版本中。
可选地,该注册模块具体用于:
通过动态类装载功能,在该更新版本中创建第二回调监听对象,该第二回调监听对象和该第一回调监听的类名相同;
该装置还包括:
第三发送模块,用于通过该第一回调监听对象,将该监听数据发送给该目标应用。
可选地,该装置还包括:
回滚模块,用于若未接收到该SDK功能接口的调用响应,则对该更新版本进行回滚。
本发明实施例中,可以在目标应用运行的过程中,当检测到目标应用集成的SDK功能的当前版本存在更新版本时,向服务器发送更新请求,以获取更新版本对应的更新文件,然后通过类加载器对更新文件进行加载,以在目标应用中集成该更新版本,之后,当接收到对SDK功能接口的调用指令时,可以先将调用指令从当前版本重定向到更新版本,以根据该调用指令直接调用更新版本提供的SDK功能接口,并通过调用的接口运行更新版本对应的更新功能。如此,可以在目标应用运行的过程中,实现对SDK功能的热更新,以及对更新后的SDK功能的调用,避免了对目标应用的源程序的重新编译和打包,以及对目标应用的重新安装,减少了更新周期,提高了更新效率。
需要说明的是:上述实施例提供的SDK功能的调用装置在对SDK功能进行调用时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的SDK功能的调用装置与SDK功能的调用方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图6是本发明实施例提供的一种终端600的结构示意图。该终端600可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端600还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端600包括有:处理器601和存储器602。
处理器601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器601可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器601还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器601所执行以实现本申请中方法实施例提供的SDK功能的调用方法。
在一些实施例中,终端600还可选包括有:外围设备接口603和至少一个外围设备。处理器601、存储器602和外围设备接口603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口603相连。具体地,外围设备包括:射频电路604、触摸显示屏605、摄像头606、音频电路607、定位组件608和电源609中的至少一种。
外围设备接口603可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器601和存储器602。在一些实施例中,处理器601、存储器602和外围设备接口603被集成在同一芯片或电路板上;在一些其他实施例中,处理器601、存储器602和外围设备接口603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路604用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路604包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路604可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路604还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏605用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏605是触摸显示屏时,显示屏605还具有采集在显示屏605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器601进行处理。此时,显示屏605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏605可以为一个,设置终端600的前面板;在另一些实施例中,显示屏605可以为至少两个,分别设置在终端600的不同表面或呈折叠设计;在再一些实施例中,显示屏605可以是柔性显示屏,设置在终端600的弯曲表面上或折叠面上。甚至,显示屏605还可以设置成非矩形的不规则图形,也即异形屏。显示屏605可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件606用于采集图像或视频。可选地,摄像头组件606包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件606还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器601进行处理,或者输入至射频电路604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器601或射频电路604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路607还可以包括耳机插孔。
定位组件608用于定位终端600的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件608可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源609用于为终端600中的各个组件进行供电。电源609可以是交流电、直流电、一次性电池或可充电电池。当电源609包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端600还包括有一个或多个传感器610。该一个或多个传感器610包括但不限于:加速度传感器611、陀螺仪传感器612、压力传感器613、指纹传感器614、光学传感器615以及接近传感器616。
加速度传感器611可以检测以终端600建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器611可以用于检测重力加速度在三个坐标轴上的分量。处理器601可以根据加速度传感器611采集的重力加速度信号,控制触摸显示屏605以横向视图或纵向视图进行用户界面的显示。加速度传感器611还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器612可以检测终端600的机体方向及转动角度,陀螺仪传感器612可以与加速度传感器611协同采集用户对终端600的3D动作。处理器601根据陀螺仪传感器612采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器613可以设置在终端600的侧边框和/或触摸显示屏605的下层。当压力传感器613设置在终端600的侧边框时,可以检测用户对终端600的握持信号,由处理器601根据压力传感器613采集的握持信号进行左右手识别或快捷操作。当压力传感器613设置在触摸显示屏605的下层时,由处理器601根据用户对触摸显示屏605的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器614用于采集用户的指纹,由处理器601根据指纹传感器614采集到的指纹识别用户的身份,或者,由指纹传感器614根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器601授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器614可以被设置终端600的正面、背面或侧面。当终端600上设置有物理按键或厂商Logo时,指纹传感器614可以与物理按键或厂商Logo集成在一起。
光学传感器615用于采集环境光强度。在一个实施例中,处理器601可以根据光学传感器615采集的环境光强度,控制触摸显示屏605的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏605的显示亮度;当环境光强度较低时,调低触摸显示屏605的显示亮度。在另一个实施例中,处理器601还可以根据光学传感器615采集的环境光强度,动态调整摄像头组件606的拍摄参数。
接近传感器616,也称距离传感器,通常设置在终端600的前面板。接近传感器616用于采集用户与终端600的正面之间的距离。在一个实施例中,当接近传感器616检测到用户与终端600的正面之间的距离逐渐变小时,由处理器601控制触摸显示屏605从亮屏状态切换为息屏状态;当接近传感器616检测到用户与终端600的正面之间的距离逐渐变大时,由处理器601控制触摸显示屏605从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图6中示出的结构并不构成对终端600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图7是本发明实施例提供的一种服务器700的结构示意图,该服务器700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processingunits,CPU)701和一个或一个以上的存储器702,其中,所述存储器702中存储有至少一条指令,所述至少一条指令由所述处理器701加载并执行以实现上述各个方法实施例提供的应用耗电监控方法。当然,该服务器700还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器700还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由上述终端或服务器中的处理器执行以完成上述实施例中的应用耗电监控方法。例如,所述计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种软件开发工具包SDK功能的调用方法,其特征在于,所述方法包括:
在目标应用运行的过程中,当检测到所述目标应用集成的SDK功能的当前版本存在更新版本时,向服务器发送更新请求,所述更新请求用于请求获取所述更新版本对应的更新文件;
接收所述服务器发送的所述更新文件,通过第一类加载器对所述更新文件进行加载,以在所述目标应用中集成所述更新版本;
当接收到对SDK功能接口的调用指令时,将所述调用指令从所述当前版本重定向到所述更新版本;
根据重定向后的所述调用指令,调用所述更新版本提供的所述SDK功能接口,通过所述SDK功能接口,运行所述更新版本对应的更新功能;
所述通过第一类加载器对所述更新文件进行加载之前,还包括:
将用于加载所述目标应用的第二类加载器的父类加载器确定为所述第一类加载器。
2.如权利要求1所述的方法,其特征在于,所述通过所述SDK功能接口,运行所述更新版本对应的更新功能,包括:
从所述更新文件中确定所述SDK功能接口对应的目标类;
通过动态类装载功能,运行所述更新文件中所述目标类对应的代码。
3.如权利要求1所述的方法,其特征在于,所述通过第一类加载器对所述更新文件进行加载之后,还包括:
当检测到所述更新版本需要将第一数据对象发送给所述目标应用时,将所述第一数据对象转换为所述目标应用能够识别的第二数据对象;
通过所述更新版本,将所述第二数据对象发送给所述目标应用。
4.如权利要求3所述的方法,其特征在于,所述将所述第一数据对象转换为所述目标应用能够识别的第二数据对象,包括:
根据所述第一类加载器的加载规则,将所述第一数据对象转换为序列化数据对象;
根据所述第二类加载器的加载规则,将所述序列化数据对象转换为所述第二数据对象。
5.如权利要求1-4任一所述的方法,其特征在于,所述通过第一类加载器对所述更新文件进行加载之后,还包括:
确定所述当前版本中的第一回调监听对象,所述第一回调监听对象由所述目标应用注册,并用于监听所述当前版本的执行结果,将监听数据发送给所述目标应用;
将所述第一回调监听对象注册到所述更新版本中。
6.如权利要求5所述的方法,其特征在于,所述将所述第一回调监听对象注册到所述更新版本中,包括:
通过动态类装载功能,在所述更新版本中创建第二回调监听对象,所述第二回调监听对象和所述第一回调监听的类名相同;
所述将所述第一回调监听对象注册到所述更新版本中之后,还包括:
当监听到所述更新版本的执行结果时,通过所述第二回调监听对象,将监听数据发送给所述第一回调监听对象;
通过所述第一回调监听对象,将所述监听数据发送给所述目标应用。
7.如权利要求1-4任一所述的方法,其特征在于,所述调用所述更新版本提供的所述SDK功能接口之后,还包括:
若未接收到所述SDK功能接口的调用响应,则对所述更新版本进行回滚。
8.一种SDK功能的调用装置,其特征在于,所述装置包括:
第一发送模块,用于在目标应用运行的过程中,当检测到所述目标应用集成的SDK功能的当前版本存在更新版本时,向服务器发送更新请求,所述更新请求用于请求获取所述更新版本对应的更新文件;
接收模块,用于接收所述服务器发送的所述更新文件;
加载模块,用于通过第一类加载器对所述更新文件进行加载,以在所述目标应用中集成所述更新版本;
重定向模块,用于当接收到对SDK功能接口的调用指令时,将所述调用指令从所述当前版本重定向到所述更新版本;
调用模块,用于根据重定向后的所述调用指令,调用所述更新版本提供的所述SDK功能接口,通过所述SDK功能接口,运行所述更新版本对应的更新功能;
所述装置还包括:
第一确定模块,用于将用于加载所述目标应用的第二类加载器的父类加载器确定为所述第一类加载器。
9.如权利要求8所述的装置,其特征在于,所述调用模块包括:
确定单元,用于从所述更新文件中确定所述SDK功能接口对应的目标类;
运行单元,用于通过动态类装载功能,运行所述更新文件中所述目标类对应的代码。
10.如权利要求8所述的装置,其特征在于,所述装置还包括:
转换模块,用于当检测到所述更新版本需要将第一数据对象发送给所述目标应用时,将所述第一数据对象转换为所述目标应用能够识别的第二数据对象;
第二发送模块,用于通过所述更新版本,将所述第二数据对象发送给所述目标应用。
11.如权利要求8-10任一所述的装置,其特征在于,所述装置还包括:
第二确定模块,用于确定所述当前版本中的第一回调监听对象,所述第一回调监听对象由所述目标应用注册,并用于监听所述当前版本的执行结果,将监听数据发送给所述目标应用;
注册模块,用于将所述第一回调监听对象注册到所述更新版本中。
12.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现如权利要求1-7任一项所述的SDK功能的调用方法。
13.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由处理器加载并执行以实现如权利要求1-7任一项所述的SDK功能的调用方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810935000.9A CN110837378B (zh) | 2018-08-16 | 2018-08-16 | 软件开发工具包sdk功能的调用方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810935000.9A CN110837378B (zh) | 2018-08-16 | 2018-08-16 | 软件开发工具包sdk功能的调用方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110837378A CN110837378A (zh) | 2020-02-25 |
CN110837378B true CN110837378B (zh) | 2021-07-02 |
Family
ID=69573312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810935000.9A Active CN110837378B (zh) | 2018-08-16 | 2018-08-16 | 软件开发工具包sdk功能的调用方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110837378B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148382A (zh) * | 2020-09-18 | 2020-12-29 | 湖南联盛网络科技股份有限公司 | 手机应用策略配置系统、配置方法、更新方法及装置 |
CN112486539B (zh) * | 2020-12-09 | 2023-08-08 | 税友软件集团股份有限公司 | 一种应用更新方法、装置、设备及存储介质 |
CN112860300A (zh) * | 2020-12-31 | 2021-05-28 | 中国工商银行股份有限公司 | 分布式sdk热更新处理方法、应用服务器集群 |
CN112882732A (zh) * | 2021-01-22 | 2021-06-01 | 支付宝(杭州)信息技术有限公司 | 一种软件开发工具包sdk中功能代码的更新方法和装置 |
CN113515299A (zh) * | 2021-05-14 | 2021-10-19 | 江苏保旺达软件技术有限公司 | 软件开发工具包sdk热升级方法、装置、设备及存储介质 |
CN114338379B (zh) * | 2021-12-28 | 2023-11-03 | 上海黑眸智能科技有限责任公司 | Sdk客户端配网方法、系统、sdk客户端以及app客户端 |
CN114896211B (zh) * | 2022-07-15 | 2022-10-04 | 北京蔚领时代科技有限公司 | 一种基于云渲染应用的共享资产文件方法及系统 |
CN117193825A (zh) * | 2023-09-19 | 2023-12-08 | 广东保伦电子股份有限公司 | 一种更新功能的调用方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104391716A (zh) * | 2014-11-14 | 2015-03-04 | 百度在线网络技术(北京)有限公司 | 基于插件的应用程序实现方法及装置 |
CN105630518A (zh) * | 2014-10-28 | 2016-06-01 | 北京娜迦信息科技发展有限公司 | Android应用软件资源更新的方法和装置 |
CN105843654A (zh) * | 2016-04-14 | 2016-08-10 | 广州市久邦数码科技有限公司 | 一种动态加载广告sdk的实现方法及其实现系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6494610B2 (ja) * | 2013-06-18 | 2019-04-03 | チャンベッラ・リミテッド | コードの仮想化およびリモートプロセスコール生成のための方法および装置 |
-
2018
- 2018-08-16 CN CN201810935000.9A patent/CN110837378B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630518A (zh) * | 2014-10-28 | 2016-06-01 | 北京娜迦信息科技发展有限公司 | Android应用软件资源更新的方法和装置 |
CN104391716A (zh) * | 2014-11-14 | 2015-03-04 | 百度在线网络技术(北京)有限公司 | 基于插件的应用程序实现方法及装置 |
CN105843654A (zh) * | 2016-04-14 | 2016-08-10 | 广州市久邦数码科技有限公司 | 一种动态加载广告sdk的实现方法及其实现系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110837378A (zh) | 2020-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110837378B (zh) | 软件开发工具包sdk功能的调用方法及装置 | |
CN110674022B (zh) | 行为数据获取方法、装置及存储介质 | |
CN110308956B (zh) | 一种应用界面显示方法、装置及移动终端 | |
CN110362328B (zh) | Ota升级的方法、装置和计算机设备 | |
CN108595226B (zh) | 动态加载方法、装置及计算机可读存储介质 | |
CN111752666A (zh) | 窗口显示方法、装置和终端 | |
CN111737100A (zh) | 数据获取方法、装置、设备及存储介质 | |
CN111159604A (zh) | 图片资源加载方法及装置 | |
CN110569220A (zh) | 游戏资源文件的展示方法、装置、终端及存储介质 | |
CN111459466A (zh) | 代码生成方法、装置、设备及存储介质 | |
CN113051015A (zh) | 页面渲染方法、装置、电子设备及存储介质 | |
CN111125602B (zh) | 页面构建方法、装置、设备和存储介质 | |
CN110677713B (zh) | 视频图像处理方法及装置、存储介质 | |
CN108984259B (zh) | 界面显示方法、装置及终端 | |
CN107943484B (zh) | 执行业务功能的方法和装置 | |
CN112148499A (zh) | 数据上报方法、装置、计算机设备及介质 | |
CN112612539A (zh) | 数据模型卸载方法、装置、电子设备及存储介质 | |
CN111580892B (zh) | 一种业务组件调用的方法、装置、终端和存储介质 | |
CN111258683A (zh) | 检测方法、装置、计算机设备及存储介质 | |
CN110825465A (zh) | 日志数据处理方法、装置、电子设备及存储介质 | |
CN115562529A (zh) | 可视化埋点方法、装置、终端及存储介质 | |
CN110941458B (zh) | 启动应用程序的方法、装置、设备及存储介质 | |
CN109189525B (zh) | 加载子页面的方法、装置、设备及计算机可读存储介质 | |
CN111596936A (zh) | 应用程序的更新方法及装置 | |
CN112783533A (zh) | 版本信息更新方法、装置、终端及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40021378 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |