CN114064092A - 应用程序热更新方法、装置、设备及存储介质 - Google Patents

应用程序热更新方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114064092A
CN114064092A CN202111637490.2A CN202111637490A CN114064092A CN 114064092 A CN114064092 A CN 114064092A CN 202111637490 A CN202111637490 A CN 202111637490A CN 114064092 A CN114064092 A CN 114064092A
Authority
CN
China
Prior art keywords
programming module
target
time
module
programming
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.)
Pending
Application number
CN202111637490.2A
Other languages
English (en)
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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202111637490.2A priority Critical patent/CN114064092A/zh
Publication of CN114064092A publication Critical patent/CN114064092A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种应用程序热更新方法、装置、设备及存储介质,涉及数据处理技术领域。该应用程序热更新方法包括:获取应用程序的已加载编程模块;根据应用程序的启动时间和应用程序中各编程模块的文件修改时间,从已加载编程模块中确定文件修改时间和启动时间的大小关系满足预设条件的编程模块为第一目标编程模块;将第一目标编程模块添加至待更新的编程模块集合中;根据待更新的编程模块集合中各目标编程模块的代码文件,对各目标编程模块进行热更新。第一目标编程模块为需要进行热更新的编程模块,实现了自动确定需要进行热更新的编程模块,可以高效的筛选出需要进行热更新的编程模块,进而提高了对于应用程序中编程模块进行热更新的效率。

Description

应用程序热更新方法、装置、设备及存储介质
技术领域
本发明涉及数据处理技术领域,具体而言,涉及一种应用程序热更新方法、装置、设备及存储介质。
背景技术
热更新技术是指在不重启应用程序的情况下,在应用程序运行的过程中,更新应用程序中的代码或者数据,使更新的代码和数据生效的方法。因其方便快捷的特点,被广泛用于已上线项目及开发生产环境中。
相关技术中,针对python(一种计算机编程语言)应用程序,经过人工筛选确认需要进行热更新的编程模块,编程模块中可以包括代码和数据,将需要热更新的编程模块弹出后,再次导入实现对于应用程序的热更新。
但是,相关技术中,需要人工筛选需要进行热更新的编程模块,降低了应用程序热更新的效率。
发明内容
本发明的目的在于,针对上述现有技术中的不足,提供一种应用程序热更新方法、装置、设备及存储介质,以便解决相关技术中,需要人工筛选需要进行热更新的编程模块,降低了应用程序热更新的效率的问题。
为实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种应用程序热更新方法,所述方法包括:
获取应用程序的已加载编程模块;
根据所述应用程序的启动时间和所述应用程序中各编程模块的文件修改时间,从所述已加载编程模块中确定文件修改时间和所述启动时间的大小关系满足预设条件的编程模块为第一目标编程模块;
将所述第一目标编程模块添加至待更新的编程模块集合中;
根据所述待更新的编程模块集合中各目标编程模块的代码文件,对所述各目标编程模块进行热更新。
可选的,所述根据所述应用程序的启动时间和所述应用程序中各编程模块的文件修改时间,从所述已加载编程模块中确定文件修改时间和所述启动时间的大小关系满足预设条件的编程模块为第一目标编程模块,包括:
根据所述启动时间和所述各编程模块的文件修改时间,从所述已加载编程模块中确定文件修改时间超过所述启动时间的编程模块为所述第一目标编程模块。
可选的,所述根据所述应用程序的启动时间和所述应用程序中各编程模块的文件修改时间,从所述已加载编程模块中确定文件修改时间和所述启动时间的大小关系满足预设条件的编程模块为第一目标编程模块,包括:
根据所述应用程序的启动时间和预设宽容时间,计算目标时间;
从所述已加载的编程模块中确定文件修改时间超过所述目标时间的编程模块为所述第一目标编程模块。
可选的,所述根据所述应用程序的启动时间和预设宽容时间,计算目标时间,包括:
根据所述启动时间和所述预设宽容时间的差值,计算所述目标时间。
可选的,所述根据所述待更新的编程模块集合中各目标编程模块的代码文件,对所述各目标编程模块进行热更新之前,所述方法还包括:
确定所述应用程序中注册的采用元类的编程模块为第二目标编程模块;
将所述第二目标编程模块加入至所述待更新的编程模块集合中。
可选的,所述根据所述待更新的编程模块集合中各目标编程模块的代码文件,对所述各目标编程模块进行热更新,包括:
将所述各目标编程模块从所述应用程序的系统模块列表中删除;
重新导入所述各目标编程模块的代码文件,以重新加载所述各目标编程模块。
可选的,所述根据所述待更新的编程模块集合中各目标编程模块的代码文件,对所述各目标编程模块进行热更新之后,所述方法还包括:
重置所述应用程序的启动时间为当前时间。
第二方面,本发明实施例还提供了一种应用程序热更新装置,所述装置包括:
获取模块,用于获取应用程序的已加载编程模块;
确定模块,用于根据所述应用程序的启动时间和所述应用程序中各编程模块的文件修改时间,从所述已加载编程模块中确定文件修改时间和所述启动时间的大小关系满足预设条件的编程模块为第一目标编程模块;
添加模块,用于将所述第一目标编程模块添加至待更新的编程模块集合中;
热更新模块,用于根据所述待更新的编程模块集合中各目标编程模块的代码文件,对所述各目标编程模块进行热更新。
可选的,所述确定模块,还用于根据所述启动时间和所述各编程模块的文件修改时间,从所述已加载编程模块中确定文件修改时间超过所述启动时间的编程模块为所述第一目标编程模块。
可选的,所述确定模块,还用于根据所述应用程序的启动时间和预设宽容时间,计算目标时间;从所述已加载的编程模块中确定文件修改时间超过所述目标时间的编程模块为所述第一目标编程模块。
可选的,所述确定模块,还用于根据所述启动时间和所述预设宽容时间的差值,计算所述目标时间。
可选的,所述装置还包括:
第一确定模块,用于确定所述应用程序中注册的采用元类的编程模块为第二目标编程模块;
加入模块,用于将所述第二目标编程模块加入至所述待更新的编程模块集合中。
可选的,所述热更新模块,还用于将所述各目标编程模块从所述应用程序的系统模块列表中删除;重新导入所述各目标编程模块的代码文件,以重新加载所述各目标编程模块。
可选的,所述装置还包括:
重置模块,用于重置所述应用程序的启动时间为当前时间。
第三方面,本发明实施例还提供了一种处理设备,包括:存储器和处理器,所述存储器存储有所述处理器可执行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任一项所述的应用程序热更新方法。
第四方面,本发明实施例还提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被读取并执行时,实现上述第一方面任一项所述的应用程序热更新方法。
本发明的有益效果是:综上所述,本发明实施例提供一种应用程序热更新方法,包括:获取应用程序的已加载编程模块;根据应用程序的启动时间和应用程序中各编程模块的文件修改时间,从已加载编程模块中确定文件修改时间和启动时间的大小关系满足预设条件的编程模块为第一目标编程模块;将第一目标编程模块添加至待更新的编程模块集合中;根据待更新的编程模块集合中各目标编程模块的代码文件,对各目标编程模块进行热更新。根据应用程序的启动时间和应用程序中各编程模块的文件修改时间,从已加载编程模块中确定文件修改时间和启动时间的大小关系满足预设条件的编程模块为第一目标编程模块,第一目标编程模块为需要进行热更新的编程模块,实现了自动确定需要进行热更新的编程模块,可以高效的筛选出需要进行热更新的编程模块,进而提高了对于应用程序中编程模块进行热更新的效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的一种应用程序热更新方法的流程示意图;
图2为本发明实施例提供的一种应用程序热更新方法的流程示意图;
图3为本发明实施例提供的一种应用程序热更新方法的流程示意图;
图4为本发明实施例提供的一种应用程序热更新方法的流程示意图;
图5为本发明实施例提供的一种应用程序热更新装置的结构示意图;
图6为本发明实施例提供的一种处理设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要说明的是,若出现术语“上”、“下”、等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该申请产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
此外,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在不冲突的情况下,本申请的实施例中的特征可以相互结合。
以下先对本申请实施例中所涉及的名词进行解释说明。
Python:一种编程语言,游戏脚本语言常采用这种语言。
热更新:在不重启应用程序的情况下,在应用程序运行时,更新应用程序中的代码或者数据,使得修改后的应用程序生效的方法。
C/S架构:一种典型的两层架构,其全称是Client(客户端)/Server(服务端),即客户端服务器端架构。
元类:即metaclass,是python的一种编程语言特性。通过构写类创建时的代码,为衍生类提供相同的特性。
IDE:程序开发时使用的集成开发环境,如pycharm、vs code等开发环境。
应用程序的更新方式包括普通更新和热更新。普通更新需要重启应用程序,而热更新技术是指在不重启应用程序的情况下,在应用程序运行的过程中,更新应用程序中的代码或者数据,使更新的代码和数据生效的方法。因热更新方便快捷的特点,被广泛用于已上线项目及开发生产环境中。
相关技术中,针对python应用程序,经过人工筛选确认需要进行热更新的编程模块,编程模块中可以包括代码和数据,将需要热更新的编程模块弹出后,再次导入实现对于应用程序的热更新。但是,相关技术中,需要人工筛选需要进行热更新的编程模块,降低了应用程序热更新的效率。
针对相关技术中,所存在的上述技术问题,本申请实施例提供一种应用程序热更新方法,根据应用程序的启动时间和应用程序中各编程模块的文件修改时间,从已加载编程模块中确定文件修改时间和启动时间的大小关系满足预设条件的编程模块为第一目标编程模块,第一目标编程模块为需要进行热更新的编程模块,实现了自动确定需要进行热更新的编程模块,可以高效的筛选出需要进行热更新的编程模块,进而提高了对于应用程序中编程模块进行热更新的效率。而且,通过启动时间和文件修改时间的对比,从已加载的模块中筛选出需要热更新的编程模块,极大得减少了需要热更新模块的数量,从而进一步减少了热更新耗时。
本申请实施例提供的一种应用程序热更新方法,其执行主体可以为处理设备,该处理设备可以为终端,也可以为服务器,还可以为其他运行有应用程序且具备处理功能的设备,本申请实施例对此不进行具体限制。
需要说明的是,若处理设备为终端,终端可以为下述中的任一项:台式电脑、笔记本电脑、平板电脑、智能手机、游戏机等等。
以下以处理设备为执行主体,对本申请实施例提供的一种应用程序热更新方法进行解释说明。
图1为本发明实施例提供的一种应用程序热更新方法的流程示意图,如图1所示,该方法可以包括:
S101、获取应用程序的已加载编程模块。
其中,应用程序可以为采用预设编程语言编写的应用程序。可选的,预设编程语言可以为python。当预设编程语言可以为python,一个python脚本文件可以作为一个编程模块。
在一些实施方式中,处理设备可以采用预设模块,获取应用程序的已加载编程模块。其中,预设模块可以为sys模块,sys模块包括了一组非常实用的服务,内含很多函数方法和变量,用来处理Python运行时配置以及资源,从而可以与前当程序之外的系统环境交互。
可选的,获取的已加载编程模块,可以存储在预设模块的预设列表中。示例的,若预设模块为sys模块,预设列表可以为sys.modules。
需要说明的是,在热更新时还未加载的模块无需加载,等待后续按需加载,处理设备自动使用最新加载的编程模块。
S102、根据应用程序的启动时间和应用程序中各编程模块的文件修改时间,从已加载编程模块中确定文件修改时间和启动时间的大小关系满足预设条件的编程模块为第一目标编程模块。
其中,各个编程模块均具有对应文件,文件中可以记录有编程模块对应的编程代码、数据。当研发人员需要对编程模块修改时,可以对编程模块对应的文件进行修改,各文件具有对应的修改时间。
在一些实施方式中,遍历各个已加载编程模块的文件,判断各文件修改时间和启动时间之间的大小关系,若文件修改时间和启动时间的大小关系满足预设条件,则确定该文件修改时间对应的文件,将该文件对应的已加载编程模块作为第一目标编程模块。
在本申请实施例中,应用程序的启动时间可以为应用程序重新启动的时间,或者应用程序最近一次进行热更新的时间;其中,若应用程序未进行过热更新,应用程序的启动时间可以为应用程序重新启动的时间。
S103、将第一目标编程模块添加至待更新的编程模块集合中。
需要说明的是,待更新的编程模块集合中编程模块可以称为:目标编程模块,目标编程模块中可以包括:第一目标编程模块,目标编程模块均为需要进行热更新的模块。
S104、根据待更新的编程模块集合中各目标编程模块的代码文件,对各目标编程模块进行热更新。
其中,目标编程模块中的编程代码、数据均未修改,各目标编程模块的代码文件中的编程代码、数据均是修改后的。
在一些实施方式中,处理设备可以根据待更新的编程模块集合中各目标编程模块的代码文件中的修改后的编程代码、数据,对目标编程模块进行热更新。
另外,实现了对应用程序中的目标编程模块进行热更新,即实现了对于应用程序的热更新。
综上所述,本发明实施例提供一种应用程序热更新方法,包括:获取应用程序的已加载编程模块;根据应用程序的启动时间和应用程序中各编程模块的文件修改时间,从已加载编程模块中确定文件修改时间和启动时间的大小关系满足预设条件的编程模块为第一目标编程模块;将第一目标编程模块添加至待更新的编程模块集合中;根据待更新的编程模块集合中各目标编程模块的代码文件,对各目标编程模块进行热更新。根据应用程序的启动时间和应用程序中各编程模块的文件修改时间,从已加载编程模块中确定文件修改时间和启动时间的大小关系满足预设条件的编程模块为第一目标编程模块,第一目标编程模块为需要进行热更新的编程模块,实现了自动确定需要进行热更新的编程模块,可以高效的筛选出需要进行热更新的编程模块,进而提高了对于应用程序中编程模块进行热更新的效率。
而且,通过启动时间和文件修改时间的对比,从已加载的模块中筛选出需要热更新的编程模块,极大得减少了需要热更新模块的数量,从而进一步减少了热更新耗时。
可选的,上述S102中根据应用程序的启动时间和应用程序中各编程模块的文件修改时间,从已加载编程模块中确定文件修改时间和启动时间的大小关系满足预设条件的编程模块为第一目标编程模块的过程,可以包括:
根据启动时间和各编程模块的文件修改时间,从已加载编程模块中确定文件修改时间超过启动时间的编程模块为第一目标编程模块。
在一些实施方式中,遍历各个已加载编程模块的文件,判断各文件修改时间是否超过启动时间,若文件修改时间超过启动时间,则确定该文件修改时间对应的文件,将该文件对应的已加载编程模块作为目标编程模块。
示例的,编程模块a具有对应的文件a,启动时间可以为15:00,文件a修改时间以为15:05,则确定文件a修改时间超过启动时间,则将编程模块a可以作为第一目标编程模块。
可选的,启动时间可以称为start_time;文件修改时间可以称为modify_time。
综上所述,从已加载编程模块中确定文件修改时间超过启动时间的编程模块为第一目标编程模块,可以快速的筛选出在启动时间后对应文件发生修改的编程模块,这些编程模块即为需要进行热更新的第一目标编程模块,实现快速、高效的确定出需要进行热更新的第一目标编程模块。
可选的,图2为本发明实施例提供的一种应用程序热更新方法的流程示意图,如图2所示,上述S102中根据应用程序的启动时间和应用程序中各编程模块的文件修改时间,从已加载编程模块中确定文件修改时间和启动时间的大小关系满足预设条件的编程模块为第一目标编程模块的过程,可以包括:
S201、根据应用程序的启动时间和预设宽容时间,计算目标时间。
在本申请实施例中,一些应用程序开发时所使用的集成环境存在内存缓冲,会延迟保存编程代码对应的文件内容。基于根据应用程序的启动时间和预设宽容时间,计算目标时间,实现了一定的时间宽容度。
其中,集成环境可以为IDE。
在一些实施方式中,处理设备可以采用预设目标时间计算规则,根据应用程序的启动时间和预设宽容时间进行计算,得到目标时间。
S202、从已加载的编程模块中确定文件修改时间超过目标时间的编程模块为第一目标编程模块。
在一些实施方式中,遍历各个已加载编程模块的文件,判断各文件修改时间是否超过目标时间,若文件修改时间超过目标时间,则确定该文件修改时间对应的文件,将该文件对应的已加载编程模块作为第一目标编程模块。
综上所述,根据应用程序的启动时间和预设宽容时间,计算目标时间;将已加载的编程模块中文件修改时间超过目标时间的编程模块为第一目标编程模块。加入了一定的时间宽容度,对于延迟保存编程代码对应的文件内容的情形,也可以实现准确、高效的筛选需要进行热更新的模块。
可选的,上述S201中根据应用程序的启动时间和预设宽容时间,计算目标时间的过程,可以包括:
根据启动时间和预设宽容时间的差值,计算目标时间。
其中,预设宽容时间也可以称为预设宽容度,预设宽容度可以根据延迟保存编程代码对应的文件的延迟时长确定,也可以根据经验值进行确定,还可以采用其他方式确定,本申请实施例对此不进行具体限制。
另外,将启动时间减去预设宽容时间,则可以得到目标时间。
在一些实施方式中,用start_time表示启动时间,用x表示预设宽容时间,则目标时间可以表示为:start_time-x。
相应的,用modify_time表示文件修改时间,则start_time–x<modify_time的文件对应的编程模块,可以确定为第一目标编程模块。
需要说明的是,预设宽容时间可以根据应用程序所基于的IDE环境进行确定,不同的IDE环境文件修改后的延迟保存的时间会有不同。根据启动时间和预设宽容时间的差值计算目标时间,可以便于适应可以适应不同的IDE环境,扩展了适用范围。
可选的,图3为本发明实施例提供的一种应用程序热更新方法的流程示意图,如图3所示,上述S104中根据待更新的编程模块集合中各目标编程模块的代码文件,对各目标编程模块进行热更新的过程之前,该方法还可以包括:
S301、确定应用程序中注册的采用元类的编程模块为第二目标编程模块。
在本申请实施例中,由于采用元类的编程模块属于特殊的编程模块,在每次进行热更新时,需要强制更新应用程序中注册的采用元类的编程模块。
S302、将第二目标编程模块加入至待更新的编程模块集合中。
其中,待更新的编程模块集合中可以包括:第一目标编程模块和第二目标编程模块。第一目标编程模块和第二目标编程模块均可以成为目标编程模块。第一目标编程模块和第二目标编程模块均是需要进行热更新的编程模块。
综上所述,确定应用程序中注册的采用元类的编程模块为第二目标编程模块;将第二目标编程模块加入至待更新的编程模块集合中。扩大了热更新的适用范围,使得采用元类的特殊编程模块得以热更新生效,使得不同IDE的生成开发环境得以热更新生效。
可选的,图4为本发明实施例提供的一种应用程序热更新方法的流程示意图,如图4所示,上述S104中根据待更新的编程模块集合中各目标编程模块的代码文件,对各目标编程模块进行热更新的过程,可以包括:
S401、将各目标编程模块从应用程序的系统模块列表中删除。
在本申请实施例中,系统模块列表中可以包括已加载编程模块,目标编程模块为已加载编程模块中需要进行热更新的编程模块,目标编程模块的内容未进行修改,但是目标编程模块对应文件的内容已发生变化,因此,需要将各目标编程模块从应用程序的系统模块列表中删除。
可选的,系统模块列表可以为sys.modules。
S402、重新导入各目标编程模块的代码文件,以重新加载各目标编程模块。
在一些实施方式中,可以采用导入模块,重新导入各目标编程模块的代码文件,以重新加载各目标编程模块。其中,导入模块可以为import语句。
需要说明的是,重新导入各目标编程模块的代码文件中的内容,将修改后的内容进行导入,基于修改后的内容可以得到热更新后的目标编程模块,重新加载的各目标编程模块,即为热更新后的目标编程模块。
示例的,系统模块列表中目标编程模块为a1,对应的代码文件为b1,a1和b1中的内容不同,b1中的内容进行了修改;可以将a1删除,根据b1中的内容重新导入,得到热更新后的目标编程模块a2。
可选的,上述S104中根据待更新的编程模块集合中各目标编程模块的代码文件,对各目标编程模块进行热更新的过程之后,该方法还可以包括:
重置应用程序的启动时间为当前时间。
需要说明的是,重置应用程序的启动时间为当前时间,可以便于下一次的热更新。
在本申请实施例提供的一种应用程序热更新方法,可以适用于已上线的C/S架构,也可以适用于程序开发环境。
其中,对于已上线的C/S架构,客户端和服务端分别在各自环境下进行热更新,实现对于C/S架构高效率的热更新。对于程序开发环境,可以实现快速验证代码和数据的有效性,实现“所写即所得”的效果,可以大量地节省开发测试人员的工作时间,极大地提升工作效率。
综上所述,本发明实施例提供一种应用程序热更新方法,包括:获取应用程序的已加载编程模块;根据应用程序的启动时间和应用程序中各编程模块的文件修改时间,从已加载编程模块中确定文件修改时间和启动时间的大小关系满足预设条件的编程模块为第一目标编程模块;将第一目标编程模块添加至待更新的编程模块集合中;根据待更新的编程模块集合中各目标编程模块的代码文件,对各目标编程模块进行热更新。根据应用程序的启动时间和应用程序中各编程模块的文件修改时间,从已加载编程模块中确定文件修改时间和启动时间的大小关系满足预设条件的编程模块为第一目标编程模块,第一目标编程模块为需要进行热更新的编程模块,实现了自动确定需要进行热更新的编程模块,可以高效的筛选出需要进行热更新的编程模块,进而提高了对于应用程序中编程模块进行热更新的效率。
而且,通过启动时间和文件修改时间的对比,从已加载的模块中筛选出需要热更新的编程模块,极大得减少了需要热更新模块的数量,从而进一步减少了热更新耗时。
另外,极大地缩短了生产开发环境下热更新的时间,且项目工程规模越庞大,缩短热更新时耗的效果更为明显。还扩大了热更新的适用范围,使得元类等特殊编程模块得以热更新生效,使得不同IDE的生成开发环境得以热更新生效。
下述对用以执行本申请所提供的应用程序热更新方法的应用程序热更新装置、处理设备及存储介质等进行说明,其具体的实现过程以及技术效果参见上述应用程序热更新方法的相关内容,下述不再赘述。
图5为本发明实施例提供的一种应用程序热更新装置的结构示意图,如图5所示,该装置可以包括:
获取模块501,用于获取应用程序的已加载编程模块;
确定模块502,用于根据所述应用程序的启动时间和所述应用程序中各编程模块的文件修改时间,从所述已加载编程模块中确定文件修改时间和所述启动时间的大小关系满足预设条件的编程模块为第一目标编程模块;
添加模块503,用于将所述第一目标编程模块添加至待更新的编程模块集合中;
热更新模块504,用于根据所述待更新的编程模块集合中各目标编程模块的代码文件,对所述各目标编程模块进行热更新。
可选的,所述确定模块502,还用于根据所述启动时间和所述各编程模块的文件修改时间,从所述已加载编程模块中确定文件修改时间超过所述启动时间的编程模块为所述第一目标编程模块。
可选的,所述确定模块502,还用于根据所述应用程序的启动时间和预设宽容时间,计算目标时间;从所述已加载的编程模块中确定文件修改时间超过所述目标时间的编程模块为所述第一目标编程模块。
可选的,所述确定模块502,还用于根据所述启动时间和所述预设宽容时间的差值,计算所述目标时间。
可选的,所述装置还包括:
第一确定模块,用于确定所述应用程序中注册的采用元类的编程模块为第二目标编程模块;
加入模块,用于将所述第二目标编程模块加入至所述待更新的编程模块集合中。
可选的,所述热更新模块504,还用于将所述各目标编程模块从所述应用程序的系统模块列表中删除;重新导入所述各目标编程模块的代码文件,以重新加载所述各目标编程模块。
可选的,所述装置还包括:
重置模块,用于重置所述应用程序的启动时间为当前时间。
上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital singnal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。
图6为本发明实施例提供的一种处理设备的结构示意图,如图6所示,该处理设备包括:处理器601、存储器602。
存储器602用于存储程序,处理器601调用存储器602存储的程序,以执行上述方法实施例。具体实现方式和技术效果类似,这里不再赘述。
可选地,本发明还提供一种程序产品,例如计算机可读存储介质,包括程序,该程序在被处理器执行时用于执行上述方法实施例。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种应用程序热更新方法,其特征在于,所述方法包括:
获取应用程序的已加载编程模块;
根据所述应用程序的启动时间和所述应用程序中各编程模块的文件修改时间,从所述已加载编程模块中确定文件修改时间和所述启动时间的大小关系满足预设条件的编程模块为第一目标编程模块;
将所述第一目标编程模块添加至待更新的编程模块集合中;
根据所述待更新的编程模块集合中各目标编程模块的代码文件,对所述各目标编程模块进行热更新。
2.根据权利要求1所述的方法,其特征在于,所述根据所述应用程序的启动时间和所述应用程序中各编程模块的文件修改时间,从所述已加载编程模块中确定文件修改时间和所述启动时间的大小关系满足预设条件的编程模块为第一目标编程模块,包括:
根据所述启动时间和所述各编程模块的文件修改时间,从所述已加载编程模块中确定文件修改时间超过所述启动时间的编程模块为所述第一目标编程模块。
3.根据权利要求1所述的方法,其特征在于,所述根据所述应用程序的启动时间和所述应用程序中各编程模块的文件修改时间,从所述已加载编程模块中确定文件修改时间和所述启动时间的大小关系满足预设条件的编程模块为第一目标编程模块,包括:
根据所述应用程序的启动时间和预设宽容时间,计算目标时间;
从所述已加载的编程模块中确定文件修改时间超过所述目标时间的编程模块为所述第一目标编程模块。
4.根据权利要求3所述的方法,其特征在于,所述根据所述应用程序的启动时间和预设宽容时间,计算目标时间,包括:
根据所述启动时间和所述预设宽容时间的差值,计算所述目标时间。
5.根据权利要求1所述的方法,其特征在于,所述根据所述待更新的编程模块集合中各目标编程模块的代码文件,对所述各目标编程模块进行热更新之前,所述方法还包括:
确定所述应用程序中注册的采用元类的编程模块为第二目标编程模块;
将所述第二目标编程模块加入至所述待更新的编程模块集合中。
6.根据权利要求1所述的方法,其特征在于,所述根据所述待更新的编程模块集合中各目标编程模块的代码文件,对所述各目标编程模块进行热更新,包括:
将所述各目标编程模块从所述应用程序的系统模块列表中删除;
重新导入所述各目标编程模块的代码文件,以重新加载所述各目标编程模块。
7.根据权利要求1-6任一所述的方法,其特征在于,所述根据所述待更新的编程模块集合中各目标编程模块的代码文件,对所述各目标编程模块进行热更新之后,所述方法还包括:
重置所述应用程序的启动时间为当前时间。
8.一种应用程序热更新装置,其特征在于,所述装置包括:
获取模块,用于获取应用程序的已加载编程模块;
确定模块,用于根据所述应用程序的启动时间和所述应用程序中各编程模块的文件修改时间,从所述已加载编程模块中确定文件修改时间和所述启动时间的大小关系满足预设条件的编程模块为第一目标编程模块;
添加模块,用于将所述第一目标编程模块添加至待更新的编程模块集合中;
热更新模块,用于根据所述待更新的编程模块集合中各目标编程模块的代码文件,对所述各目标编程模块进行热更新。
9.一种处理设备,其特征在于,包括:存储器和处理器,所述存储器存储有所述处理器可执行的计算机程序,所述处理器执行所述计算机程序时实现上述权利要求1-7任一项所述的应用程序热更新方法。
10.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被读取并执行时,实现上述权利要求1-7任一项所述的应用程序热更新方法。
CN202111637490.2A 2021-12-29 2021-12-29 应用程序热更新方法、装置、设备及存储介质 Pending CN114064092A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111637490.2A CN114064092A (zh) 2021-12-29 2021-12-29 应用程序热更新方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111637490.2A CN114064092A (zh) 2021-12-29 2021-12-29 应用程序热更新方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN114064092A true CN114064092A (zh) 2022-02-18

Family

ID=80230533

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111637490.2A Pending CN114064092A (zh) 2021-12-29 2021-12-29 应用程序热更新方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114064092A (zh)

Similar Documents

Publication Publication Date Title
CN107832099B (zh) 一种客户端版本兼容的方法、装置及存储介质
CN107291481B (zh) 一种组件更新方法、装置和系统
CN111026568A (zh) 数据和任务关系构建方法、装置、计算机设备及存储介质
CN110209520B (zh) 一种提高ssd测试效率的方法、装置、计算机设备及存储介质
CN112765023A (zh) 测试用例生成方法、装置
CN110162344B (zh) 一种隔离限流的方法、装置、计算机设备及可读存储介质
CN108415998B (zh) 应用依赖关系更新方法、终端、设备及存储介质
CN113504918A (zh) 设备树配置优化方法、装置、计算机设备和存储介质
CN111694733A (zh) 一种软件开发工具包sdk的api测试方法以及测试装置
CN111414207A (zh) 一种页面搭建方法、装置和设备
CN106293790B (zh) 基于Firefox操作系统的应用程序升级方法和装置
CN111125721A (zh) 一种进程启动的控制方法、计算机设备和可读存储介质
CN107633080B (zh) 一种用户任务处理方法及装置
CN108446144B (zh) 一种应用程序启动方法、装置、终端及存储介质
CN114064092A (zh) 应用程序热更新方法、装置、设备及存储介质
CN116339908A (zh) 虚拟机启动方法、装置、计算机设备和存储介质
CN112988277B (zh) 规则文件加载方法、装置、服务器及介质
CN111324373A (zh) 多个工程文件上传代码仓库的方法及装置、计算设备
CN110659125A (zh) 一种分析任务执行方法、装置、系统及电子设备
CN113971074A (zh) 事务处理方法、装置、电子设备及计算机可读存储介质
CN110688430B (zh) 一种获得数据旁路的方法、装置及电子设备
CN108519885B (zh) 一种基于Flash的公共资源加载方法及装置
CN113986385A (zh) 项目字体库加载方法、装置、电子设备及存储介质
CN110874238A (zh) 一种线上业务更新方法及其装置
CN105893092B (zh) Com组件处理方法和装置

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