CN110286936B - 热修复方法、装置、电子设备以及存储介质 - Google Patents

热修复方法、装置、电子设备以及存储介质 Download PDF

Info

Publication number
CN110286936B
CN110286936B CN201910566531.XA CN201910566531A CN110286936B CN 110286936 B CN110286936 B CN 110286936B CN 201910566531 A CN201910566531 A CN 201910566531A CN 110286936 B CN110286936 B CN 110286936B
Authority
CN
China
Prior art keywords
class
field
newly added
patch package
instruction
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
Application number
CN201910566531.XA
Other languages
English (en)
Other versions
CN110286936A (zh
Inventor
张迪
尚会波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201910566531.XA priority Critical patent/CN110286936B/zh
Publication of CN110286936A publication Critical patent/CN110286936A/zh
Application granted granted Critical
Publication of CN110286936B publication Critical patent/CN110286936B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明提供一种热修复方法、装置、电子设备以及存储介质,包括:生成待修复应用的补丁包,补丁包中方法的指令通过调用第一类实例中的新增字段来执行对新增字段的操作;其中,第一类保存有第二类中的新增字段,第二类为发生修改的类;向终端发送补丁包,以使终端调用补丁包修复待修复应用。本发明提供的热修复方法、装置、电子设备以及存储介质,提高了新增字段时热修复的开发效率。

Description

热修复方法、装置、电子设备以及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种热修复方法、装置、电子设备以及存储介质。
背景技术
热修复技术通过云端服务器下发热修复补丁(patch)来修复软件漏洞的一些代码,是一种快速、低成本修复产品软件版本缺陷的方式。热修复技术具有如下优势:1、可快速修复,避免线上Bug带来的业务损失,把损失降到最低。2、保证客户端的更新率,无须用户进行版本升级安装。3、良好的用户体验,无感知修复异常。节省用户下载安装成本。
插桩方案是一种轻量的热修复技术,即在原始安装包中对编译后的类中插入判断逻辑。当有补丁加载时,执行补丁中的逻辑,当无补丁时,执行原逻辑,以达到修复问题的目标。当需要修复的问题有新增字段(field)时主要有两种方法来进行热修复。第一种方法是通过新增类,将新增字段定义在新增类中,在使用新增字段的地方,使用新增类中的新增字段替代。第二种方法是寻找不需要新增字段的方案,例如需要新增一个字段,可以通过将字段用固定值来代替的形式来修改代码。
然而,上述两种方法,都需要采用非常规开发模式。非常规开发模式不同于常规开发模式,其需要编写的代码不符合一般规范,编写较为繁琐,导致开发效率低。
发明内容
本发明提供一种热修复方法、装置、电子设备以及存储介质,以解决现有技术中新增字段时热修复开发效率低的问题。
本发明的第一个方面提供一种热修复方法,包括:
生成待修复应用的补丁包,所述补丁包中方法的指令通过调用第一类实例中的新增字段来执行对所述新增字段的操作;其中,所述第一类保存有第二类中的新增字段,所述第二类为发生修改的类;
向终端发送所述补丁包,以使所述终端调用所述补丁包修复所述待修复应用。
可选的,所述生成待修复应用的补丁包,包括:
根据所述第二类创建所述第一类并在所述第一类中添加所述第二类中的新增字段;
在使用所述新增字段的方法中确定调用所述新增字段的指令;
根据所述第一类对所述指令进行重构,并根据重构后的指令生成补丁包。
可选的,在所述生成待修复应用的补丁包之前,还包括:
在对原始安装包进行插桩时,在所述原始安装包中的类中插入预设字段,所述预设字段为所述原始安装包中的字段。
可选的,所述对所述指令进行重构,包括:
获取所述指令中的预设字段;
若所述预设字段的值为空,则创建所述第一类的一个实例,并将所述实例赋值给所述预设字段;
调用所述实例中的新增字段。
本发明的第二个方面提供一种热修复方法,包括:
接收服务器发送的待修复应用的补丁包,所述补丁包中方法的指令通过调用第一类实例中的新增字段来执行对所述新增字段的操作;其中,所述第一类保存有第二类中的新增字段,所述第二类为发生修改的类;
调用所述补丁包修复所述修复应用。
本发明的第三个方面提供一种热修复装置,包括:
补丁包生成模块,用于生成待修复应用的补丁包,所述补丁包中方法的指令通过调用第一类实例中的新增字段来执行对所述新增字段的操作;其中,所述第一类保存有第二类中的新增字段,所述第二类为发生修改的类;
发送模块,用于向终端发送所述补丁包,以使所述终端调用所述补丁包修复所述待修复应用。
可选的,所述补丁包生成模块,包括:
子类创建单元,用于根据所述第二类创建所述第一类并在所述第一类中添加所述第二类中的新增字段;
解析单元,在使用所述新增字段的方法中确定调用所述新增字段的指令;
重构单元,用于根据所述第一类对所述指令进行重构,并根据重构后的指令生成补丁包。
可选的,还包括:
插桩模块,用于在对原始安装包进行插桩时,在所述原始安装包中的类中插入预设字段,所述预设字段为所述原始安装包中的字段。
可选的,所述重构单元,具体用于获取所述指令中的预设字段;若所述预设字段的值为空,则创建所述第一类的一个实例,并将所述实例赋值给所述预设字段;调用所述实例中的新增字段。
本发明的第四个方面提供一种热修复装置,包括:
接收模块,用于接收服务器发送的待修复应用的补丁包,所述补丁包中方法的指令通过调用第一类实例中的新增字段来执行对所述新增字段的操作;其中,所述第一类保存有第二类中的新增字段,所述第二类为发生修改的类;
修复模块,用于调用所述补丁包修复所述修复应用。
本发明的第五个方面提供一种电子设备,包括:
存储器,用于存储程序指令;
处理器,用于调用并执行所述存储器中的程序指令,执行第一方面所述的方法步骤。
本发明的第六个方面提供一种电子设备,包括:
存储器,用于存储程序指令;
处理器,用于调用并执行所述存储器中的程序指令,执行第二方面所述的方法步骤。
本发明的第七个方面提供一种存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序用于执行第一方面任一项所述的方法。
本发明的第八个方面提供一种存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序用于执行第一方面任一项所述的方法。
本发明提供的热修复方法、装置、电子设备以及存储介质,第一终端生成待修复应用的补丁包,该补丁包中方法的指令通过调用第一类实例中的新增字段来执行对该新增字段的操作;其中,第一终端向服务器发送补丁包,第二类发生修改的类,以使第二终端调用补丁包修复待修复应用。通过该方式,可以仍然采用常规开发模式进行热修复补丁包的开发而不需要考虑新增字段的影响,进而提高了新增字段时热修复开发的效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种热修复方法的应用场景示意图;
图2为本申请实施例提供的一种热修复方法的信令交互图;
图3为本申请实施例提供的一种热修复方法的流程示意图;
图4为本申请实施例提供的一种热修复装置的结构示意图;
图5为本申请实施例提供的另一种热修复装置的结构示意图;
图6为本申请实施例提供的一种电子设备的结构示意图;
图7为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中,当需要修复的问题有新增字段(field)时主要有两种方法来进行热修复。第一种方法是通过新增类,将新增字段定义在新增类中,在使用新增字段的地方,使用新增类中的新增字段替代。第二种方法是寻找不需要新增字段的方案,例如需要新增一个字段,可以通过将字段用固定值来代替的形式来修改代码。
然而,上述两种方法,都需要采用非常规开发模式。非常规开发模式不同于常规开发模式,其需要编写的代码不符合一般规范,编写较为繁琐,导致开发效率低。
为解决上述问题,本申请提供一种热修复方法、装置、电子设备以及存储介质,以提高新增字段时热修复开发效率。
图1为本申请实施例提供的一种热修复方法的应用场景示意图,如图1所示,当某应用需要进行热修复时,开发人员在第一终端11上可以执行插桩过程,在原始安装包的类中的每个方法中插入判断逻辑,当有补丁加载时,执行补丁中的逻辑,当无补丁时,执行原逻辑。随后生成对应的补丁包。当第一终端11生成补丁包之后,可以将该补丁包上传至服务器12,以供第二终端13从服务器12下载补丁包,当第二终端13加载完该补丁包之后,便完成了上述应用的热修复过程。
其中,服务器12可以是一台服务器,或者若干台服务器的组成的服务器集群,或者是一个云服务平台。服务器12可以接收第一终端11发送补丁包,并将该补丁包发送给第二终端13.
终端,可以是但不限于计算机,数字广播终端,移动电话、消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等用户设备。第一终端11为开发人员侧终端,第二终端13为用户侧终端。
需要说明的是,本申请技术方案的应用场景可以是上述应用场景,但并不限于此。
下面以具体地实施例对本申请实施例的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2为本申请实施例提供的一种热修复方法的信令交互图。本实施例涉及的是对应用进行热修复的过程。本申请实施例以第一终端和第二终端为例,对本申请实施例的方法进行说明。如图2所示,该方法包括:
S201、第一终端生成待修复应用的补丁包。
其中,补丁包中方法的指令通过调用第一类实例中的新增字段来执行对新增字段的操作;其中,第一类保存有第二类中的新增字段,第二类为发生修改的类。
在本发明实施例中,上述第一终端可以为开发侧的计算机设备,包括但不限于电脑。上述待修复应用可以是存在问题需要进行修复的应用。
其中,类,可以是代码中包括的一种数据结构,类可以包括字段、方法等。
上述新增字段,可以是原始安装包中不包含的字段,在需要修复问题并且修复方案需要新增字段时,会在类中插入一个新的字段。该新增字段可以通过和原始安装包中的字段进行比较来确定,也可以通过对发生修改的类进行逐一识别来确定,本申请实施例对于如何确定字段为新增字段的方式不做限定。
上述第二类即在修改后包括有新增字段的类。在确定发生修改的类为上述的第二类后,可以建立上述的第一类,并将第二类中的新增字段添加到第一类中。上述第二类,可以为一个也可以为多个,每个第二类中的新增字段同样可以为一个也可以为多个,本申请对此不做限制。
类中的方法中包含了该方法对应的一个或多个指令。在生成补丁包时,对于使用新增字段的方法,由于其代码发送了改动,都会被复制到中补丁包中。为了支持新增字段,在此过程中,可以确定该方法中调用新增字段的指令,并对该指令进行重构,使其调用第一类实例中的新增字段。
S202、第一终端向服务器发送补丁包。
在生成待修复应用的补丁包后,第一终端可以将该补丁包上传到服务器中,以供需要的第二终端进行下载。
第一终端可以通过无线网络将补丁包发送给服务器,也可以通过有线网络将补丁包发送给服务器,需要说明的是,本申请实施例对于第一终端如何向服务器发送补丁包不做限制。
一种可选的实施方式中,服务器在接到第一终端发送的补丁包后,可以对向第二终端发送消息,来提醒第二终端可以下载该补丁包,来对待修复应用进行修复。
S203、服务器向第二终端发送补丁包。
上述第一终端可以为用户侧的计算机设备,包括但不限于电脑、手机等。
一种可选的实施方式中,在第二终端接收服务器发送的待修复应用的补丁包前,可以由第二终端向服务器发送补丁包下载请求,该请求中可以包含补丁包的标识。在接收到该下载请求后,服务器可以根据该下载请求中的补丁包标识,找到对应的补丁包并发送给第二终端。
S204、第二终端调用补丁包修复待修复应用。
在本步骤中,第二终端在加载补丁包时,从补丁包中读取要替换的类,以及执行类中具体的指令,从而替换掉之前老的逻辑,达到热修复的目的。
若待执行的指令中需要调用新增的字段,由于在生成补丁包时,已经对该指令进行了重构,使其调用第一类实例中的新增字段,此时第二终端执行到该指令时就可以正常的执行对新增字段的操作。
本申请实施例提供的热修复方法,第一终端生成待修复应用的补丁包,该补丁包中的指令通过调用第一类实例中的新增字段来执行对该新增字段的操作;其中,第一类保存有第二类中的新增字段,第二类为发生修改的类;第一终端向服务器发送补丁包,以使第二终端调用补丁包修复待修复应用。通过该方式,可以仍然采用常规开发模式进行热修复补丁包的开发而不需要考虑新增字段的影响,进而提高了新增字段时热修复开发的效率。
下面对于第一终端如何生成补丁包的过程进行说明。图3为本申请实施例提供的一种热修复方法的流程示意图,本实施例的执行主体为上述第一终端,即开发侧的计算机设备。如图3所示,该方法包括:
S301、在对原始安装包进行插桩时,在原始安装包中的类中插入预设字段。
其中,上述预设字段,不同于新增字段,为原始安装包中的字段,具体可以为静态字段。
第一终端在对原始安装包进行插桩时,可以在每个方法插入一段类型为FieldHolder预设字段的逻辑,插入过程对业务开发是完全透明的,该预设字段的名称为$fd。通过该预设字段,后续可以从补丁包中访问新增字段。
当调用字段(getField)的方法第一次被调用时,FieldHolder引起预设内部持有类FieldHolder初始化,在加载FieldHolder类的时候初始化其静态域。
S302、根据第二类创建第一类并在第一类中添加第二类中的新增字段。
其中,第二类为发生修改的类,第一类保存有第二类中的新增字段。
本申请中,在修复问题时,一个修改的类中插入了新增字段,则可以确定该类为上述的第二类。此时,可以在补丁包中创建一个第一类,并将该类中的新增字段添加到该第一类中。
需要说明的是,本申请实施例对于第一类的类型不做限制,在一种可实施的方式中,第一类的类型可以为FieldHolder。并且,本申请对于第一类的名称也不做限制,在一种可实施方式中,第一类的名称可以和第二类对应。
示例性的,若发送修改的类A中有新增字段,则可以创建与该类对应的FieldHolder子类A$fdh,将新增字段添加在该子类中。
S303、在使用新增字段的方法中确定调用新增字段的指令。。
本申请中,在生成补丁包时,使用新增字段的方法,由于其代码发生了改动,都需要复制到补丁包中。在向补丁包复制上述使用新增字段的方法时,可以对该方法中的每一条指令进行解析,从中确定出所有调用了新增字段的指令。
在一种可选的实现方式中,创建第一类并在第一类中添加第二类中的新增字段时,可以记录下新增字段的标识,从而根据上述新增字段的标识确定调用了新增字段的指令。
S304、根据所述第一类对所述指令进行重构,并根据重构后的指令生成补丁包。
在本申请中,为了使第二终端可以正常执行对新增字段的操作,在确定出调用新增字段的指令后,需要对该指令进行重构,以使其可以调用第一类实例中的新增字段。
其中,对指令进行重构,具体包括如下步骤:
1、获取指令中的预设字段;
2、创建第一类的一个实例,并将实例赋值给预设字段;
3、调用实例中的新增字段。
由于在对原始安装包进行插桩时,在原始安装包中的类中插入了预设字段,可以通过上述方式利用预设字段从补丁包中访问新增字段。
针对上述对指令进行重构,在一种可选的实施方式中,在创建第一类的一个实例前,还可以确定预设字段的值,若确定预设字段的值为空,则创建第一类的一个实例。
示例性的,若在原始安装包中的类中插入的预设字段为A$fh,创建的包含新增字段的类为A$fdh。在对指令进行重构时,可以首先获取A$fh字段,如果该预设字段的值为空,则创建A$fdh类的一个实例,将其赋值给A$fh;随后,调用A$fh实例中的新增字段。
完成对调用新增字段的指令的重构,即可正常的执行对新增字段的操作。后续的,将上述重构后的指令添加到补丁包中,以修复待修复应用的补丁包。
本申请实施例提供的热修复方法,根据第二类创建第一类并在第一类中添加第二类中的新增字段;解析使用新增字段的方法,确定使用新增字段的方法中调用新增字段的指令;对指令进行重构,并根据重构后的指令生成补丁包。通过该方式,可以仍然采用常规开发模式进行热修复补丁包的开发而不需要考虑新增字段的影响,进而提高了新增字段时热修复开发的效率。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图4为本申请实施例提供的一种热修复装置的结构示意图。该热修复装置可以通过软件、硬件或者两者的结合实现,可以为前述所说的第一终端。
如图4所示,该热修复装置400包括:
补丁包生成模块41,用于生成待修复应用的补丁包,补丁包中方法的指令通过调用第一类实例中的新增字段来执行对新增字段的操作;其中,其中,第一类保存有第二类中的新增字段,第二类为发生修改的类;
发送模块42,用于向服务器发送补丁包,以使终端从服务器中下载补丁包并调用补丁包修复待修复应用。
在一种可选的实施方式中,补丁包生成模块41,包括:子类创建单元,用于根据第二类创建第一类并在第一类中添加第二类中的新增字段;在使用所述新增字段的方法中确定调用所述新增字段的指令;重构单元,用于根据所述第一类对所述指令进行重构,并根据重构后的指令生成补丁包。
在一种可选的实施方式中,热修复装置400,还包括:
插桩模块43,用于在对原始安装包进行插桩时,在原始安装包中的类中插入预设字段,预设字段为原始安装包中的字段。
在一种可选的实施方式中,重构单元,具体用于获取指令中的预设字段;若预设字段的值为空,则创建第一类的一个实例,并将实例赋值给预设字段;调用实例中的新增字段。
本申请实施例提供的热修复装置,可以执行上述方法实施例中第一终端的动作,其实现原理和技术效果类似,在此不再赘述。
图5为本申请实施例提供的另一种热修复装置的结构示意图。该热修复装置可以通过软件、硬件或者两者的结合实现,可以为前述所说的第二终端。
如图5所示,该热修复装置500包括:
接收模块51,用于接收服务器发送的待修复应用的补丁包,补丁包中的指令通过调用第一类实例中的新增字段来执行对新增字段的操作;其中,其中,第一类保存有第二类中的新增字段,第二类为发生修改的类;
修复模块52,用于调用补丁包修复修复应用。
本申请实施例提供的热修复装置,可以执行上述方法实施例中第二终端的动作,其实现原理和技术效果类似,在此不再赘述。
图6为本申请实施例提供的一种电子设备的结构示意图。如图6所示,该电子装置可以包括:至少一个处理器61和存储器62。图6示出的是以一个处理器为例的电子设备。
存储器62,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。
存储器62可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
处理器61用于执行存储器62存储的计算机执行指令,以实现上述第一终端侧的热修复方法。
其中,处理器61可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
可选的,在具体实现上,如果通信接口、存储器62和处理器61独立实现,则通信接口、存储器62和处理器61可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果通信接口、存储器62和处理器61集成在一块芯片上实现,则通信接口、存储器62和处理器61可以通过内部接口完成通信。
图7为本申请实施例提供的一种电子设备的结构示意图。如图7所示,该电子装置可以包括:至少一个处理器71和存储器72。图7示出的是以一个处理器为例的电子设备。
存储器72,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。
存储器72可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
处理器71用于执行存储器72存储的计算机执行指令,以实现上述第二终端侧的热修复方法。
其中,处理器71可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
可选的,在具体实现上,如果通信接口、存储器72和处理器71独立实现,则通信接口、存储器72和处理器71可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果通信接口、存储器72和处理器71集成在一块芯片上实现,则通信接口、存储器72和处理器71可以通过内部接口完成通信。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或者光盘等各种可以存储程序代码的介质,具体的,该计算机可读存储介质中存储有程序指令,程序指令用于上述第一终端侧的方法或第二终端侧的方法。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (8)

1.一种热修复方法,其特征在于,包括:
生成待修复应用的补丁包,所述补丁包中方法的指令通过调用第一类实例中的新增字段来执行对所述新增字段的操作;其中,所述第一类保存有第二类中的新增字段,所述第二类为发生修改的类;
向服务器发送所述补丁包,以使终端从所述服务器中下载所述补丁包并调用所述补丁包修复所述待修复应用;
所述生成待修复应用的补丁包,包括:
根据所述第二类创建所述第一类并在所述第一类中添加所述第二类中的新增字段;
在使用所述新增字段的方法中确定调用所述新增字段的指令;
根据所述第一类对所述指令进行重构,并根据重构后的指令生成所述补丁包;
所述对所述指令进行重构,包括:
获取所述指令中的预设字段;
若所述预设字段的值为空,则创建所述第一类的一个实例,并将所述实例赋值给所述预设字段;
调用所述实例中的新增字段。
2.根据权利要求1所述的方法,其特征在于,在所述生成待修复应用的补丁包之前,还包括:
在对原始安装包进行插桩时,在所述原始安装包中的类中插入预设字段,所述预设字段为所述原始安装包中的字段。
3.一种热修复方法,其特征在于,包括:
接收服务器发送的待修复应用的补丁包,所述补丁包中方法的指令通过调用第一类实例中的新增字段来执行对所述新增字段的操作;其中,所述第一类保存有第二类中的新增字段,所述第二类为发生修改的类;所述补丁包是终端发送至所述服务器的,所述补丁包是所述终端根据所述第二类创建所述第一类并在所述第一类中添加所述第二类中的新增字段后,在使用所述新增字段的方法中确定调用所述新增字段的指令,并根据所述第一类对所述指令进行重构,根据重构后的指令生成的;所述对所述指令进行重构表征若所述指令中的预设字段为空,则创建所述第一类的一个实例,并将所述实例赋值给所述预设字段,调用所述实例中的新增字段;
调用所述补丁包修复所述修复应用。
4.一种热修复装置,其特征在于,包括:
补丁包生成模块,用于生成待修复应用的补丁包,所述补丁包中的指令通过调用第一类实例中的新增字段来执行对所述新增字段的操作;其中,所述第一类保存有第二类中的新增字段,所述第二类为发生修改的类;
发送模块,用于向服务器发送所述补丁包,以使终端从所述服务器中下载所述补丁包并调用所述补丁包修复所述待修复应用;
所述补丁包生成模块,包括:
子类创建单元,用于根据所述第二类创建所述第一类并在所述第一类中添加所述第二类中的新增字段;
解析单元,用于在使用所述新增字段的方法中确定调用所述新增字段的指令;
重构单元,用于根据所述第一类对所述指令进行重构,并根据重构后的指令生成所述补丁包;
所述重构单元,具体用于获取所述指令中的预设字段;若所述预设字段的值为空,则创建所述第一类的一个实例,并将所述实例赋值给所述预设字段;调用所述实例中的新增字段。
5.根据权利要求4所述的装置,其特征在于,还包括:
插桩模块,用于在对原始安装包进行插桩时,在所述原始安装包中的类中插入预设字段,所述预设字段为所述原始安装包中的字段。
6.一种热修复装置,其特征在于,包括:
接收模块,用于接收服务器发送的待修复应用的补丁包,所述补丁包中方法的指令通过调用第一类实例中的新增字段来执行对所述新增字段的操作;其中,所述第一类保存有第二类中的新增字段,所述第二类为发生修改的类;所述补丁包是终端发送至所述服务器的,所述补丁包是所述终端根据所述第二类创建所述第一类并在所述第一类中添加所述第二类中的新增字段后,在使用所述新增字段的方法中确定调用所述新增字段的指令,并根据所述第一类对所述指令进行重构,根据重构后的指令生成的;所述对所述指令进行重构表征若所述指令中的预设字段为空,则创建所述第一类的一个实例,并将所述实例赋值给所述预设字段,调用所述实例中的新增字段;
修复模块,用于调用所述补丁包修复所述修复应用。
7.一种电子设备,其特征在于,包括:存储器与处理器;
所述存储器,用于存储所述处理器的可执行指令;
所述处理器配置为经由执行所述可执行指令来执行权利要求1-2任一所述的方法或者执行权利要求3所述的方法。
8.一种存储介质,其上存储有计算机程序,其特征在于,包括:该程序被处理器执行时实现权利要求1-2任一所述的方法或者实现权利要求3所述的方法。
CN201910566531.XA 2019-06-27 2019-06-27 热修复方法、装置、电子设备以及存储介质 Active CN110286936B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910566531.XA CN110286936B (zh) 2019-06-27 2019-06-27 热修复方法、装置、电子设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910566531.XA CN110286936B (zh) 2019-06-27 2019-06-27 热修复方法、装置、电子设备以及存储介质

Publications (2)

Publication Number Publication Date
CN110286936A CN110286936A (zh) 2019-09-27
CN110286936B true CN110286936B (zh) 2023-04-25

Family

ID=68007757

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910566531.XA Active CN110286936B (zh) 2019-06-27 2019-06-27 热修复方法、装置、电子设备以及存储介质

Country Status (1)

Country Link
CN (1) CN110286936B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111773715A (zh) * 2020-08-03 2020-10-16 网易(杭州)网络有限公司 任务执行方法及装置、设备和介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108920170A (zh) * 2018-05-15 2018-11-30 玩咖欢聚文化传媒(北京)有限公司 安卓产品安装包的动态修复方法、终端、介质以及系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070074187A1 (en) * 2005-09-29 2007-03-29 O'brien Thomas E Method and apparatus for inserting code fixes into applications at runtime
US10803237B2 (en) * 2016-09-28 2020-10-13 Netsuite, Inc. Systems and methods for data entry into a region of a display
CN106502725B (zh) * 2016-09-30 2019-08-20 歌尔科技有限公司 应用程序的升级方法、设备及电子设备
CN106874195A (zh) * 2017-01-18 2017-06-20 环球智达科技(北京)有限公司 一种针对android应用的bug修复和持续交付方案
CN106951280A (zh) * 2017-02-28 2017-07-14 努比亚技术有限公司 移动终端及应用修复方法
CN107133068A (zh) * 2017-04-18 2017-09-05 努比亚技术有限公司 移动终端及应用修复方法
CN108304213A (zh) * 2018-01-11 2018-07-20 口碑(上海)信息技术有限公司 运行程序的热修复方法及装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108920170A (zh) * 2018-05-15 2018-11-30 玩咖欢聚文化传媒(北京)有限公司 安卓产品安装包的动态修复方法、终端、介质以及系统

Also Published As

Publication number Publication date
CN110286936A (zh) 2019-09-27

Similar Documents

Publication Publication Date Title
US7334162B1 (en) Dynamic distribution of test execution
CN107967139B (zh) 游戏的热更新方法及装置
CN110442327B (zh) 一种应用程序构建方法、装置、服务器
CN104866293B (zh) 一种对Android应用程序扩展功能的方法及装置
CN105357323A (zh) 一种app中html5页面调试方法及装置
CN109558320B (zh) 系统测试方法、装置、系统、设备及计算机可读存储介质
CN109933350B (zh) 在应用中嵌入代码的方法、装置及电子设备
CN104834555A (zh) 调用功能模块的方法、相关装置及装置修复方法
CN110543324B (zh) 一种应用程序的插件增量更新方法及装置
CN109104368B (zh) 一种请求连接方法、装置、服务器及计算机可读存储介质
CN112769706B (zh) 组件化路由方法及系统
CN111597110A (zh) 页面测试方法、装置、电子设备及存储介质
CN112882732A (zh) 一种软件开发工具包sdk中功能代码的更新方法和装置
CN110286936B (zh) 热修复方法、装置、电子设备以及存储介质
CN108345508B (zh) 接口调用测试方法和装置
CN108664343B (zh) 一种微服务的有状态调用方法及装置
CN111722857A (zh) 软件开发工具包的更新方法、装置、电子设备及存储介质
CN109918112A (zh) 游戏热更新方法、装置和存储介质
CN112650689A (zh) 测试方法、装置、电子设备及存储介质
CN109388770B (zh) Web页面生成方法及装置
CN111857985A (zh) 浏览器插件的调用方法、装置、存储介质及终端
CN116450165A (zh) 一种快速搭建环境及部署程序的方法、系统、终端及存储介质
CN110543323A (zh) 一种应用程序修复方法及装置
CN106569841A (zh) 一种文件加载方法和装置
CN110457151B (zh) 热修复方法、装置及可读存储介质

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