应用软件的修复方法、装置及电子设备与流程

allin2023-01-20  115



1.本技术涉及软件技术领域,尤其涉及一种应用软件的修复方法、装置及电子设备。


背景技术:

2.应用软件在使用过程中,经常会出现bug,现有技术在使用过程出现bug时,往往需要软件开发人员针对bug发布正常版本,用户下载并使用该正常版本。重新下载和安装的过程比较繁琐,并且开发人员发布新版本的周期比较长,bug修复的效率较低。


技术实现要素:

3.有鉴于此,本技术的目的在于提供一种应用软件的修复方法、装置及电子设备,以简化应用软件的修复过程,提高缺陷修复效率。
4.第一方面,本技术实施例提供一种应用软件的修复方法,应用于安装有应用软件的电子设备,应用软件的启动程序中内置有热修复组件,该方法包括:响应于对应用软件的启动操作,启动应用软件;响应于应用软件启动至热修复组件,运行热修复组件以获取应用软件的服务器上的补丁文件;其中,补丁文件至少包含应用软件的目标缺陷对应的修复代码;应用补丁文件修复应用软件,继续完成应用软件的启动过程。
5.进一步地,上述运行热修复组件以获取应用软件的服务器上的补丁文件的步骤,包括:通过热修复组件获取应用软件的状态信息;其中,状态信息至少包括软件标识和当前版本;根据状态信息判断应用软件的服务器中是否存在与应用软件对应的补丁文件;如果是,下载补丁文件。
6.进一步地,上述根据状态信息判断应用软件的服务器中是否存在与应用软件对应的补丁文件的步骤,包括:向应用软件的服务器获取补丁信息;其中,补丁信息表征服务器中包含的应用软件对应的最新补丁版本;根据补丁信息和状态信息判断服务器是否存在应用软件对应的补丁文件。
7.进一步地,上述根据补丁信息和状态信息判断服务器是否存在应用软件对应的补丁文件的步骤,包括:将补丁信息中包括的最新补丁版本与状态信息包含的当前版本进行比对;如果比对结果表征最新补丁版本与当前版本不一致,确定服务器存在应用软件对应的补丁文件。
8.进一步地,上述状态信息还包括电子设备的处理器型号。
9.进一步地,上述应用补丁文件修复应用软件的步骤,包括:将启动用库文件替换成补丁文件,以使应用软件启动时读取补丁文件;其中,启动用库文件为应用软件启动时读取的配置文件,启动用库文件中的至少一个文件为缺陷文件。
10.进一步地,上述应用补丁文件修复应用软件的步骤,包括:对补丁文件进行安全校验;安全校验包括以下中的一个或多个校验:加密校验、补丁文件名称校验,补丁文件版本校验;如果校验结果表征补丁文件安全,应用补丁文件修复应用软件。
11.进一步地,上述应用补丁文件修复应用软件的步骤之后,上述方法还包括:使用钩
子函数的回调机制,指示应用软件重新执行启动程序,以完成应用软件的启动操作。
12.第二方面,本技术实施例还提供一种应用软件的修复装置,应用于安装有应用软件的电子设备,应用软件的启动程序中内置有热修复组件,该装置包括:启动响应模块,用于响应于对应用软件的启动操作,启动应用软件;补丁文件获取模块,用于响应于应用软件启动至热修复组件,运行热修复组件以获取应用软件的服务器上的补丁文件;其中,补丁文件至少包含应用软件的目标缺陷对应的修复代码;修复模块,用于应用补丁文件修复应用软件,继续完成应用软件的启动过程。
13.第三方面,本技术实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的计算机可执行指令,处理器执行计算机可执行指令以实现上述第一方面的应用软件的修复方法。
14.第四方面,本技术实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述第一方面的应用软件的修复方法。
15.与现有技术相比,本技术实施例具有以下有益效果:
16.本技术实施例提供的上述应用软件的修复方法、装置及电子设备,首先在应用软件中内置热修复组件,在接收到应用软件的启动操作后,启动应用软件并运行到热修复组件,运行所述热修复组件以获取所述应用软件的服务器上的补丁文件,最终应用所述补丁文件修复所述应用软件,完成应用软件的启动过程。本技术中在应用软件每次启动时,首先运行热修复组件,从服务器获取补丁文件,在启动过程中通过包含修复代码的补丁文件完成应用软件的启动,用户在使用该应用软件时,该应用软件已经完成了bug的修复,无需用户手动修复,提高应用软件的交互性能,并且补丁文件开发周期短,提高了软件修复的效率。
17.本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。
18.为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
19.为了更清楚地说明本技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1为本技术实施例提供的一种电子系统的结构示意图;
21.图2为本技术实施例提供的一种应用软件的修复方法的流程图;
22.图3为本技术实施例提供的另一种应用软件的修复方法的流程图;
23.图4为本技术实施例提供的另一种应用软件的修复方法的流程图;
24.图5为本技术实施例提供的另一种应用软件的修复方法的流程图;
25.图6为本技术实施例提供的一种应用软件的修复装置的结构示意图;
26.图7为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
27.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合附图对本技术的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
28.一直以来,android应用软件在线上发布后,用户下载安装使用时,会经常遇到程序崩溃闪退或者与预期不符的事件发生,这类现象可以称之为“bug”。即使在软件发布前有严谨的测试流程,也无法保证上线的版本有没有引入bug。而一旦bug发生,将导致用户使用体验不佳,更会造成用户经济利益的损失等情况的发生,造成严重的后果。
29.现有的解决线上bug的流程是:发现bug之后,停止有bug应用软件的发布(避免更多用户下载或者升级到有bug的应用,而造成使用不正常);开发人员紧急修复bug,重新发布正常应用软件版本;用户下载或者升级正常的应用软件,从而解决上个版本因bug造成的后果。
30.然而,开发人员重新发布软件版本实施的周期太长,时效性差,即不能立刻在线上修复bug,同时,用户需要手动重新安装应用软件,打扰用户体验性。
31.基于此,本技术实施例提供一种应用软件的修复方法、装置及电子设备,以简化应用软件的修复过程,提高缺陷修复效率。
32.参照图1所示的电子系统100的结构示意图。该电子系统可以用于实现本技术实施例的应用软件的修复方法和装置。
33.如图1所示的一种电子系统的结构示意图,电子系统100包括一个或多个处理设备102以及一个或多个存储装置104。可选地,电子系统100还可以包括输入装置106以及输出装置108,这些组件通过总线系统110和/或其它形式的连接机构(未示出)互连。应当注意,图1所示的电子系统100的组件和结构只是示例性的,而非限制性的,根据需要,电子系统可以具有图1中的部分组件,也可以具有其他组件和结构。
34.处理设备102可以为服务器、智能终端,或者是包含中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元的设备,可以对电子系统100中的其它组件的数据进行处理,还可以控制电子系统100中的其它组件以执行应用软件的修复功能。
35.存储装置104可以包括一个或多个计算机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理设备102可以运行程序指令,以实现下文的本技术实施例中(由处理设备实现)的客户端功能以及/或者其它期望的功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据,例如应用程序使用和/或产生的各种数据等。
36.输入装置106可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。
37.输出装置108可以向外部(例如,用户)输出各种信息(例如,图像或声音),并且可以包括显示器、扬声器等中的一个或多个。
38.示例性地,用于实现根据本技术实施例的应用软件的修复方法、装置及电子设备中的各器件可以集成设置,也可以分散设置,诸如将处理设备102、存储装置104、输入装置106和输出装置108集成设置于一体。
39.图2为本技术实施例提供的一种应用软件的修复方法的流程图,应用于安装有应用软件的电子设备,应用软件的启动程序中内置有热修复组件,参见图2,该方法包括以下步骤:
40.s202:响应于对应用软件的启动操作,启动应用软件;
41.本实施例公开的应用软件的修复方法,在应用软件启动的过程中实现对应用软件中存在的bug的热修复。其中,应用软件为安装在电子设备中的任意类型的应用程序,例如安装在移动终端的app,或者安装在计算机中的应用程序。在接收到用户对应用软件的启动指示时,首先按照该应用软件中的启动程序启动应用软件。
42.s204:响应于应用软件启动至热修复组件,运行热修复组件以获取应用软件的服务器上的补丁文件;其中,补丁文件至少包含应用软件的目标缺陷对应的修复代码;
43.应用软件的启动程序中包含热修复组件,该热修复组件可以嵌入在应用软件的安装程序中,即首次安装该应用软件时即完成了热修复组件的安装,也可以是在进行应用软件的版本更新时,下载至应用软件中。
44.在应用软件运行到热修复组件时,通过热修复组件获取服务器上的补丁文件。具体地,如果服务器中存在于该应用软件对应的最新补丁,则下载该补丁文件,否则,不进行下载,继续使用已有的启动程序启动该应用软件。
45.s206:应用补丁文件修复应用软件,继续完成应用软件的启动过程。
46.当存在补丁文件时,使用补丁文件修复应用软件,并指示应用软件继续执行启动程序中的其他文件,完成应用程序的启动。使用补丁文件修复应用软件,可以具体是使用补丁文件中的指定文件替换应用软件中已有的存在缺陷的指定文件,这样应用程序在启动过程中读取的是补丁文件,补丁文件中的代码已经修复了bug,因此实现了应用软件的热修复。还可以是通过补丁文件中的配置文件指示应用软件启动时不读取已有的存在bug的文件,而是读取包含修复代码的文件,同样实现了应用软件的热修复。
47.本技术实施例提供的上述应用软件的修复方法,首先在应用软件中内置热修复组件,在接收到应用软件的启动操作后,启动应用软件并运行到热修复组件,运行所述热修复组件以获取所述应用软件的服务器上的补丁文件,最终应用所述补丁文件修复所述应用软件,完成应用软件的启动过程。本技术中在应用软件每次启动时,首先运行热修复组件,从服务器获取补丁文件,在启动过程中通过包含修复代码的补丁文件完成应用软件的启动,用户在使用该应用软件时,该应用软件已经完成了bug的修复,无需用户手动修复,提高应用软件的交互性能,并且补丁文件开发周期短,提高了软件修复的效率。
48.图3为本技术实施例提供的另一种应用软件的修复方法的流程图,该方法侧重于描述如何通过热修复组件获取补丁文件的过程,如图3所示,该方法具体包括以下步骤:
49.s302:响应于对应用软件的启动操作,启动应用软件;
50.s304:响应于应用软件启动至热修复组件,通过热修复组件获取应用软件的状态信息;
51.其中,上述状态信息至少包括软件标识和当前版本。
52.s306:根据状态信息判断应用软件的服务器中是否存在与应用软件对应的补丁文件,如果是,执行步骤s308-s310;否则,执行步骤s312;
53.其中,补丁文件至少包含应用软件的目标缺陷对应的修复代码。在具体实施时,首先判断服务器中是否存在于状态信息对应的补丁文件,例如,判断是否存在与应用软件标识相同,但版本号比当前版本号更高的补丁文件。
54.在一些可能的实施方式中,上述状态信息还包括电子设备的处理器型号。由于android开发项目有时会使用多cpu架构,例如同时支持armeabi-v7a、arm64-v8a等。在这种情况下,可以在补丁文件生成的过程中,即加入支持的处理器型号,在进行补丁文件的获取时,不仅考虑补丁文件的软件标识和版本号,还需要考虑处理器型号是否匹配。在另一些示例中,还可以在补丁文件生成过程中不考虑处理器型号,而是针对每个处理器型号均开发相应的补丁文件,在进行补丁文件获取时,打包下载所有版本和标识匹配的补丁文件,并在其中选择与本电子设备中的处理器型号对应的目标补丁文件。
55.s308:下载补丁文件;
56.s310:应用补丁文件修复应用软件,继续完成应用软件的启动过程;
57.s312:使用应用软件中的启动用库文件完成应用软件的启动过程。
58.本实施例中,通过热修复组件获取应用软件的状态信息,并根据状态信息获取匹配的补丁文件,在当前软件已经是最新版本的情况时,无需重复下载和重复修复,提高了应用软件的启动效率,减少了应用软件的启动时间,提高用户使用感受。
59.上述实施例描述了如何通过热修复组件获取补丁文件的过程,为了进一步提升应用软件的热修复效率,本技术实施例还提供了另一种应用软件的修复方法,如图4所示,该方法具体包括以下步骤:
60.s402:响应于对应用软件的启动操作,启动应用软件;
61.s404:响应于应用软件启动至热修复组件,通过热修复组件获取应用软件的状态信息;
62.其中,上述状态信息至少包括软件标识和当前版本。在一些示例中,上述状态信息还包括电子设备的处理器型号。
63.s406:向应用软件的服务器获取补丁信息;
64.其中,上述补丁信息表征服务器中包含的应用软件对应的最新补丁版本;
65.s408:根据补丁信息和状态信息判断服务器是否存在应用软件对应的补丁文件,如果是,执行步骤s410-s412;否则,执行步骤s414。
66.在一些可能的实施方式中,可以按照以下方法进行判断服务器是否存在应用软件对应的补丁文件:
67.l11:将补丁信息中包括的最新补丁版本与状态信息包含的当前版本进行比对;
68.l12:如果比对结果表征最新补丁版本与当前版本不一致,确定服务器存在应用软件对应的补丁文件。
69.在具体实施时,如果当前电子设备中的应用软件已经下载过补丁文件,那么该应用软件的状态信息中的软件版本已经更新为与补丁文件相同的版本号,则再次启动该应用软件时,经过比对,发现最新补丁版本与当前版本一致,则无需重新下载补丁文件,直接启动该应用软件即可,只有当该应用软件发现新的bug,开发人员开发了新的补丁文件并上传
至服务器后,启动该应用软件时,发现最新的补丁文件版本已经比当前版本更高,则重新下载最新的补丁文件。
70.s410:下载补丁文件;
71.s412:应用补丁文件修复应用软件,继续完成应用软件的启动过程。
72.s414:使用应用软件中的启动用库文件完成应用软件的启动过程。
73.本实施例中,通过热修复组件获取应用软件的状态信息,并且获取服务器的补丁信息,通过比对状态信息与补丁信息中的软件版本,确定是否需要重新下载补丁文件,避免了重复下载已有补丁文件导致的应用软件运行效率下降的问题,进一步提升了应用软件的启动效率。
74.图5为本技术实施例提供的另一种应用软件的修复方法的流程图,该方法重点描述了如何根据补丁文件修复应用软件的具体过程,如图5所示,该方法具体包括以下步骤:
75.s502:响应于对应用软件的启动操作,启动应用软件;
76.s504:响应于应用软件启动至热修复组件,运行热修复组件以获取应用软件的服务器上的补丁文件;其中,补丁文件至少包含应用软件的目标缺陷对应的修复代码;
77.s506:将启动用库文件替换成补丁文件,以使应用软件启动时读取补丁文件;
78.其中,启动用库文件为应用软件启动时读取的配置文件,启动用库文件中的至少一个文件为缺陷文件。
79.下面通过步骤l21-l22介绍如何生成补丁文件:
80.首先,flutter使用dart语言开发,所有程序所编写的业务代码都会生成libapp.so库,android flutterloader类进行加载。
81.l21:自定义palmcivetloader类,继承flutterloader,并hook住flutterinjector的flutterloader实例,通过java的反射机制重新赋值成palmcivetloader类的代理实例。下表1为palmcivetloader类的部分代码:
82.表1
[0083][0084]
l22:flutter引擎启动调用加载的so库在palmcivetloader代理类ensureinitializationcomplete方法中实现,实现代码如下表2所示:
[0085]
表2
[0086][0087]
上述加载的fix.so补丁文件就包含修复的代码,即生成的补丁文件。
[0088]
在生成补丁文件fix.so后,替换掉系统原本加载libapp.so库文件,即应用程序启动时,读取fix.so文件,而不去读取包含bug的libapp.so库文件,实现了应用软件的热修复。
[0089]
s508:使用钩子函数的回调机制,指示应用软件重新执行启动程序,以完成应用软件的启动操作。
[0090]
本实施例中,生成了新的补丁文件,并通过热修复组件指示应用程序读取补丁文件启动,整个过程完全后台处理,不需要用户手动下载和安装补丁文件,用户在启动完成后即可使用已经修复了bug的应用软件,有效提升了用户的使用感受。
[0091]
在一些可能的实施方式中,为了保证补丁文件的安全性和有效性,在下载了补丁文件后,还需要对补丁文件进行安全校验,在这种情况下,上述“应用补丁文件修复应用软件”的步骤可以具体为:
[0092]
l31:对补丁文件进行安全校验;安全校验包括以下中的一个或多个校验:加密校验、补丁文件名称校验,补丁文件版本校验;
[0093]
l32:如果校验结果表征补丁文件安全,应用补丁文件修复应用软件;
[0094]
l33:如果校验结果表征补丁文件不安全,删除补丁文件。
[0095]
在下载补丁文件后,不立即进行修复,而是首先验证补丁文件的安全性,如果由于
网络数据传输过程中的非法操作导致下载的补丁文件为具有安全威胁的文件时,可以有效阻止该文件威胁电子设备的安全,提升电子设备的系统安全性。
[0096]
为了便于理解上述实施例,下面将以上述实施例的一个具体应用场景为例进行说明:
[0097]
步骤1:flutter使用dart语言开发,所有程序所编写的业务代码都会生成libapp.so库,android flutterloader类进行加载。
[0098]
步骤2:自定义palmcivetloader类,继承flutterloader,并hook住flutterinjector的flutterloader实例,通过java的反射机制重新赋值成palmcivetloader类的代理实例。
[0099]
官方的sdk提供了一个flutterloader的类用来加载程序开发的代码,这个类就是代理官方的加载代码的流程。本技术实施例通过加载代码模块,进而选择是否加载补丁代码来规避错误的代码。
[0100]
步骤3:flutter引擎启动调用加载的so库在palmcivetloader代理类ensureinitializationcomplete方法中实现。
[0101]
上述加载的fix.so补丁文件就包含修复的代码,替换掉系统原本加载libapp.so。
[0102]
步骤4:将hook flutterloader设置为自定义的palmcivetloader类。
[0103]
针对使用flutter的flutterenginegroup多引擎的项目,因为flutterenginegroup在初始化的时候通过flutterinjector获取了flutterloader,本技术实施例在这一步之前提前将hook flutterloader自定义为palmcivetloader,进而加载补丁so库。
[0104]
步骤5:上传flutter补丁库时,选择对应的cpu架构类型。
[0105]
针对android项目使用多cpu架构的,比如同时支持armeabi-v7a、arm64-v8a,在上传flutter补丁so库的时候也需要选择对应的类型,或者直接打包所有类型的so库,针对手机支持的cpu架构选择对应的补丁so库。
[0106]
步骤6:启动应用软件并运行热修复组件。
[0107]
热修复组件的启动在android自定义application的入口或者程序入口处,也可以称之为热修复组件的初始化过程。
[0108]
步骤7:在loadingactivity页面或者baseactivity页面获取补丁信息并检查是否应用;
[0109]
通过网络访问后台放置补丁的服务端,有补丁文件,则下载补丁文件并修复应用程序,否则,不进行补丁文件的下载。
[0110]
基于上述方法实施例,本技术实施例还提供一种应用软件的修复装置,应用于安装有应用软件的电子设备,应用软件的启动程序中内置有热修复组件,参见图6所示,该装置包括:
[0111]
启动响应模块602,用于响应于对应用软件的启动操作,启动应用软件;
[0112]
补丁文件获取模块604,用于响应于应用软件启动至热修复组件,运行热修复组件以获取应用软件的服务器上的补丁文件;其中,补丁文件至少包含应用软件的目标缺陷对应的修复代码;
[0113]
修复模块606,用于应用补丁文件修复应用软件,继续完成应用软件的启动过程。
[0114]
本技术实施例提供的上述应用软件的修复装置,首先在应用软件中内置热修复组件,在接收到应用软件的启动操作后,启动应用软件并运行到热修复组件,运行所述热修复组件以获取所述应用软件的服务器上的补丁文件,最终应用所述补丁文件修复所述应用软件,完成应用软件的启动过程。本技术中在应用软件每次启动时,首先运行热修复组件,从服务器获取补丁文件,在启动过程中通过包含修复代码的补丁文件完成应用软件的启动,用户在使用该应用软件时,该应用软件已经完成了bug的修复,无需用户手动修复,提高应用软件的交互性能,并且补丁文件开发周期短,提高了软件修复的效率。
[0115]
上述补丁文件获取模块604还用于:通过热修复组件获取应用软件的状态信息;其中,状态信息至少包括软件标识和当前版本;根据状态信息判断应用软件的服务器中是否存在与应用软件对应的补丁文件;如果是,下载补丁文件。
[0116]
上述根据状态信息判断应用软件的服务器中是否存在与应用软件对应的补丁文件的过程,包括:向应用软件的服务器获取补丁信息;其中,补丁信息表征服务器中包含的应用软件对应的最新补丁版本;根据补丁信息和状态信息判断服务器是否存在应用软件对应的补丁文件。
[0117]
上述根据补丁信息和状态信息判断服务器是否存在应用软件对应的补丁文件的过程,包括:将补丁信息中包括的最新补丁版本与状态信息包含的当前版本进行比对;如果比对结果表征最新补丁版本与当前版本不一致,确定服务器存在应用软件对应的补丁文件。
[0118]
上述状态信息还包括电子设备的处理器型号。
[0119]
上述修复模块606还用于:将启动用库文件替换成补丁文件,以使应用软件启动时读取补丁文件;其中,启动用库文件为应用软件启动时读取的配置文件,启动用库文件中的至少一个文件为缺陷文件。
[0120]
上述修复模块606还用于:对补丁文件进行安全校验;安全校验包括以下中的一个或多个校验:加密校验、补丁文件名称校验,补丁文件版本校验;如果校验结果表征补丁文件安全,应用补丁文件修复应用软件。
[0121]
上述装置还包括:回调模块,用于使用钩子函数的回调机制,指示应用软件重新执行启动程序,以完成应用软件的启动操作。
[0122]
本技术实施例提供的应用软件的修复装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,上述装置的实施例部分未提及之处,可参考前述应用软件的修复方法实施例中的相应内容。
[0123]
应用本技术上述实施例提供的应用软件的修复方法和装置,开发人员修复打出fix.so库通过服务后台上传,可灰度、全量给存在bug版本的app下载,流程简易方便;对于qa测试人员可以参与验证补丁是否生效,热修复是否正常运行;对比没有热修复,而需要发布新版本软件的情况,节省了很多人力和物力(不需要开发人员打出不同渠道的apk包和qa人员回归主流程),用户体验性不受影响(不用重新更新apk包)。下表3为几种热修复方法的效果比较结果,其中“√”代表“是”,“x”代表“否”。从表中可见,使用本技术实施例中的技术对应用软件进行热修复的成功率最高。
[0124]
表3
[0125][0126]
本技术实施例还提供了一种电子设备,如图7所示,为该电子设备的结构示意图,其中,该电子设备包括处理器1501和存储器1502,该存储器1502存储有能够被该处理器1501执行的计算机可执行指令,该处理器1501执行该计算机可执行指令以实现上述应用软件的修复方法。
[0127]
在图7示出的实施方式中,该电子设备还包括总线1503和通信接口1504,其中,处理器1501、通信接口1504和存储器1502通过总线1503连接。
[0128]
其中,存储器1502可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口1504(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线1503可以是isa(industry standard architecture,工业标准体系结构)总线、pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。所述总线1503可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0129]
处理器1501可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1501中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1501可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器1501读取存储器中的信息,结合其硬件完成前述实施例的应用软件的修复方法的步骤。
[0130]
本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令在被处理器调用和执行时,该计算机可执行指令促使处理器实现上述应用软件的修复方法,具体实现可参见前述方法实施例,在此不再赘述。
[0131]
本技术实施例所提供的应用软件的修复方法、装置及电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
[0132]
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本技术的范围。
[0133]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0134]
在本技术的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本技术的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0135]
最后应说明的是:以上所述实施例,仅为本技术的具体实施方式,用以说明本技术的技术方案,而非对其限制,本技术的保护范围并不局限于此,尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本技术实施例技术方案的精神和范围,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。

技术特征:
1.一种应用软件的修复方法,其特征在于,应用于安装有所述应用软件的电子设备,所述应用软件的启动程序中内置有热修复组件,所述方法包括:响应于对所述应用软件的启动操作,启动所述应用软件;响应于所述应用软件启动至所述热修复组件,运行所述热修复组件以获取所述应用软件的服务器上的补丁文件;其中,所述补丁文件至少包含所述应用软件的目标缺陷对应的修复代码;应用所述补丁文件修复所述应用软件,继续完成所述应用软件的启动过程。2.根据权利要求1所述的应用软件的修复方法,其特征在于,运行所述热修复组件以获取所述应用软件的服务器上的补丁文件的步骤,包括:通过所述热修复组件获取所述应用软件的状态信息;其中,所述状态信息至少包括软件标识和当前版本;根据所述状态信息判断所述应用软件的服务器中是否存在与所述应用软件对应的补丁文件;如果是,下载所述补丁文件。3.根据权利要求2所述的应用软件的修复方法,其特征在于,根据所述状态信息判断所述应用软件的服务器中是否存在与所述应用软件对应的补丁文件的步骤,包括:向所述应用软件的服务器获取补丁信息;其中,所述补丁信息表征所述服务器中包含的所述应用软件对应的最新补丁版本;根据所述补丁信息和所述状态信息判断所述服务器是否存在所述应用软件对应的补丁文件。4.根据权利要求3所述的应用软件的修复方法,其特征在于,根据所述补丁信息和所述状态信息判断所述服务器是否存在所述应用软件对应的补丁文件的步骤,包括:将所述补丁信息中包括的最新补丁版本与所述状态信息包含的当前版本进行比对;如果比对结果表征所述最新补丁版本与所述当前版本不一致,确定所述服务器存在所述应用软件对应的补丁文件。5.根据权利要求2所述的应用软件的修复方法,其特征在于,所述状态信息还包括所述电子设备的处理器型号。6.根据权利要求1所述的应用软件的修复方法,其特征在于,应用所述补丁文件修复所述应用软件的步骤,包括:将启动用库文件替换成所述补丁文件,以使所述应用软件启动时读取所述补丁文件;其中,所述启动用库文件为所述应用软件启动时读取的配置文件,所述启动用库文件中的至少一个文件为缺陷文件。7.根据权利要求1所述的应用软件的修复方法,其特征在于,应用所述补丁文件修复所述应用软件的步骤,包括:对所述补丁文件进行安全校验;所述安全校验包括以下中的一个或多个校验:加密校验、补丁文件名称校验,补丁文件版本校验;如果校验结果表征所述补丁文件安全,应用所述补丁文件修复所述应用软件。8.根据权利要求6所述的应用软件的修复方法,其特征在于,应用所述补丁文件修复所述应用软件的步骤之后,所述方法还包括:
使用钩子函数的回调机制,指示所述应用软件重新执行启动程序,以完成所述应用软件的启动操作。9.一种应用软件的修复装置,其特征在于,应用于安装有所述应用软件的电子设备,所述应用软件的启动程序中内置有热修复组件,所述装置包括:启动响应模块,用于响应于对所述应用软件的启动操作,启动所述应用软件;补丁文件获取模块,用于响应于所述应用软件启动至所述热修复组件,运行所述热修复组件以获取所述应用软件的服务器上的补丁文件;其中,所述补丁文件至少包含所述应用软件的目标缺陷对应的修复代码;修复模块,用于应用所述补丁文件修复所述应用软件,继续完成所述应用软件的启动过程。10.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现权利要求1-8中任一项所述的应用软件的修复方法。11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现权利要求1-8中任一项所述的应用软件的修复方法。

技术总结
本申请提供了一种应用软件的修复方法、装置及电子设备,该方法包括:首先在应用软件中内置热修复组件,在接收到应用软件的启动操作后,启动应用软件并运行到热修复组件,运行所述热修复组件以获取所述应用软件的服务器上的补丁文件,最终应用所述补丁文件修复所述应用软件,完成应用软件的启动过程。本申请中在应用软件每次启动时,首先运行热修复组件,从服务器获取补丁文件,在启动过程中通过包含修复代码的补丁文件完成应用软件的启动,用户在使用该应用软件时,该应用软件已经完成了BUG的修复,无需用户手动修复,提高应用软件的交互性能,并且补丁文件开发周期短,提高了软件修复的效率。修复的效率。修复的效率。


技术研发人员:陈继军
受保护的技术使用者:网易(杭州)网络有限公司
技术研发日:2022.04.11
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-4899.html

最新回复(0)