应用程序的热修复方法、装置、存储介质及计算机设备与流程

文档序号:32424650发布日期:2022-12-02 23:38阅读:31来源:国知局
应用程序的热修复方法、装置、存储介质及计算机设备与流程

1.本发明属于互联网技术领域,尤其涉及一种应用程序的热修复方法、装置、存储介质及计算机设备。


背景技术:

2.应用程序app在释放一个版本之后,经常会遇到由于用户投诉或者严重缺陷(bug)而需要对app进行修复的情况。现有的修复过程包括:1.开发者修改现有版本的app,编译、打包生成升级包,测试以及发布新版本的升级包;2.用户设备提示用户下载升级包,并根据用户操作下载升级包以及安装、覆盖现有版本。有时候开发者仅仅修改了一行代码,也需要对整个app进行编译打包,以及进行发布宣传和提示操作,开发者侧的修复成本高;而在用户侧,则需要用户手动下载升级包、手动进行安装,过程繁琐,并且安装时需要中断用户的当前业务。


技术实现要素:

3.本发明实施例提供一种应用程序的热修复方法,旨在解决提升应用程序的修复便利性和智能性,且应用程序修复过程中无需中断应用程序的业务,提升用户体验的问题。
4.本发明实施例是这样实现的,一种应用程序的热修复方法,所述方法包括:
5.响应于应用程序的启动信号,在所述应用程序的私有目录下读取第一热修复动态链接库版本;
6.判断所述第一热修复动态链接库版本是否高于所述应用程序的当前动态链接库版本;
7.若所述第一热修复动态链接库版本高于所述当前动态链接库版本,则将所述私有目录下的第一热修复动态链接库作为所述应用程序的动态链接库。
8.更进一步地,所述方法还包括:
9.响应于应用程序的启动信号,调用所述应用程序的热修复接口向应用程序服务器发送热修复动态链接库获取请求;
10.接收所述应用程序服务器返回的第二热修复动态链接库信息,其中,所述热修复动态链接库信息包括第二热修复动态链接库版本以及第二热修复动态链接库下载地址;
11.依据所述第二热修复动态链接库下载地址,下载第二热修复动态链接库到所述私有目录下,并将所述第二热修复动态链接库版本存储在本地数据库中。
12.更进一步地,所述调用所述应用程序的热修复接口向应用程序服务器发送热修复动态链接库获取请求,包括:
13.调用所述应用程序的热修复接口读取所述本地数据库中的本地动态链接库版本,依据所述本地动态链接库版本以及应用程序版本,生成所述热修复动态链接库获取请求,并向所述应用程序服务器发送所述热修复动态链接库获取请求,以使所述应用程序服务器依据所述本地动态链接库版本反馈对应的所述第二热修复动态链接库信息。
14.更进一步地,所述所述应用程序服务器依据所述本地动态链接库版本反馈对应的所述第二热修复动态链接库信息,包括:
15.所述应用程序服务器依据所述本地动态链接库版本以及所述应用程序版本判断是否存在待更新动态链接库版本,并依据判断结果生成所述第二热修复动态链接库信息,其中,所述第二热修复动态链接库信息包括动态链接库修复标识、第二热修复动态链接库下载地址以及第二热修复动态链接库版本。
16.更进一步地,所述接收所述应用程序服务器返回的第二热修复动态链接库信息之后,所述方法还包括:
17.解析所述第二热修复动态链接库信息,获得动态链接库修复标识;
18.若所述动态链接库修复标识为需要修复标识,则执行所述依据所述第二热修复动态链接库下载地址,下载第二热修复动态链接库。
19.更进一步地,所述热修复动态链接库获取请求还包括所述热修复接口的接口钥匙;
20.其中,所述应用程序服务器在验证所述接口钥匙有效的情况下,执行所述依据本地动态链接库版本以及所述应用程序版本判断是否存在待更新动态链接库版本,并依据判断结果生成携带有鉴权成功结果的所述第二热修复动态链接库信息;
21.所述应用程序服务器在验证所述接口钥匙无效的情况下,生成携带有鉴权失败结果的第二热修复动态链接库信息。
22.更进一步地,所述方法还包括:
23.若所述应用程序的私有目录下不包含第一热修复动态链接库,或者若所述第一热修复动态链接库版本不高于所述当前动态链接库版本,则保持所述应用程序的当前动态链接库不变。
24.本发明实施例还提供一种应用程序的热修复装置,所述装置包括:
25.读取模块,用于响应于应用程序的启动信号,在所述应用程序的私有目录下读取第一热修复动态链接库版本;
26.判断模块,用于判断所述第一热修复动态链接库版本是否高于所述应用程序的当前动态链接库版本;
27.更新模块,用于若所述第一热修复动态链接库版本高于所述当前动态链接库版本,则将所述私有目录下的第一热修复动态链接库作为所述应用程序的动态链接库。
28.更进一步地,所述装置还包括:
29.发送模块,用于响应于应用程序的启动信号,调用所述应用程序的热修复接口向应用程序服务器发送热修复动态链接库获取请求;
30.接收模块,用于接收所述应用程序服务器返回的第二热修复动态链接库信息,其中,所述热修复动态链接库信息包括第二热修复动态链接库版本以及第二热修复动态链接库下载地址;
31.下载模块,用于依据所述第二热修复动态链接库下载地址,下载第二热修复动态链接库到所述私有目录下,并将所述第二热修复动态链接库版本存储在本地数据库中。
32.更进一步地,所述发送模块,还用于:
33.调用所述应用程序的热修复接口读取所述本地数据库中的本地动态链接库版本,
依据所述本地动态链接库版本以及应用程序版本,生成所述热修复动态链接库获取请求,并向所述应用程序服务器发送所述热修复动态链接库获取请求,以使所述应用程序服务器依据所述本地动态链接库版本反馈对应的所述第二热修复动态链接库信息。
34.更进一步地,所述应用程序服务器依据所述本地动态链接库版本以及所述应用程序版本判断是否存在待更新动态链接库版本,并依据判断结果生成所述第二热修复动态链接库信息,其中,所述第二热修复动态链接库信息包括动态链接库修复标识、第二热修复动态链接库下载地址以及第二热修复动态链接库版本。
35.更进一步地,所述装置还包括:
36.解析模块,用于所述接收所述应用程序服务器返回的第二热修复动态链接库信息之后,解析所述第二热修复动态链接库信息,获得动态链接库修复标识;
37.所述下载模块,还用于若所述动态链接库修复标识为需要修复标识,则执行所述依据所述第二热修复动态链接库下载地址,下载第二热修复动态链接库。
38.更进一步地,所述热修复动态链接库获取请求还包括所述热修复接口的接口钥匙;
39.其中,所述应用程序服务器在验证所述接口钥匙有效的情况下,执行所述依据本地动态链接库版本以及所述应用程序版本判断是否存在待更新动态链接库版本,并依据判断结果生成携带有鉴权成功结果的所述第二热修复动态链接库信息;
40.所述应用程序服务器在验证所述接口钥匙无效的情况下,生成携带有鉴权失败结果的第二热修复动态链接库信息。
41.更进一步地,所述更新模块,还用于若所述应用程序的私有目录下不包含第一热修复动态链接库,或者若所述第一热修复动态链接库版本不高于所述当前动态链接库版本,则保持所述应用程序的当前动态链接库不变。
42.本发明实施例还提供一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述应用程序的热修复方法。
43.本发明实施例还提供了一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述应用程序的热修复方法。
44.本发明实施例相比于现有技术中动辄修改应用程序代码且需要中断应用程序使用的应用程序修复方式,通过应用程序的私有目录存储应用程序最新的热修复动态链接库版本,在应用程序启动时依据私有目录下存储的动态链接库版本判断当前动态链接库版本是否为最新,以便对应用程序进行热修复,减少了应用程序的修改量,提升了应用程序的修复便利性和智能性,且无需中断应用程序的业务,提升了用户体验。
附图说明
45.图1示出了本技术实施例提供的一种应用程序的热修复方法的流程示意图;
46.图2示出了本技术实施例提供的另一种应用程序的热修复方法的流程示意图;
47.图3示出了本技术实施例提供的一种应用程序的热修复装置的结构示意图。
具体实施方式
48.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
49.实施例一
50.本发明实施例相比于现有技术中动辄修改应用程序代码且需要中断应用程序使用的应用程序修复方式,通过应用程序的私有目录存储应用程序最新的热修复动态链接库版本,在应用程序启动时依据私有目录下存储的动态链接库版本判断当前动态链接库版本是否为最新,以便对应用程序进行热修复,减少了应用程序的修改量,提升了应用程序的修复便利性和智能性,且无需中断应用程序的业务,提升了用户体验。
51.在本实施例中提供了一种应用程序的热修复方法,如图1所示,该方法包括:
52.步骤101,响应于应用程序的启动信号,在所述应用程序的私有目录下读取第一热修复动态链接库版本;
53.步骤102,判断所述第一热修复动态链接库版本是否高于所述应用程序的当前动态链接库版本;
54.步骤103,若所述第一热修复动态链接库版本高于所述当前动态链接库版本,则将所述私有目录下的第一热修复动态链接库作为所述应用程序的动态链接库。
55.本发明实施例应用于客户端,例如智能手机,用于实现对客户端中安装的应用程序app进行热更新。当用户启动应用程序时,首先,在应用程序的私有目录(私有目录是指仅某个应用自己可管理访问的文件目录,即该目录归属于该应用。)下读取预先在该私有目录下存储的热修复动态链接库的版本,即第一热修复动态链接库版本,其中,私有目录用于存储应用程序app对应的待热更新的动态链接库;其次,比较私有目录下的第一热修复动态链接库版本与app当前使用的动态链接库的版本是否一致;最后,如果比较结果为第一热修复动态链接库版本高于app的当前动态链接库版本(即当前使用的动态链接库的版本),例如第一热修复动态链接库版本为2.0版本,当前动态链接库版本为1.0版本,那么在用户允许进行热修复的情况下,调用私有目录下的第一热修复动态链接库替换app的当前动态链接库,将第一热修复动态链接库作为该app应使用的动态链接库,以实现对应用程序app的热更新。
56.通过应用本实施例的技术方案,通过私有目录记录应用程序应更新的第一热修复动态链接库,在应用程序启动时,通过比较私有目录下的第一热修复动态链接库版本与应用程序的当前动态链接库版本,从而在确定第一热修复动态链接库版本高于当前动态链接库版本的情况下,将应用程序的当前动态链接库替换为第一热修复动态链接库,实现对应用程序的热修复。本发明实施例相比于现有技术中动辄修改应用程序代码且需要中断应用程序使用的应用程序修复方式,通过应用程序的私有目录存储应用程序最新的热修复动态链接库版本,在应用程序启动时依据私有目录下存储的动态链接库版本判断当前动态链接库版本是否为最新,以便对应用程序进行热修复,减少了应用程序的修改量,提升了应用程序的修复便利性和智能性,且无需中断应用程序的业务,提升了用户体验。
57.在本发明实施例中,可选地,若所述应用程序的私有目录下不包含第一热修复动态链接库,或者若所述第一热修复动态链接库版本不高于所述当前动态链接库版本,则保
持所述应用程序的当前动态链接库不变。
58.在上述实施例中,如果应用程序的私有目录下不包含热修复动态链接库,例如首次安装应用程序后第一次启动或者卸载应用程序重新安装后第一次启动时,私有目录下不包含热修复动态链接库,这时保持应用程序的当前动态链接库不变。另外,如果第一热修复动态链接库版本不高于当前动态链接库版本,说明应用程序当前使用的动态链接库已为最新,无需进行修复,这时也保持应用程序的当前动态链接库不变。
59.实施例二
60.进一步的,本发明还提供了另一种应用程序的热修复方法,该方法包括:
61.步骤201,响应于应用程序的启动信号,调用所述应用程序的热修复接口向应用程序服务器发送热修复动态链接库获取请求。
62.在本实施例中,如图2所示,应用程序每次启动时,还可以调用应用程序的热修复接口向应用程序服务器发送对最新的热修复动态链接库的获取请求,以便及时获取最新热修复动态链接库,及时进行热修复。
63.可选地,步骤201具体包括:响应于应用程序的启动信号,调用所述应用程序的热修复接口读取所述本地数据库中的本地动态链接库版本,依据所述本地动态链接库版本以及应用程序版本,生成所述热修复动态链接库获取请求,并向所述应用程序服务器发送所述热修复动态链接库获取请求,以使所述应用程序服务器依据所述本地动态链接库版本反馈对应的所述第二热修复动态链接库信息。
64.在该实施例中,在应用程序每次启动时,调用热修复接口在应用程序的本地数据库中读取本地动态链接库版本,其中,客户端每次获取到热修复动态链接库时都先将获取的热修复动态链接库存储在本地数据库中,热修复接口可以从本地数据库中读取其中存储的本地动态链接库版本,进而生成携带有本地动态链接库版本以及应用程序版本的热修复动态链接库获取请求,并发送到应用程序服务器。应用程序服务器接收到该请求后,依据应用程序版本查询该应用程序的最新的热修复动态链接库,从而结合请求中携带的本地动态链接库版本判断应用程序当前是否需要进行热修复,并根据判断结果向客户端反馈第二热修复动态链接库信息。
65.在上述实施例中,可选地,所述应用程序服务器依据所述本地动态链接库版本以及所述应用程序版本判断是否存在待更新动态链接库版本,并依据判断结果生成所述第二热修复动态链接库信息,其中,所述第二热修复动态链接库信息包括动态链接库修复标识、第二热修复动态链接库下载地址以及第二热修复动态链接库版本。
66.在该实施例中,应用程序服务器向客户端反馈的第二热修复动态链接库信息以预定格式发送,以便客户端能够识别出预定格式的第二热修复动态链接库信息指示的内容。其中,第二热修复动态链接库信息包括动态链接库修复标识,用于指示应用程序当前是否需要进行动态链接库的修复,例如用修复标识“1”表示需要修复,用修复标识“0”表示不需要修复,该信息还包括第二热修复动态链接库下载地址和第二热修复动态链接库版本,在客户端内的应用程序不需要进行修复时,该信息中的第二热修复动态链接库下在地址和第二热修复动态链接库版本为空值。
67.在本发明实施例中,为提升应用程序安全性,避免非法获取修复数据,可选地,所述热修复动态链接库获取请求还包括所述热修复接口的接口钥匙;所述应用程序服务器在
验证所述接口钥匙有效的情况下,执行所述依据本地动态链接库版本以及所述应用程序版本判断是否存在待更新动态链接库版本,并依据判断结果生成携带有鉴权成功结果的所述第二热修复动态链接库信息;所述应用程序服务器在验证所述接口钥匙无效的情况下,生成携带有鉴权失败结果的第二热修复动态链接库信息。
68.在上述实施例中,客户端向应用程序服务器发送的热修复动态链接库获取请求还可以携带有热修复接口的接口钥匙,该接口钥匙在用户的授权下生成,例如用户授权的情况下,客户端和服务器按照相同的算法同步生成相同的接口钥匙。客户端向应用程序服务器发送的热修复动态链接库获取请求也可以以预定格式发送,例如该获取请求的格式可以为:应用程序版本号_本地热修复动态链接库版本号_接口钥匙。
69.应用程序服务器接收到热修复动态链接库获取请求后,先对接口钥匙进行鉴权,在鉴权成功的情况下进行下一步的判断,判断是否存在待更新动态链接库版本以及依据判断结果发送携带有鉴权成功结果的第二热修复动态链接库信息,而在鉴权失败的情况下直接向客户端反馈携带有鉴权失败结果的第二热修复动态链接库信息。应用程序服务器向客户端反馈的第二热修复动态链接库信息的格式可以为:调用结果(100表示鉴权成功,104表示鉴权失败)_动态链接库修复标识(1表示有热修复版本,0表示无热修复版本)_第二热修复动态链接库下载地址_第二热修复动态链接库版本号。
70.另外,下载地址中的第二热修复动态链接库文件,可以按以下格式命名,热修复内容前缀(例如lib表示动态链接库)_应用程序名称_编程语言_动态链接库版本号_动态链接库版本日期。以便客户端进行文件解析和记录。
71.步骤202,接收所述应用程序服务器返回的第二热修复动态链接库信息,其中,所述热修复动态链接库信息包括第二热修复动态链接库版本以及第二热修复动态链接库下载地址;
72.步骤203,解析所述第二热修复动态链接库信息,获得动态链接库修复标识;
73.步骤204,若所述动态链接库修复标识为需要修复标识,依据所述第二热修复动态链接库下载地址,下载第二热修复动态链接库到所述私有目录下,并将所述第二热修复动态链接库版本存储在本地数据库中。
74.在上述实施例中,客户端接收到第二热修复动态链接库信息后,进行信息解析,通过解析获得的动态链接库修复标识判断应用程序是否需要热修复,如果需要进行热修复,那么进一步依据解析获得的第二热修复动态链接库下载地址,将该地址下的第二热修复动态链接库下载到应用程序的私有目录下,并将第二热修复动态链接库版本记录在本地数据库中,保存在私有目录下有一个好处就是不需要用户开启权限,从而避免用户繁琐的授权操作即可有效的对应用程序进行热修复。进一步下载完第二热修复动态链接库后,将应用程序使用的动态链接库替换为第二热修复动态链接库,以实现热修复。
75.实施例三
76.进一步的,作为图1方法的具体实现,本技术实施例提供了一种应用程序的热修复装置,如图3所示,该装置包括:
77.读取模块,用于响应于应用程序的启动信号,在所述应用程序的私有目录下读取第一热修复动态链接库版本;
78.判断模块,用于判断所述第一热修复动态链接库版本是否高于所述应用程序的当
前动态链接库版本;
79.更新模块,用于若所述第一热修复动态链接库版本高于所述当前动态链接库版本,则将所述私有目录下的第一热修复动态链接库作为所述应用程序的动态链接库。
80.更进一步地,所述装置还包括:
81.发送模块,用于响应于应用程序的启动信号,调用所述应用程序的热修复接口向应用程序服务器发送热修复动态链接库获取请求;
82.接收模块,用于接收所述应用程序服务器返回的第二热修复动态链接库信息,其中,所述热修复动态链接库信息包括第二热修复动态链接库版本以及第二热修复动态链接库下载地址;
83.下载模块,用于依据所述第二热修复动态链接库下载地址,下载第二热修复动态链接库到所述私有目录下,并将所述第二热修复动态链接库版本存储在本地数据库中。
84.更进一步地,所述发送模块,还用于:
85.调用所述应用程序的热修复接口读取所述本地数据库中的本地动态链接库版本,依据所述本地动态链接库版本以及应用程序版本,生成所述热修复动态链接库获取请求,并向所述应用程序服务器发送所述热修复动态链接库获取请求,以使所述应用程序服务器依据所述本地动态链接库版本反馈对应的所述第二热修复动态链接库信息。
86.更进一步地,所述应用程序服务器依据所述本地动态链接库版本以及所述应用程序版本判断是否存在待更新动态链接库版本,并依据判断结果生成所述第二热修复动态链接库信息,其中,所述第二热修复动态链接库信息包括动态链接库修复标识、第二热修复动态链接库下载地址以及第二热修复动态链接库版本。
87.更进一步地,所述装置还包括:
88.解析模块,用于所述接收所述应用程序服务器返回的第二热修复动态链接库信息之后,解析所述第二热修复动态链接库信息,获得动态链接库修复标识;
89.所述下载模块,还用于若所述动态链接库修复标识为需要修复标识,则执行所述依据所述第二热修复动态链接库下载地址,下载第二热修复动态链接库。
90.更进一步地,所述热修复动态链接库获取请求还包括所述热修复接口的接口钥匙;
91.所述应用程序服务器在验证所述接口钥匙有效的情况下,执行所述依据本地动态链接库版本以及所述应用程序版本判断是否存在待更新动态链接库版本,并依据判断结果生成携带有鉴权成功结果的所述第二热修复动态链接库信息;
92.所述应用程序服务器在验证所述接口钥匙无效的情况下,生成携带有鉴权失败结果的第二热修复动态链接库信息。
93.更进一步地,所述更新模块,还用于若所述应用程序的私有目录下不包含第一热修复动态链接库,或者若所述第一热修复动态链接库版本不高于所述当前动态链接库版本,则保持所述应用程序的当前动态链接库不变。
94.需要说明的是,本技术实施例提供的一种应用程序的热修复装置所涉及各功能单元的其他相应描述,可以参考图1至图2方法中的对应描述,在此不再赘述。
95.基于上述如图1至图2所示方法,相应的,本技术实施例还提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述如图1至图2所示的应用程序
的热修复方法。
96.基于这样的理解,本技术的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施场景所述的方法。
97.基于上述如图1至图2所示的方法,以及图3所示的虚拟装置实施例,为了实现上述目的,本技术实施例还提供了一种计算机设备,具体可以为个人计算机、服务器、网络设备等,该计算机设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1至图2所示的应用程序的热修复方法。
98.可选地,该计算机设备还可以包括用户接口、网络接口、摄像头、射频(radio frequency,rf)电路,传感器、音频电路、wi-fi模块等等。用户接口可以包括显示屏(display)、输入单元比如键盘(keyboard)等,可选用户接口还可以包括usb接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如蓝牙接口、wi-fi接口)等。
99.本领域技术人员可以理解,本实施例提供的一种计算机设备结构并不构成对该计算机设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
100.存储介质中还可以包括操作系统、网络通信模块。操作系统是管理和保存计算机设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与该实体设备中其它硬件和软件之间通信。
101.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本技术可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现通过私有目录记录应用程序应更新的第一热修复动态链接库,在应用程序启动时,通过比较私有目录下的第一热修复动态链接库版本与应用程序的当前动态链接库版本,从而在确定第一热修复动态链接库版本高于当前动态链接库版本的情况下,将应用程序的当前动态链接库替换为第一热修复动态链接库,实现对应用程序的热修复。本发明实施例相比于现有技术中动辄修改应用程序代码且需要中断应用程序使用的应用程序修复方式,通过应用程序的私有目录存储应用程序最新的热修复动态链接库版本,在应用程序启动时依据私有目录下存储的动态链接库版本判断当前动态链接库版本是否为最新,以便对应用程序进行热修复,减少了应用程序的修改量,提升了应用程序的修复便利性和智能性,且无需中断应用程序的业务,提升了用户体验。
102.本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本技术所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
103.上述本技术序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本技术的几个具体实施场景,但是,本技术并非局限于此,任何本领域的技术人员能思之的变化都应落入本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1