CN109710287A - 一种热更新方法、装置及计算机存储介质 - Google Patents
一种热更新方法、装置及计算机存储介质 Download PDFInfo
- Publication number
- CN109710287A CN109710287A CN201811497236.5A CN201811497236A CN109710287A CN 109710287 A CN109710287 A CN 109710287A CN 201811497236 A CN201811497236 A CN 201811497236A CN 109710287 A CN109710287 A CN 109710287A
- Authority
- CN
- China
- Prior art keywords
- update
- file
- sdk client
- resource
- hot
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 88
- 230000004044 response Effects 0.000 claims description 53
- 238000004590 computer program Methods 0.000 claims description 15
- 230000008859 change Effects 0.000 claims description 5
- 238000004891 communication Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 23
- 230000003068 static effect Effects 0.000 description 23
- 230000006870 function Effects 0.000 description 18
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000009434 installation Methods 0.000 description 3
- 230000002950 deficient Effects 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
Landscapes
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种热更新方法、装置及计算机存储介质,方法包括:SDK客户端调用加载器加载更新文件至存储空间;所述SDK客户端将更新指示变量的值更改为所述存储空间中存储所述更新文件的地址;所述SDK客户端确定所述更新指示变量的值不为空,根据存储所述更新文件的地址调用所述更新文件。
Description
技术领域
本发明涉及智能终端领域,尤其涉及一种热更新方法、装置及计算机存储介质。
背景技术
近年来,随着智能终端的普及,用户对应用程序(Application,APP)的要求也越来越高。在APP发布后,需要不断地更新APP以满足用户对APP的各种要求或者修复APP中的漏洞。但是,每次进行APP更新时,都需要智能终端在应用商店中下载更新后的APP安装包,然后进行APP安装包的安装,由于一般APP安装包比较大,因此更新速度比较慢,而且用户的更新体验也比较差。
目前,主要通过热更新的方法来解决上述问题,该热更新方法是通过动态下发代码,使开发者在不发布新版本的APP安装包的情况下,通过更新包修复APP中的部分漏洞或发布新功能,由于一般更新包比较小,因此更新速度比较快。但是,该热更新方法并不适用于软件开发工具包(Software Development 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客户端的热更新。
附图说明
图1为本发明实施例提供的一种热更新方法的实现流程示意图一;
图2为本发明实施例提供的一种热更新方法的实现流程示意图二;
图3为本发明实施例提供的一种热更新装置的结构示意图;
图4为本发明实施例提供的一种热更新装置的具体硬件结构。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对发明的具体技术方案做进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本发明实施例提供一种热更新方法,图1为本发明实施例提供的一种热更新方法的实现流程示意图一,如图1所示,该方法主要包括以下步骤:
步骤101、SDK客户端调用加载器加载更新文件至存储空间。
需要说明的是,在SDK客户端调用加载器加载更新文件至存储空间之前,SDK客户端会向服务器发送查询请求,所述查询请求用于请求所述服务器查询更新文件;当所述SDK客户端接收所述服务器发送的查询响应,所述SDK客户端根据所述查询响应从所述服务器中下载所述更新文件。
在预设的时间点或预设的时间间隔,SDK客户端可以向服务器发送查询请求,例如预设的时间点为8点,则SDK客户端8点都会向服务器发送查询请求;预设的时间间隔为2天,则SDK每隔2天都会向服务器发送查询请求,以指示服务器查询是否有更新文件。
这里,当所述查询响应包括文件版本号时,所述文件版本号用于标识所述更新文件的版本;所述SDK客户端根据所述查询响应从所述服务器中下载所述更新文件,包括:
所述SDK客户端根据所述查询响应没有查询到有对应于所述文件版本号的更新文件,说明SDK客户端需要下载对应于所述文件版本号的更新文件,可以根据所述查询响应从所述服务器中下载所述更新文件。所述查询响应还可以包括存储更新文件的地址,SDK客户端能够根据存储更新文件的地址从服务器下载所述更新文件。
这里,所述查询响应还包括第一签名信息,所述第一签名信息用于唯一标识所述更新文件;在所述根据所述查询响应从所述服务器中下载所述更新文件之后,还包括:
所述SDK客户端根据所述更新文件生成第二签名信息,所述第二签名信息用于与所述第一签名信息进行比对;所述SDK客户端将所述第二签名信息与所述第一签名信息进行比对,若比对一致,说明SDK客户端从服务器下载的更新文件是完整的、且更新文件的内容是正确的,将存储所述更新文件的文件版本号。若比对不一致,说明SDK客户端从服务器下载的更新文件是有缺陷的,或者更新文件的内容是错误的,则丢弃下载的更新文件。
需要说明的是,当更新文件包括热更新代码时,SDK客户端可以调用加载器加载热更新代码至存储空间。当更新文件包括热更新资源时,SDK客户端可以调用加载器加载所述热更新资源、所述热更新资源的资源名称和存储所述热更新资源的地址至存储空间,其中存储所述热更新资源的存储空间的存储位置、与存储所述热更新资源的资源名称和存储所述热更新资源的存储空间的存储位置不同。
步骤102、SDK客户端将更新指示变量的值更改为所述存储空间中存储所述更新文件的地址。
这里,当更新文件包括热更新代码时,所述更新指示变量为第一更新指示变量,SDK客户端可以将第一更新指示变量的值更改为所述存储空间中存储所述热更新代码的地址。当更新文件包括热更新资源时,所述更新指示变量为第二更新指示变量,SDK客户端可以将第二更新指示变量的值更改为所述存储空间中存储所述资源名称和存储所述热更新资源地址的地址。
步骤103、SDK客户端确定所述更新指示变量的值不为空,根据存储所述更新文件的地址调用所述更新文件。
这里,当所述更新文件包括热更新代码时,所述更新指示变量为第一更新指示变量,所述SDK客户端确定所述第一更新指示变量的值不为空后,根据存储所述热更新代码的地址到所述存储空间读取并执行所述热更新代码。
当所述更新文件包括热更新资源时,所述更新指示变量为第二更新指示变量,所述SDK客户端确定所述第二更新指示变量的值不为空,确定当前所需资源的当前资源名称,根据第二更新指示变量读取存储的所述资源名称;所述SDK客户端将所述当前资源名称与存储的所述资源名称进行匹配,匹配成功后,确定对应于匹配到的所述资源名称的存储所述热更新资源的地址,根据存储所述热更新资源的地址读取存储的所述热更新资源。
本发明实施例,SDK客户端确定更新指示变量的值不为空,并根据更新指示变量的值、即存储所述更新文件的地址调用所述更新文件,解决现有技术中的热更新方法不适用于SDK客户端的问题,支持SDK客户端的热更新。
本发明实施例提供一种热更新方法,图2为本发明实施例提供的一种热更新方法的实现流程示意图二,所述第一更新指示变量具体为静态变量,所述第二更新指示变量具体为资源加载变量,所述加载器具体为类加载器或资产管理器,所述签名信息具体为消息摘要算法(Message Digest Algorithm,MD5)值,如图2所示,该方法主要包括以下步骤:
步骤201、SDK客户端进行初始化。
需要说明的是,当用户启动APP后,该APP所需的SDK客户端进行初始化,初始化SDK客户端的程序中的基本参数,例如初始化SDK客户端的程序中的变量、逻辑等。
APP运行过程中会需要实现不同的功能,例如,对于微信APP,运行过程中需要实现即时通信、支付等功能,可通过调用不同的功能模块来实现,调用某一功能模块时,便需要相关的SDK客户端配合处理。因此,APP启动后,该APP所需的各SDK客户端便会进行初始化。
步骤202、SDK客户端向服务器发送查询请求,所述查询请求用于请求服务器查询更新文件,所述更新文件包括热更新代码和/或热更新资源。
需要说明的是,当SDK客户端进行初始化后,SDK客户端会向服务器发送查询请求,以请求服务器查询服务器是否有更新文件,其中所述更新文件可以是热更新代码(需要更新的代码)和/或热更新资源(需要更新的资源)打包生成的压缩文件,所述热更新代码包括修改后的可被执行的程序,所述热更新资源包括修改后的可直接展示的信息,如图片、音频、界面布局、字体大小等信息。
步骤203、服务器接收到查询请求,根据查询请求查询是否有更新文件,如果查询到有更新文件,则转入步骤204;如果没有查询到更新文件,结束当前流程。
需要说明的是,当APP的功能出现漏洞或者需要更新时,热更新代码(需要更新的代码)和/或热更新资源(需要更新的资源)会打包形成压缩包,得到更新文件,所述更新文件包括热更新代码和/或热更新资源,更新文件将上传至服务器,服务器将更新文件存储至本地。
这里,当服务器接收到查询请求后,根据查询请求的指示,服务器查询本地是否有对应于SDK客户端的更新文件,也就是查询本地是否有对应于SDK客户端的热更新代码和/或热更新资源,当查询到本地有对应于SDK客户端的更新文件,则说明SDK客户端需要进行热更新,转入步骤204;当查询到本地没有对应于SDK客户端的更新文件,则说明SDK客户端不需要进行热更新,结束当前流程。
步骤204、服务器向SDK客户端发送查询响应,所述查询响应包括存储更新文件的地址、文件版本号以及第一MD5值,所述第一MD5值用于唯一标识更新文件。
需要说明的是,当服务器查询到本地有对应于SDK客户端的更新文件,就会向SDK客户端发送查询响应,说明SDK客户端需要进行更新,所述查询响应包括存储更新文件的地址以及文件版本号,该地址可以为统一资源定位符(URL,Uniform Resource Locator),该文件版本号用于标识更新文件的版本,可使SDK客户端根据文件版本号确定是否需要下载更新文件。
这里,服务器存储更新文件时,还会读取更新文件的内容,并根据更新文件的内容生成第一MD5值,所述第一MD5值用于唯一标识更新文件,即基于第一MD5值就能够区分不同的更新文件。当服务器查询到本地有对应于SDK客户端的更新文件,就会向SDK客户端发送查询响应,所述查询响应不仅包括存储更新文件的地址以及文件版本号,还包括更新文件的第一MD5值。
步骤205、SDK客户端接收查询响应,根据查询响应查询是否有对应于所述文件版本号的更新文件,如果查询到有对应于所述文件版本号的更新文件,则转入步骤209a或209b;如果没有查询到有对应于所述文件版本号的更新文件,则转入步骤206。
这里,当SDK客户端接收到查询响应后,SDK客户端解析查询响应得到该查询响应包括的文件版本号,将查询响应包括的文件版本号与存储于内存的文件版本号进行比对,如果一致,表明本地有所需的更新文件,则转入步骤209a或209b;如果不一致,表明本地没有所需的更新文件,SDK客户端需要从服务器下载更新文件,则转入步骤206。
SDK客户端解析查询响应时还会得到该查询响应包括的第一MD5值,保存第一MD5值,以便后续将第一MD5值与生成的第二MD5值进行比对。
步骤206、SDK客户端根据查询响应从服务器中下载更新文件。
这里,SDK客户端根据查询响应中包括的存储更新文件的地址,从服务器中下载更新文件。
步骤207、SDK客户端根据下载的更新文件生成第二MD5值,所述第二MD5值用于与第一MD5值进行比对。
需要说明的是,当SDK客户端从服务器中下载更新文件后,会解析更新文件,提取更新文件的内容,并根据更新文件的内容生成第二MD5值,其中所述第二MD5值用于与第一MD5值进行比对。
步骤208、SDK客户端将第二MD5值与第一MD5值进行比对,若一致,则存储更新文件的文件版本号,转入步骤209a或209b;若不一致,则丢弃下载的更新文件。
需要说明的是,SDK客户端将生成的第二MD5值与第一MD5值进行比对,若第二MD5值与第一MD5值相同,则说明SDK客户端从服务器下载的更新文件与上传至服务器中的更新文件是相同的,也就是SDK客户端从服务器下载的更新文件是完整的、且更新文件的内容是正确的,将更新文件的文件版本号存储于内存,转入步骤209a或209b;若第二MD5值与第一MD5值不同,则说明SDK客户端从服务器下载的更新文件与上传至服务器中的更新文件是不同的,也就是SDK客户端从服务器下载的更新文件是有缺陷的,或者更新文件内容是错误的,则丢弃下载的更新文件。
步骤209a、SDK客户端调用类加载器(classloader)加载更新文件中的热更新代码至内存。
需要说明的是,类加载器是包括SDK在内的操作系统自带的一种加载器,能够识别热更新代码,其中所述操作系统可以为安卓系统,且classloader的使用逻辑是操作系统默认的使用逻辑。当第二MD5值与第一MD5值比对成功后,SDK客户端调用classloader,classloader对更新文件进行识别,如果在更新文件中识别到热更新代码,加载热更新代码,将热更新代码映射至内存中,待SDK客户端需要执行热更新代码时,便可直接在内存中读取已映射至内存中的热更新代码,从而执行热更新代码;classloader如果未在更新文件中识别到热更新代码,则不存在需要加载的热更新代码,步骤209a-213a便不会执行。
步骤210a、SDK客户端将静态变量的值更改为存储热更新代码的内存地址。
需要说明的是,SDK初始生成时,SDK的类中设置静态变量,将该静态变量的初始值设置为空,在SDK客户端调用classloader加载更新文件中的热更新代码至内存后,说明有需要SDK客户端更新的热更新代码,SDK客户端将静态变量的值更改为存储热更新代码的内存地址,该内存地址用于指示SDK客户端热更新代码在内存中的存储位置。
步骤211a、SDK客户端确定静态变量是否为空,若确定静态变量为空,则转入步骤212a;若确定静态变量不为空,则转入步骤213a。
需要说明的是,APP运行过程中,调用某一功能模块时,与该功能模块相关的SDK客户端、即用于支持该功能模块运行的SDK客户端便需要去读取静态变量,从而根据静态变量确定是否执行热更新代码,具体可以根据静态变量的值确定是否执行热更新代码,当确定静态变量为空,则转入步骤212a;当确定静态变量不为空,则转入步骤213a。
步骤212a、SDK客户端执行原有代码,结束当前流程。
需要说明的是,当SDK客户端确定静态变量为空,说明没有热更新代码需要执行,则SDK客户端继续执行原有代码,结束当前流程。
步骤213a、SDK客户端根据静态变量执行热更新代码。
需要说明的是,当SDK客户端确定静态变量不为空,说明有热更新代码需要执行,则SDK客户端将不再继续执行原有代码,而是根据静态变量的值、也就是存储热更新代码的内存地址,直接至该内存地址读取热更新代码并执行。
以微信APP为例,微信APP运行过程中,需要调用微信钱包这一功能模块时,微信钱包相关的SDK客户端读取静态变量的值,当确定静态变量为空,则继续执行支持微信钱包运行的原有代码;若确定静态变量不为空,则根据静态变量的值指示的内存地址读取支持微信钱包运行的热更新代码并执行。
需要说明的是,步骤209a-213a是SDK客户端调用classloader加载热更新代码,并执行热更新代码的过程。以下步骤209b-214b是SDK客户端调用资产管理器(assetManager)加载热更新资源,并读取热更新资源的过程。如果热更新文件既包括热更新代码、也包括热更新资源,则本实施例中的步骤209a-213a和步骤209b-214b并无明显的先后顺序,也可同时执行。
步骤209b、SDK客户端调用assetManager将更新文件中的热更新资源的资源名称以及存储热更新资源的内存地址加载至内存。
需要说明的是,assetManager是包括SDK在内的操作系统自带的一种资产管理器,能够识别热更新资源,且assetManager的使用逻辑是操作系统默认的使用逻辑。当第二MD5值与第一MD5值比对成功后,SDK客户端调用assetManager,assetManager对更新文件进行识别,如果在更新文件中识别到热更新资源,将热更新资源加载至内存,并将资源名称以及存储热更新资源的内存地址加载至内存中。如果需更新的热更新资源为多个时,资源名称以及存储热更新资源的内存地址可为列表的形式。待SDK客户端需要读取热更新资源时,便可直接基于映射至内存中的资源名称和存储热更新资源的内存地址读取热更新资源;assetManager如果未在更新文件中识别到热更新资源,则不存在需要加载的热更新资源,步骤209b-214b便不会执行。
步骤210b、SDK客户端将资源加载变量的值更改为内存地址,该内存地址用于标识内存中存储资源名称和存储热更新资源的内存地址的存储位置。
需要说明的是,SDK初始生成时,SDK的类中设置资源加载变量,将该资源加载变量的初始值设置为空,在SDK客户端调用assetManager将资源名称和存储热更新资源的内存地址加载至内存后,说明有需要SDK客户端更新的热更新资源,SDK客户端将资源加载变量的值更改为内存地址,该内存地址用于指示SDK客户端资源名称和存储热更新资源的内存地址在内存中的存储位置。
步骤211b、SDK客户端确定资源加载变量是否为空,若确定资源加载变量为空,则转入步骤212b;若确定资源加载变量不为空,则转入步骤213b。
需要说明的是,APP运行过程中,调用某一功能模块时,与该功能模块相关的SDK客户端、即用于支持该功能模块运行的SDK客户端便需要去读取资源加载变量,从而根据资源加载变量确定是否读取热更新资源,具体可以根据资源加载变量的值确定是否读取热更新资源,当确定资源加载变量为空,则转入步骤212b;当确定资源加载变量不为空,则转入步骤213b。
步骤212b、SDK客户端读取原有资源,结束当前流程。
需要说明的是,当SDK客户端确定资源加载变量为空,说明没有热更新资源需要读取,则SDK客户端继续读取原有资源,结束当前流程。
步骤213b、SDK客户端确定功能模块当前所需资源的当前资源名称,根据资源加载变量读取内存中存储的资源名称。
需要说明的是,当SDK客户端确定资源加载变量不为空,说明有热更新资源需要读取,则SDK客户端将不再继续读取原有资源,而是会根据功能模块的运行情况确定功能模块当前所需资源的当前资源名称,还会根据资源加载变量的值、也就是存储资源名称和存储热更新资源的内存地址读取内存中存储的资源名称。
步骤214b、SDK客户端将当前资源名称与内存中存储的资源名称进行匹配,匹配成功后,确定对应于匹配到的资源名称的存储热更新资源的内存地址,根据该内存地址读取内存中存储的热更新资源。
这里,SDK客户端将当前资源名称与内存中存储的资源名称匹配成功后,根据匹配到的资源名称确定该资源名称对应的存储热更新资源的内存地址,根据该内存地址读取内存中存储的热更新资源。如果SDK客户端当前资源名称与内存中存储的资源名称未匹配成功,则表明功能模块当前所需的资源没有更新,按照当前资源名称读取对应的原有资源即可。
以微信APP为例,微信APP运行过程中,需要调用微信钱包这一功能模块时,微信钱包相关的SDK客户端读取资源加载变量的值,当确定资源加载变量为空,则继续读取支持微信钱包运行的原有资源;若确定资源加载变量不为空,则确定微信钱包当前所需资源的当前资源名称,根据资源加载变量的值、即内存地址读取内存中存储的资源名称,SDK客户端将当前资源名称与内存中存储的资源名称进行匹配,如果匹配成功,则根据匹配到的资源名称确定对应的存储热更新资源的内存地址,根据该内存地址读取内存中存储的热更新资源,也就是支持微信钱包运行的更新后的资源,例如更新后的微信钱包的图片;如果SDK客户端当前资源名称与内存中存储的资源名称未匹配成功,则表明微信钱包当前所需的资源没有更新,按照当前资源名称读取对应的原有资源即可。
本发明实施例,SDK客户端确定更新指示变量的值不为空,并根据更新指示变量的值、即存储所述更新文件的地址调用所述更新文件,解决现有技术中的热更新方法不适用于SDK客户端的问题,支持SDK客户端的热更新。
基于上述实施例的同一发明构思,本发明实施例提供一种热更新装置,图3为本发明实施例提供的一种热更新装置的结构示意图,如图3所示,所述热更新装置300包括:
第一调用单元301,用于SDK客户端调用加载器加载更新文件至存储空间;
更改单元302,用于所述SDK客户端将更新指示变量的值更改为所述存储空间中存储所述更新文件的地址;
第二调用单元303,用于所述SDK客户端确定所述更新指示变量的值不为空,根据存储所述更新文件的地址调用所述更新文件。
需要说明的是,所述更新文件包括热更新代码,所述更新指示变量为第一更新指示变量;第二调用单元303还用于所述SDK客户端确定所述第一更新指示变量的值不为空,根据存储所述热更新代码的地址到所述存储空间读取并执行所述热更新代码。
需要说明的是,所述更新文件包括热更新资源;所述第一调用单元301用于SDK客户端调用加载器加载所述热更新资源、所述热更新资源的资源名称和存储所述热更新资源的地址至存储空间。
需要说明的是,所述更新指示变量为第二更新指示变量;所述第二调用单元303用于所述SDK客户端确定所述第二更新指示变量的值不为空,确定当前所需资源的当前资源名称,根据第二更新指示变量读取存储的所述资源名称;所述SDK客户端将所述当前资源名称与存储的所述资源名称进行匹配,匹配成功后,确定对应于匹配到的所述资源名称的存储所述热更新资源的地址,根据存储所述热更新资源的地址读取存储的所述热更新资源。
需要说明的是,所述热更新装置300还可以包括:
发送单元304,用于发送SDK客户端向服务器发送查询请求,所述查询请求用于请求所述服务器查询更新文件;
接收单元305,用于所述SDK客户端接收所述服务器发送的查询响应;
下载单元306,用于所述SDK客户端根据所述查询响应从所述服务器中下载所述更新文件。
需要说明的是,所述查询响应包括文件版本号,所述文件版本号用于标识所述更新文件的版本;所述下载单元306用于所述SDK客户端根据所述查询响应没有查询到有对应于所述文件版本号的更新文件,根据所述查询响应从所述服务器中下载所述更新文件。
需要说明的是,所述查询响应还包括第一签名信息,所述第一签名信息用于唯一标识所述更新文件;所述热更新装置300还可以包括:
处理单元307,用于所述SDK客户端根据所述更新文件生成第二签名信息,所述第二签名信息用于与所述第一签名信息进行比对;所述SDK客户端将所述第二签名信息与所述第一签名信息进行比对,若比对一致,存储所述更新文件的文件版本号。
在本发明实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本发明实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
因此,本发明实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时实现上述实施例所述的步骤。
参见图4,示出了本发明实施例提供的一种热更新装置400的具体硬件结构,包括:网络接口401、存储器502和处理器403;各个组件通过总线系统404耦合在一起。可理解,总线系统404用于实现这些组件之间的连接通信。总线系统404除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图4中将各种总线都标为总线系统404。其中,
其中,所述网络接口401,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
存储器402,用于存储能够在处理器403上运行的计算机程序;
处理器403,用于在运行所述计算机程序时,执行:
SDK客户端调用加载器加载更新文件至存储空间;
所述SDK客户端将更新指示变量的值更改为所述存储空间中存储所述更新文件的地址;
所述SDK客户端确定所述更新指示变量的值不为空,根据存储所述更新文件的地址调用所述更新文件。
所述更新文件包括热更新代码,所述更新指示变量为第一更新指示变量,所述处理器403还用于运行所述计算机程序时,执行:
所述SDK客户端确定所述第一更新指示变量的值不为空,根据存储所述热更新代码的地址到所述存储空间读取并执行所述热更新代码。
所述更新文件包括热更新资源,所述处理器403还用于运行所述计算机程序时,执行:
SDK客户端调用加载器加载所述热更新资源、所述热更新资源的资源名称和存储所述热更新资源的地址至存储空间。
所述更新指示变量为第二更新指示变量所述处理器403还用于运行所述计算机程序时,执行:
所述SDK客户端确定所述第二更新指示变量的值不为空,确定当前所需资源的当前资源名称,根据第二更新指示变量读取存储的所述资源名称;
所述SDK客户端将所述当前资源名称与存储的所述资源名称进行匹配,匹配成功后,确定对应于匹配到的所述资源名称的存储所述热更新资源的地址,根据存储所述热更新资源的地址读取存储的所述热更新资源。
所述处理器403还用于运行所述计算机程序时,执行:
在所述SDK客户端调用加载器加载更新文件至存储空间之前,所述方法还包括:
SDK客户端向服务器发送查询请求,所述查询请求用于请求所述服务器查询更新文件;
所述SDK客户端接收所述服务器发送的查询响应;
所述SDK客户端根据所述查询响应从所述服务器中下载所述更新文件。
所述查询响应包括文件版本号,所述文件版本号用于标识所述更新文件的版本,所述处理器403还用于运行所述计算机程序时,执行:
所述SDK客户端根据所述查询响应没有查询到有对应于所述文件版本号的更新文件,根据所述查询响应从所述服务器中下载所述更新文件。
所述查询响应还包括签名信息,所述第一签名信息用于唯一标识所述更新文件,所述处理器403还用于运行所述计算机程序时,执行:
所述SDK客户端根据所述更新文件生成第二签名信息,所述第二签名信息用于与所述第一签名信息进行比对;
所述SDK客户端将所述第二签名信息与所述第一签名信息进行比对,若比对一致,存储所述更新文件的文件版本号。
可以理解,本发明实施例中的存储器402可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(RandomAccess Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Sync Link DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DRRAM)。本文描述的方法的存储器402旨在包括但不限于这些和任意其它适合类型的存储器。
而处理器403可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器403中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器403可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器402,处理器403读取存储器402中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的模块(例如过程、函数等)来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。以上所描述的终端实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
Claims (10)
1.一种热更新方法,其特征在于,所述方法包括:
软件开发工具包SDK客户端调用加载器加载更新文件至存储空间;
所述SDK客户端将更新指示变量的值更改为所述存储空间中存储所述更新文件的地址;
所述SDK客户端确定所述更新指示变量的值不为空,根据存储所述更新文件的地址调用所述更新文件。
2.根据权利要求1所述的方法,其特征在于,所述更新文件包括热更新代码,所述更新指示变量为第一更新指示变量;
所述SDK客户端确定所述更新指示变量的值不为空,根据存储所述更新文件的地址调用所述更新文件,包括:
所述SDK客户端确定所述第一更新指示变量的值不为空,根据存储所述热更新代码的地址到所述存储空间读取并执行所述热更新代码。
3.根据权利要求1所述的方法,其特征在于,所述更新文件包括热更新资源;
所述SDK客户端调用加载器加载更新文件至存储空间,包括:
SDK客户端调用加载器加载所述热更新资源、所述热更新资源的资源名称和存储所述热更新资源的地址至存储空间。
4.根据权利要求3所述的方法,其特征在于,所述更新指示变量为第二更新指示变量;
所述SDK客户端确定所述更新指示变量的值不为空,根据存储所述更新文件的地址调用所述更新文件,包括:
所述SDK客户端确定所述第二更新指示变量的值不为空,确定当前所需资源的当前资源名称,根据第二更新指示变量读取存储的所述资源名称;
所述SDK客户端将所述当前资源名称与存储的所述资源名称进行匹配,匹配成功后,确定对应于匹配到的所述资源名称的存储所述热更新资源的地址,根据存储所述热更新资源的地址读取存储的所述热更新资源。
5.根据权利要求1所述的方法,其特征在于,在所述SDK客户端调用加载器加载更新文件至存储空间之前,所述方法还包括:
SDK客户端向服务器发送查询请求,所述查询请求用于请求所述服务器查询更新文件;
所述SDK客户端接收所述服务器发送的查询响应;
所述SDK客户端根据所述查询响应从所述服务器中下载所述更新文件。
6.根据权利要求5所述的方法,其特征在于,所述查询响应包括文件版本号,所述文件版本号用于标识所述更新文件的版本;
所述SDK客户端根据所述查询响应从所述服务器中下载所述更新文件,包括:
所述SDK客户端根据所述查询响应没有查询到有对应于所述文件版本号的更新文件,根据所述查询响应从所述服务器中下载所述更新文件。
7.根据权利要求6所述的方法,其特征在于,所述查询响应还包括第一签名信息,所述第一签名信息用于唯一标识所述更新文件;
在所述根据所述查询响应从所述服务器中下载所述更新文件之后,所述方法还包括:
所述SDK客户端根据所述更新文件生成第二签名信息,所述第二签名信息用于与所述第一签名信息进行比对;
所述SDK客户端将所述第二签名信息与所述第一签名信息进行比对,若比对一致,存储所述更新文件的文件版本号。
8.一种热更新装置,其特征在于,所述装置包括:
第一调用单元,用于SDK客户端调用加载器加载更新文件至存储空间;
更改装置单元,用于所述SDK客户端将更新指示变量的值更改为所述存储空间中存储所述更新文件的地址;
第二调用单元,用于所述SDK客户端确定所述更新指示变量的值不为空,根据存储所述更新文件的地址调用所述更新文件。
9.一种热更新装置,其特征在于,所述装置包括网络接口、存储器和处理器;其中,
所述网络接口,配置为实现组件之间的连接通信;
所述存储器,配置为存储能够在所述处理器上运行的计算机程序;
所述处理器,配置为在运行所述计算机程序时,执行权利要求1至7任一项所述方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,当所述计算机程序被至少一个处理器执行时实现如权利要求1至7中任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811497236.5A CN109710287B (zh) | 2018-12-07 | 2018-12-07 | 一种热更新方法、装置及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811497236.5A CN109710287B (zh) | 2018-12-07 | 2018-12-07 | 一种热更新方法、装置及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109710287A true CN109710287A (zh) | 2019-05-03 |
CN109710287B CN109710287B (zh) | 2022-04-29 |
Family
ID=66254077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811497236.5A Active CN109710287B (zh) | 2018-12-07 | 2018-12-07 | 一种热更新方法、装置及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109710287B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078259A (zh) * | 2019-12-20 | 2020-04-28 | 上海米哈游天命科技有限公司 | 一种音频打包方法、装置、电子设备及存储介质 |
CN112015444A (zh) * | 2019-05-31 | 2020-12-01 | 北京新能源汽车股份有限公司 | 一种变量地址更新方法、装置及汽车 |
CN112445510A (zh) * | 2020-11-30 | 2021-03-05 | 中国人寿保险股份有限公司 | 客户端应用功能热更新文件的灰度发布方法及相关设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103353844A (zh) * | 2013-06-25 | 2013-10-16 | 亿赞普(北京)科技有限公司 | 一种软件开发工具包升级方法和系统 |
CN103530420A (zh) * | 2013-10-30 | 2014-01-22 | 北京奇虎科技有限公司 | 数据文件的动态更新方法及装置 |
CN103984582A (zh) * | 2014-06-04 | 2014-08-13 | 网易(杭州)网络有限公司 | 一种热更新方法和装置 |
CN105913233A (zh) * | 2016-04-11 | 2016-08-31 | 苏州云清伟业网络科技有限公司 | 适用于应用客户端支付的sdk处理方法 |
CN106059844A (zh) * | 2016-08-17 | 2016-10-26 | 洑云龙 | 一种客户端热更新方法 |
CN107038039A (zh) * | 2016-02-04 | 2017-08-11 | 腾讯科技(深圳)有限公司 | 数据更新方法及装置 |
CN107122200A (zh) * | 2016-02-25 | 2017-09-01 | 博雅网络游戏开发(深圳)有限公司 | 加载插件sdk的方法、系统及客户端 |
US20170344361A1 (en) * | 2016-05-24 | 2017-11-30 | Baidu Online Network Technology (Beijing) Co., Ltd | Kernel repair method and apparatus |
CN107729042A (zh) * | 2017-10-16 | 2018-02-23 | 东软集团股份有限公司 | 移动应用升级方法及装置、存储介质、电子设备 |
-
2018
- 2018-12-07 CN CN201811497236.5A patent/CN109710287B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103353844A (zh) * | 2013-06-25 | 2013-10-16 | 亿赞普(北京)科技有限公司 | 一种软件开发工具包升级方法和系统 |
CN103530420A (zh) * | 2013-10-30 | 2014-01-22 | 北京奇虎科技有限公司 | 数据文件的动态更新方法及装置 |
CN103984582A (zh) * | 2014-06-04 | 2014-08-13 | 网易(杭州)网络有限公司 | 一种热更新方法和装置 |
CN107038039A (zh) * | 2016-02-04 | 2017-08-11 | 腾讯科技(深圳)有限公司 | 数据更新方法及装置 |
CN107122200A (zh) * | 2016-02-25 | 2017-09-01 | 博雅网络游戏开发(深圳)有限公司 | 加载插件sdk的方法、系统及客户端 |
CN105913233A (zh) * | 2016-04-11 | 2016-08-31 | 苏州云清伟业网络科技有限公司 | 适用于应用客户端支付的sdk处理方法 |
US20170344361A1 (en) * | 2016-05-24 | 2017-11-30 | Baidu Online Network Technology (Beijing) Co., Ltd | Kernel repair method and apparatus |
CN106059844A (zh) * | 2016-08-17 | 2016-10-26 | 洑云龙 | 一种客户端热更新方法 |
CN107729042A (zh) * | 2017-10-16 | 2018-02-23 | 东软集团股份有限公司 | 移动应用升级方法及装置、存储介质、电子设备 |
Non-Patent Citations (2)
Title |
---|
SEAN GUARINO 等: ""Dynamic application and model updating service"", 《2010 INTERNATIONAL SYMPOSIUM ON COLLABORATIVE TECHNOLOGIES AND SYSTEMS》 * |
任绚兮: ""基于Eclipse SDK平台下插件的研究"", 《北京信息科技大学学报》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112015444A (zh) * | 2019-05-31 | 2020-12-01 | 北京新能源汽车股份有限公司 | 一种变量地址更新方法、装置及汽车 |
CN112015444B (zh) * | 2019-05-31 | 2024-06-04 | 北京新能源汽车股份有限公司 | 一种变量地址更新方法、装置及汽车 |
CN111078259A (zh) * | 2019-12-20 | 2020-04-28 | 上海米哈游天命科技有限公司 | 一种音频打包方法、装置、电子设备及存储介质 |
CN112445510A (zh) * | 2020-11-30 | 2021-03-05 | 中国人寿保险股份有限公司 | 客户端应用功能热更新文件的灰度发布方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109710287B (zh) | 2022-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10713034B2 (en) | Updating web resources | |
CN105867947B (zh) | 预置应用程序升级后的数据处理方法及装置 | |
US8719810B2 (en) | Program upgrade system and method for over the air-capable mobile terminal | |
EP3441876B1 (en) | Patch upgrade-based file processing method and device, terminal, and storage medium | |
US9454356B2 (en) | Method of and terminal for updating library file in system application | |
CN108847950B (zh) | 电子装置、云系统软件自动部署方法及存储介质 | |
US20200264863A1 (en) | Hot update method, operating system, terminal device, and storage medium | |
CN103647816A (zh) | 一种应用软件升级的方法及装置 | |
CN107526605B (zh) | 实现应用程序加载服务组件的方法和装置 | |
CN102541596A (zh) | 一种操作系统升级方法及装置 | |
CN111796853A (zh) | 固件升级方法、系统、设备及计算机存储介质 | |
CN109710287B (zh) | 一种热更新方法、装置及计算机存储介质 | |
CN112486552A (zh) | 服务器热更新方法、装置、设备和存储介质 | |
CN112783542A (zh) | 软件升级方法、装置及可读存储介质 | |
CN106293790B (zh) | 基于Firefox操作系统的应用程序升级方法和装置 | |
CN113157337A (zh) | 应用程序启动方法、装置、终端设备及存储介质 | |
CN113821226A (zh) | 一种onie系统安装方法、装置、设备及介质 | |
CN113608800A (zh) | 项目启动方法、装置、电子设备及存储介质 | |
CN103530155A (zh) | 一种用于应用程序的安装方法及装置 | |
CN113641389B (zh) | 基于OpenCPU的软件升级方法、装置及设备 | |
US20060230190A1 (en) | Method and apparatus for executing application in system having NAND flash memory | |
CN106919405B (zh) | 一种客户端的初始化方法及装置 | |
CN112860300A (zh) | 分布式sdk热更新处理方法、应用服务器集群 | |
CN110825406A (zh) | 一种软件升级的方法及相关设备 | |
CN111142913A (zh) | 面向iOS系统应用程序的热更新方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |