CN115964061A - 插件更新方法、装置、电子设备和计算机可读存储介质 - Google Patents
插件更新方法、装置、电子设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN115964061A CN115964061A CN202111187318.1A CN202111187318A CN115964061A CN 115964061 A CN115964061 A CN 115964061A CN 202111187318 A CN202111187318 A CN 202111187318A CN 115964061 A CN115964061 A CN 115964061A
- Authority
- CN
- China
- Prior art keywords
- plug
- development
- package
- information
- updating
- 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
Links
Images
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明实施例公开了一种插件更新方法、装置、电子设备和计算机可读存储介质;本发明实施例在获取针对开发插件的插件信息后,根据所述插件信息,对开发插件的更新状态进行检测,得到开发插件的当前更新状态,当当前更新状态为需要更新时,基于插件信息,获取开发插件的目标插件包,然后,在目标插件包中筛选出业务逻辑代码,并基于业务逻辑代码对开发插件的当前插件包进行更新;该方案可以提升插件更新的更新效率。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种插件更新方法、装置、电子设备和计算机可读存储介质。
背景技术
近年来,随着互联网技术的飞速发展,越来越多的应用程序被开发出来。在开发这些应用程序的过程中,往往会用到开发平台上的一些插件。在对这一类插件进行更新,往往需要通过开发平台的插件管理器来更新这些插件。
在对现有技术的研究和实践过程中,本发明的发明人发现,通过插件管理器来更新插件时,往往需要插件使用者手动更新插件,另外,插件管理器管理的这些插件在更新之前还需要通过插件平台进行审核,从而影像插件的迭代效率,因此,导致插件更新的更新效率较低。
发明内容
本发明实施例提供一种插件更新方法、装置、电子设备和计算机可读存储介质,可以提高插件更新的更新效率。
一种插件更新方法,包括:
获取针对开发插件的插件信息,所述开发插件为运行在预设编程语言开发的集成环境下的插件;
根据所述插件信息,对所述开发插件的更新状态进行检测,得到所述开发插件的当前更新状态;
当所述当前更新状态为需要更新时,基于所述插件信息,获取所述开发插件的目标插件包;
在所述目标插件包中筛选出业务逻辑代码,并基于所述业务逻辑代码对所述开发插件的当前插件包进行更新。
相应的,本发明实施例提供一种插件更新装置,包括:
第一获取单元,用于获取针对开发插件的插件信息,所述开发插件为运行在预设编程语言开发的集成环境下的插件;
检测单元,用于根据所述插件信息,对所述开发插件的更新状态进行检测,得到所述开发插件的当前更新状态;
第二获取单元,用于当所述当前更新状态为需要更新时,基于所述插件信息,获取所述开发插件的目标插件包;
更新单元,用于在所述目标插件包中筛选出业务逻辑代码,并基于所述业务逻辑代码对所述开发插件的当前插件包进行更新。
可选的,在一些实施例中,所述检测单元,具体可以用于在所述插件信息中识别出所述开发插件的目标版本信息;基于所述目标版本信息,确定所述开发插件的当前更新状态。
可选的,在一些实施例中,所述检测单元,具体可以用于获取所述开发插件的当前版本信息,并将所述目标版本信息与当前版本信息进行对比;当所述目标版本信息与当前版本信息相同时,确定所述开发插件的当前更新状态为不需要更新;当所述目标版本信息与当前版本信息不同时,确定所述开发插件的当前更新状态为需要更新。
可选的,在一些实施例中,所述更新单元,具体可以用于在所述开发插件的当前插件包中识别出代码存储区域和代码备份区域;在所述代码存储区域中提取出历史业务逻辑代码,并将所述历史业务逻辑代码移动至所述代码备份区域;将所述业务逻辑代码添加至所述代码存储区域,得到更新后开发插件。
可选的,在一些实施例中,插件更新装置还可以包括热加载单元,所述更热加载单元,具体可以用于获取所述历史业务逻辑代码对应的历史对象实例;基于所述业务逻辑代码对所述历史对象实例进行更新,以便热加载所述更新后开发插件。
可选的,在一些实施例中,所述热加载单元,具体可以用于对所述业务逻辑代码进行编译,得到目标类文件;加载所述目标类文件,并创建所述目标类文件对应的目标对象实例;基于所述目标对象实例对所述历史对象实例进行更新,以便热加载所述更新后开发插件。
可选的,在一些实施例中,所述第二获取单元,具体可以用于对所述开发插件的运行状态进行检测;当运行状态为未运行时,根据所述插件信息,获取所述开发插件的初始插件包,并对所述初始插件包进行完整性校验;当所述初始插件包的完整性校验通过时,将所述初始插件包作为所述目标插件包。
此外,本发明实施例还提供一种电子设备,包括处理器和存储器,所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序实现本发明实施例提供的插件更新方法。
此外,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本发明实施例所提供的任一种插件更新方法中的步骤。
本发明实施例在获取针对开发插件的插件信息后,根据所述插件信息,对开发插件的更新状态进行检测,得到开发插件的当前更新状态,当当前更新状态为需要更新时,基于插件信息,获取开发插件的目标插件包,然后,在目标插件包中筛选出业务逻辑代码,并基于业务逻辑代码对开发插件的当前插件包进行更新;由于该方案通过获取开发插件的插件信息之后,检测开发插件的更新状态,在需要更新时,可以自动获取目标插件包对开发插件进行更新,无须手动更新,从而可以提升插件更新的更新效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的插件更新方法的场景示意图;
图2是本发明实施例提供的插件更新方法的流程示意图;
图3是本发明实施例提供的开发插件的插件包的结构示意图;
图4是本发明实施例提供的开发插件自动更新的流程示意图;
图5是本发明实施例提供的插件更新方法的另一流程示意图;
图6是本发明实施例提供的插件更新装置的结构示意图;
图7是本发明实施例提供的插件更新装置的另一结构示意图;
图8是本发明实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种插件更新方法、装置和计算机可读存储介质。其中,该插件更新装置可以集成在电子设备中,该电子设备可以是服务器,也可以是终端等设备。
其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、网络加速服务(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
例如,参见图1,以插件更新装置集成在电子设备中为例,电子设备在获取针对开发插件的插件信息后,根据所述插件信息,对开发插件的更新状态进行检测,得到开发插件的当前更新状态,当当前更新状态为需要更新时,基于插件信息,获取开发插件的目标插件包,然后,在目标插件包中筛选出业务逻辑代码,并基于业务逻辑代码对开发插件的当前插件包进行更新,进而提升插件更新的更新效率。
以下分别进行详细说明。需要说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
本实施例将从插件更新装置的角度进行描述,该插件更新装置具体可以集成在电子设备中,该电子设备可以是服务器,也可以是终端等设备;其中,该终端可以包括平板电脑、笔记本电脑、以及个人计算机(PC,Personal Computer)、可穿戴设备、虚拟现实设备或其他可以更新插件的智能设备等设备。
一种插件更新方法,包括:
获取针对开发插件的插件信息,该开发插件为运行在预设编程语言开发的集成环境下的插件,根据插件信息,对开发插件的更新状态进行检测,得到开发插件的当前更新状态,当当前更新状态为需要更新时,基于插件信息,获取开发插件的目标插件包,在目标插件包中筛选出业务逻辑代码,并基于业务逻辑代码对开发插件的当前插件包进行更新。
如图2所示,该插件更新方法的具体流程如下:
101、获取针对开发插件的插件信息。
其中,开发插件可以为运行在预设编程语言开发的集成环境下的插件,与预设编程语言为java为例,该开发插件就可以为运行在IDEA(java编程语言开发的集成环境)下的IDEA插件,该IDEA插件具体可以为插件开发者基于JetBrain公司的插件开发规范,开发的用于提高开发效率、改善开发过程的面向开发者的工具。
其中,插件信息可以为插件开发者或者开发平台发布的关于开发插件的最新的信息,比如,可以为插件开发者在对开发插件进行更新后发布的插件更新信息,或者,可以为插件开发者将最新版本的开发插件提交至开发平台进行审核的消息,或者,可以为开发平台接收最新版本的开发插件的信息或者,还可以为开发平台对最新版本的开发插件审核通过的信息。
其中,获取插件信息的方式可以有多种,比如,对开发平台进行监听,当开发平台启动时,加载当前插件包中的服务管理代码,以启动该服务管理代码对应的包管理服务,通过包管理服务接收推送信息,在推送信息中筛选出该开发插件的插件信息。
其中,通过包管理服务接收推送信息,并在推送信息中筛选出该开发插件的插件信息的方式可以有多种,比如,可以接收该开发插件的开发者对应的插件服务器发送的第一推送信息,并在第一推送信息中筛选出插件信息,或者,还可以接收开发平台发送的第二推送信息,并在第二推送信息中筛选出插件信息。
其中,接收第一推送信息,并在第一推送信息中筛选出插件信息的方式可以有多种,比如,当开发插件的开发者开发出最新版本的开发插件时,可以接收插件开发者对应的插件服务器发送的最新版本的开发插件的信息,得到第一推送信息,在第一推送信息中筛选出最新版本的开发插件的版本的信息、最新版的插件包或者最新版的插件包的存储地址,得到开发插件的插件信息,或者,还可以向插件服务器发送更新请求,接收插件服务器返回的该开发插件最新版的信息,得到第一推送信息,在第一推送信息中筛选出最新版本的开发插件的版本的信息、最新版的插件包或者最新版的插件包的存储地址,得到开发插件的插件信息。
其中,接收插件服务器发送的第一推送信息,就可以不受制于开发平台审核的限制,而通常开发平台对开发插件的审核周期较长,影响了开发插件的迭代效率,而直接接收开发插件的开发者发送的第一推送信息,从而获取该开发插件的插件信息,就不可以不受开发平台的限制,当开发者开发出最新版本的开发插件之后,插件更新装置就可以第一时间接受到该开发者通过插件服务器发送的第一推送信息,进而对开发插件进行更新,从而大大提升开发插件的开发效率。
其中,接收第二推送信息,并在第二推送信息中筛选出插件信息的方式可以有多种,比如,当开发平台接收到最新版本的开发插件或者对最新版本开发插件审核通过时,接收开发平台发送的最新版本的开发插件的信息,得到第二推送信息,在第二推送信息中筛选出最新版本的开发插件的版本信息、最新版的插件包或者最新版的插件包的存储地址,或者,还可以向开发平台发送插件更新请求,接收开发平台根据插件更新请求返回的最新版本的开发插件的信息,得到第二推送信息,在第二推送信息中筛选出最新版本的开发插件的版本信息、最新版的插件包或者最新版的插件包的存储地址。
102、根据插件信息,对开发插件的更新状态进行检测,得到开发插件的当前更新状态。
其中,更新状态可以为指示开发插件是否需要更新的状态信息,更新状态可以包括需要更新和不需要更新。
其中,对开发插件的更新状态进行检测的方式可以有多种,具体可以如下:
例如,可以在插件信息中识别出开发插件的目标版本信息,基于目标版本信息,确定开发插件的当前更新状态。
其中,目标版本信息可以为开发插件最新的版本信息,所谓版本信息可以为开发插件的版本号或者其他指示版本的标识信息。基于目标版本信息,确定开发插件的当前更新状态的方式可以有多种,比如,可以获取开发插件的当前版本信息,并将目标版本信息与当前版本信息进行对比,当目标版本信息与当前版本信息相同时,确定开发插件的当前更新状态为不需要更新,当目标版本信息与当前版本信息不同时,确定开发插件的当前更新状态为需要更新。
103、当当前更新状态为需要更新时,基于插件信息,获取开发插件的目标插件包。
其中,目标插件包可以为最新版的开发插件对应的插件包,所谓插件包可以理解为存储开发插件代码的代码包,该插件包可以包含两个子代码包,一个是包管理服务子代码包和插件服务子代码包,如图3所示,插件服务子代码包是插件的提供的功能业务核心,用于为插件的使用者提供相关的功能和业务(比如依赖关联、创建新工程等),插件服务是由宿主模块和业务模块组成,其中宿主层的主要功能是去响应和触发一些IDEA的基础事件,如菜单的选中、按钮的点击等,相当于是业务逻辑的实现代理。业务逻辑模块是插件真正的业务和功能实现的所在处,也就是在进行插件更新的时候可以去自动更新的地方。包管理服务子代码包中可以包括通信模块和版本管理模块,其中通信模块用于与开发者对应的插件服务器或开发平台的开发服务进行推送信息交互,版本管理模块主要用于对开发插件进行更新状态的检测。
其中,获取开发插件的目标插件包的方式可以有多种,具体可以如下:
例如,可以对开发插件的运行状态进行检测,当运行状态为未运行时,根据插件信息,获取开发插件的初始插件包,并对初始插件包进行完整性校验,当初始插件包的完整性校验通过时,将初始插件包作为目标插件包。
其中,运行状态用于指示开发插件当前是否正在运行的状态,检测开发插件的运行状态的方式可以有多种,比如,可以获取当前运行的运行进程,在运行进程中查询开发插件对应的运行行程,当存在开发插件对应的运行进程时,就可以确定开发插件的运行状态为正在运行,当不存在开发插件对应的运行进程时,就可以确定开发插件的运行状态为未运行,或者,还可以获取开发平台的运行进程,还可以在进程中查询是否存在开发插件对应的子进程,当存在开发插件对应的子进程时,就可以确定开发插件的状态为正在运行,当不存在开发插件对应的子进程时,就可以确定开发插件的状态为未运行。
当开发插件的运行状态为未运行时,就可以根据插件信息,获取开发插件的初始插件包的方式可以有多种,比如,可以在插件信息中查询插件包,当插件信息中存在插件包时,将该插件包作为开发插件的初始插件包,当插件信息中不存在插件包时,在插件信息中识别出插件包的存储地址,基于该存储地址,下载或者接收开发插件的初始插件包。
其中,以目标插件包为core.zip为例,获取该目标插件包的方式可以有多种,比如,可以下载或者接收出初始插件包的时候,在插件安装目录下创建一个core.tmp的缓存文件,当插件的插件包下载完整且通过文件完整性校验后,就可以将core.tmp缓存文件重命名为core.zip文件,将core.zip文件作为开发插件的目标插件包。
可选的,当开发插件的运行状态为正在运行时,就可以缓存插件更新任务,然后,继续检测开发插件的运行状态,直到开发插件的运行状态为未运行,然后,再根据插件信息,获取开发插件的目标插件包。
104、在目标插件包中筛选出业务逻辑代码,并基于业务逻辑代码对开发插件的当前插件包进行更新。
其中,业务逻辑代码可以为实现插件对应的功能或业务的逻辑代码。
其中,筛选出业务逻辑代码的方式可以有多种,具体可以如下:
例如,可以对目标插件包进行解压,得到代码集合,对代码集合中的代码进行分类,基于分类结果,在代码集合中筛选出业务逻辑代码,或者,还可以对目标插件包进行解压,得到解压后插件包,在解压后插件包中识别出代码存储区域,对代码存储区域进行分类,基于分类结果,在代码区域中识别出业务逻辑代码存储区域,提取出业务逻辑代码存储区域中存储的代码作业务逻辑存储代码。
其中,以目标插件包为core.zip文件为例,筛选出业务逻辑代码的方式可以有多种,比如,可以对core.zip文件解压,在解压后文件中筛选出业务逻辑代码文件xxx-plugin.jar,将该业务逻辑代码文件作为目标插件包中的业务逻辑代码。
在筛选出业务逻辑代码之后,便可以基于该业务逻辑代码对开发插件的当前插件包进行更新,更新的方式可以有多种,比如,可以在开发插件的当前插件包中识别出代码存储区域和代码备份区域,在代码存储区域中提取出历史业务逻辑代码,并将历史业务逻辑代码移动至代码备份区域,将业务逻辑代码添加至代码存储区域,得到更新后开发插件。
其中,代码存储区域可以理解为开发插件的当前插件包中存储代码的区域,代码备份区域用于开发插件的当前插件包中用于备份历史业务逻辑代码的区域,该代码备份区域存储的历史业务逻辑代码用于插件的版本回滚,所谓版本回滚可以理解为最新版本的开发插件的业务逻辑代码出现问题,可以调用该代码备份区域存储的历史业务逻辑代码,从而实现开发插件的正常运行。
其中,可以发现对开发插件的更新主要在于对开发插件的当前插件包进行更新,得到更新后插件包,更新后插件包与当前插件包最大的区别就是在于代码存储区域存储的业务逻辑代码不同,也就意味着对插件的更新仅仅只更新代码存储区域的业务逻辑代码,属于增量更新,从而提升更新的速度和更新效率。另外,在增量更新的同时,还对更新前的历史业务逻辑代码进行备份,从而实现插件的版本回滚,保证了开发插件的稳定性。
可选的,在开发插件的当前插件包进行更新之后,还可以实现开发插件更新后的热加载,比如,可以获取历史业务逻辑代码对应的历史对象实例,基于业务逻辑代码对历史对象实例进行更新,以便热加载更新后开发插件。
其中,历史对象实例可以理解为业务逻辑代码中某一个功能的实现类对应的实例,比如,可以为XX.class对象实例。在应用平台开发应用程序的过程中,想要实现某一个功能,就可以直接调用这个功能对应的对象实例。基于业务逻辑代码对历史对象实例进行更新的方式可以有多种,比如,对业务逻辑代码进行编译,得到目标类文件,加载目标类文件,并创建目标类文件对应的目标对象实例,基于目标对象实例对历史对象实例进行更新,以便热加载更新后开发插件。
其中,基于目标对象实例对历史对象实例进行更新的方式可以有多种,比如,在目标对象实例中任意选择一个对象实例,在历史对象实例中筛选出与该对象实例具有共同父类的历史对象实例,将该历史对象实例替换为对应的对象实例,以此类推,将历史对象实例分别替换为对应的对象实例。此时,更新后开发插件的更新后插件包中的宿主模块调用目标对象实例实现就可以实现调用对应的历史对象实例实现的功能。
其中,对于更新后开发插件主要用过静态代理的方式来实现热加载,以功能A的热记载的流程未来,具体可以如下:
(1)假设时刻T1,开发插件(未更新开发插件)的当前插件包内的宿主模块中,调用业务逻辑代码中功能A的实现类为A1.class对象实例。
(2)假设时刻T2(T2=T1+t1,t1>0),通过插件包中的包管理模块完成了插件的更新,并在同一时刻通知更新后插件包内的宿主模块有新的业务逻辑代码可以使用。
(3)在时刻T3(T3=T2+t2,t2>0),宿主模收到来自包管理模块的更新完成通知,通过读取版本号文件Plugin.version知道有新的实现类A2可以使用。
(4)在时刻T4(T4=T3+t3,t3>0),宿主模块通过类加载器加载和反射更新功能A的的实现类为A2.class的对象实例。
(5)在时刻T5(T5=T4+t4,t4>0),宿主模块通过调用A2.class对象实例中的A功能的业务实现。
至此,热加载的实现完成,需要说明的是A为A1和A2的共同父类,可以发现,静态代理的方式主要是通过对类加载器和反射更新对象实例,将每一功能对应的对象实例进行更新,插件在更新后,可以直接调用更新后的对象实例,从而使用插件中的功能,无需重新启动该开发插件。
其中,对开发插件的更新过程主要是通过开发插件的当前插件包中内置的的包管理服务模块来实现,该包管理服务模块通过监听IDEA插件的启动一级接收消息推送的方式触发插件更新逻辑,从而实现插件包的自动更新,具体可以如图4所示,插件使用者在启动开发平台之后,就可以触发启动开发插件的包管理服务,然后,通过包管理服务检测开发插件是否为最新版本,当开发插件为最新版本时,就可以退出开发插件更新流量,当开发插件不是最新版本时,就意味着该开发插件需要更新,此时,就可以检测开发插件的运行状态,当开发插件正在运行时,就可以将插件更新任务进行缓存,等到开发插件结束运行时,继续对开发插件进行更新,当开发插件未运行时,此时,就可以获取该开发插件最新的目标插件包,然后,将目标插件包来替换开发插件的当前插件包,这里的替换不是完全替换,而是增量替换,从而实现开发插件的更新。
由以上可知,本申请实施例在获取针对开发插件的插件信息后,根据所述插件信息,对开发插件的更新状态进行检测,得到开发插件的当前更新状态,当当前更新状态为需要更新时,基于插件信息,获取开发插件的目标插件包,然后,在目标插件包中筛选出业务逻辑代码,并基于业务逻辑代码对开发插件的当前插件包进行更新;由于该方案通过获取开发插件的插件信息之后,检测开发插件的更新状态,在需要更新时,可以自动获取目标插件包对开发插件进行更新,无须手动更新,从而可以提升插件更新的更新效率。
根据上面实施例所描述的方法,以下将举例作进一步详细说明。
在本实施例中,将以该插件更新装置具体集成在电子设备,电子设备为终端,开发插件为IDEA插件为例进行说明。
如图5所示,一种插件更新方法,具体流程如下:
201、终端获取针对IDEA插件的插件信息。
例如,终端对开发平台进行监听,当开发平台启动时,加载当前插件包中的服务管理代码,以启动该服务管理代码对应的包管理服务。
当IDEA插件的开发者开发出最新版本的IDEA插件时,终端可以通过包管理服务接收插件开发者对应的插件服务器发送的最新版本的IDEA插件的信息,得到第一推送信息,在第一推送信息中筛选出最新版本的IDEA插件的版本的信息、最新版的插件包或者最新版的插件包的存储地址,得到IDEA插件的插件信息,或者,还可以向插件服务器发送更新请求,接收插件服务器返回的该IDEA插件最新版的信息,得到第一推送信息,在第一推送信息中筛选出最新版本的IDEA插件的版本的信息、最新版的插件包或者最新版的插件包的存储地址,得到IDEA插件的插件信息。
当开发平台接收到最新版本的IDEA插件或者对最新版本IDEA插件审核通过时,终端可以通过包管理服务接收开发平台发送的最新版本的IDEA插件的信息,得到第二推送信息,在第二推送信息中筛选出最新版本的IDEA插件的版本信息、最新版的插件包或者最新版的插件包的存储地址,或者,还可以向开发平台发送插件更新请求,接收开发平台根据插件更新请求返回的最新版本的IDEA插件的信息,得到第二推送信息,在第二推送信息中筛选出最新版本的IDEA插件的版本信息、最新版的插件包或者最新版的插件包的存储地址。
202、终端根据插件信息,对IDEA插件的更新状态进行检测,得到IDEA插件的当前更新状态。
例如,终端可以在插件信息中识别出IDEA插件的目标版本信息,获取IDEA插件的当前版本信息,并将目标版本信息与当前版本信息进行对比,当目标版本信息与当前版本信息相同时,确定IDEA插件的当前更新状态为不需要更新,当目标版本信息与当前版本信息不同时,确定IDEA插件的当前更新状态为需要更新。
203、当当前更新状态为需要更新时,终端基于插件信息,获取IDEA插件的目标插件包。
例如,终端可以获取当前运行的运行进程,在运行进程中查询IDEA插件对应的运行行程,当存在IDEA插件对应的运行进程时,就可以确定IDEA插件的运行状态为正在运行,当不存在IDEA插件对应的运行进程时,就可以确定IDEA插件的运行状态为未运行,或者,还可以获取开发平台的运行进程,还可以在进程中查询是否存在IDEA插件对应的子进程,当存在IDEA插件对应的子进程时,就可以确定IDEA插件的状态为正在运行,当不存在IDEA插件对应的子进程时,就可以确定IDEA插件的状态为未运行。
当IDEA插件的运行状态为未运行时,终端可以在插件信息中查询插件包,当插件信息中存在插件包时,将该插件包作为IDEA插件的初始插件包,当插件信息中不存在插件包时,在插件信息中识别出插件包的存储地址,基于该存储地址,下载或者接收IDEA插件的初始插件包。
可选的,当IDEA插件的运行状态为正在运行时,终端就可以缓存插件更新任务,然后,继续检测IDEA插件的运行状态,直到IDEA插件的运行状态为未运行,然后,再根据插件信息,获取IDEA插件的目标插件包。
204、终端在目标插件包中筛选出业务逻辑代码。
例如,终端可以对目标插件包进行解压,得到代码集合,对代码集合中的代码进行分类,基于分类结果,在代码集合中筛选出业务逻辑代码,或者,还可以对目标插件包进行解压,得到解压后插件包,在解压后插件包中识别出代码存储区域,对代码存储区域进行分类,基于分类结果,在代码区域中识别出业务逻辑代码存储区域,提取出业务逻辑代码存储区域中存储的代码作业务逻辑存储代码。
205、终端基于业务逻辑代码对IDEA插件的当前插件包进行更新。
例如,终端可以在IDEA插件的当前插件包中识别出代码存储区域和代码备份区域,在代码存储区域中提取出历史业务逻辑代码,并将历史业务逻辑代码移动至代码备份区域,将业务逻辑代码添加至代码存储区域,得到更新后IDEA插件。
可选的,在IDEA插件的当前插件包进行更新之后,还可以实现IDEA插件更新后的热加载,比如,终端可以获取历史业务逻辑代码对应的历史对象实例,对业务逻辑代码进行编译,得到目标类文件,加载目标类文件,并创建目标类文件对应的目标对象实例,基于目标对象实例对历史对象实例进行更新,以便热加载更新后IDEA插件。
由以上可知,本实施例中终端在获取针对IDEA插件的插件信息后,根据所述插件信息,对IDEA插件的更新状态进行检测,得到IDEA插件的当前更新状态,当当前更新状态为需要更新时,基于插件信息,获取IDEA插件的目标插件包,然后,在目标插件包中筛选出业务逻辑代码,并基于业务逻辑代码对IDEA插件的当前插件包进行更新;由于该方案通过获取IDEA插件的插件信息之后,检测IDEA插件的更新状态,在需要更新时,可以自动获取目标插件包对IDEA插件进行更新,无须手动更新,从而可以提升插件更新的更新效率。
根据上面实施例所描述的方法,以下将举例作进一步详细说明。
在本实施例中,将以该插件更新装置具体集成在电子设备,电子设备为终端,开发插件为IDEA插件,开发平台为IDEA为例进行说明。
例如,IDEA启动,此时,可以启动IDEA插件中的包管理服务,该包管理服务为当前插件包的代码中内置的。通过该包管理服务接收IDEA插件的插件开发者对应的插件服务器或IDEA对应的开发服务器发送的消息推送,在该消息推送中获取IDEA插件的最新版本信息,在IDEA插件的插件包的Plugin.version文件中读取IDEA插件的当前版本信息,Plugin.version文件为IDEA插件首次安装且运行成功后,由包管理服务在IDEA插件的安装目录中创建的版本记录文件,该版本记录文件中主要用来存储IDEA插件的当前版本信息。
将最新版本信息与当前版本信息进行对比,当最新版本信息与当前版本信息相同时,就可以确定IDEA插件不需要更新,当最新版本信息与当前版本信息不相同时,就可以确定IDEA插件需要更新。当IDEA插件不需要更新时,就可以直接退出插件更新流程,当IDEA插件需要更新时,继续检测插件是否正在使用,检测的方式可以通过在当前正在运行的进程中查询是否存在IDEA插件的进程,或者,在IDEA的进程中查询是否存在IDEA插件的子进程,当存在IDEA插件的进程或子进程时,就可以确定IDEA插件当前正在运行,当不存在IDEA插件的进程或者子进程时,就可以确定IDEA插件未运行。当IDEA插件正在运行时,就可以缓存插件更新任务,当IDEA插件未运行时,就可以通过包管理服务对IDEA插件的更新插件文件进行下载,在下载的时候,在插件安装目录下创建一个core.tmp的缓存文件,在IDEA的更新插件文件下载完成且通过文件完整性校验后,将core.tmp缓存文件重命名为core.zip文件。通过对core.zip文件解压后,在解压后文件中筛选出业务逻辑代码文件xxx-plugin.jar。将IDEA插件的当前插件包中的历史业务逻辑文件替换为业务逻辑代码文件xxx-plugin.jar,并将历史业务逻辑文件备份到安装目录的backup目录下,用于IDEA插件的版本回滚,此时,就可以完成对IDEA插件的更新,得到更新后IDEA插件和更新后IDEA插件对应的更新后插件包。
在完成对IDEA插件的更新后,通过包管理服务模块向更新后插件包内的宿主模块发送提示信息,用于提示宿主模块存在更新后的业务逻辑代码可以使用,宿主模块在接收到提示信息后,通过读取读取版本号文件Plugin.version确定IDEA插件已经更新,存在每一功能对应的更新后的实现类可以使用,然后,宿主模块通过类加载其加载和反射更新IDEA插件中每一功能的实现类的对象实例,完成对象实例的更新。当需要实现IDEA插件中的某一功能时,就可以通过宿主模块调用该功能对应的对象实例,从而实现该功能对应的任务。实现了更新后IDEA插件的热加载,可以直接使用该更新后IDEA插件,无需重启更新后IDEA插件。
为了更好地实施以上方法,本发明实施例还提供一种插件更新装置,该插件更新装置可以集成在电子设备,比如服务器或终端等设备中,该终端可以包括平板电脑、笔记本电脑和/或个人计算机等。
例如,如图6所示,该插件更新装置可以包括第一获取单元301、检测单元302、第二获取单元303和更新单元304,如下:
(1)第一获取单元301;
第一获取单元301,用于获取针对开发插件的插件信息,该开发插件为运行在预设编程语言开发的集成环境下的插件。
例如,第一获取单元,具体可以用于对开发平台进行监听,当开发平台启动时,加载当前插件包中的服务管理代码,以启动该服务管理代码对应的包管理服务,通过该包管理服务接收该开发插件的开发者对应的插件服务器发送的第一推送信息,并在第一推送信息中筛选出插件信息,或者,还可以通过包管理服务接收开发平台发送的第二推送信息,并在第二推送信息中筛选出插件信息。
(2)检测单元302;
检测单元302,用于根据插件信息,对开发插件的更新状态进行检测,得到开发插件的当前更新状态。
例如,检测单元302,具体可以用于在插件信息中识别出开发插件的目标版本信息,获取开发插件的当前版本信息,并将目标版本信息与当前版本信息进行对比,当目标版本信息与当前版本信息相同时,确定开发插件的当前更新状态为不需要更新,当目标版本信息与当前版本信息不同时,确定开发插件的当前更新状态为需要更新。
(3)第二获取单元303;
第二获取单元303,用于当当前更新状态为需要更新时,基于插件信息,获取开发插件的目标插件包。
例如,第二获取单元303,具体可以用于当当前更新状态为需要更新时,获取当前运行的运行进程,在运行进程中查询开发插件对应的运行行程,当存在开发插件对应的运行进程时,就可以确定开发插件的运行状态为正在运行,当不存在开发插件对应的运行进程时,就可以确定开发插件的运行状态为未运行,或者,还可以获取开发平台的运行进程,还可以在进程中查询是否存在开发插件对应的子进程,当存在开发插件对应的子进程时,就可以确定开发插件的状态为正在运行,当不存在开发插件对应的子进程时,就可以确定开发插件的状态为未运行。当运行状态为未运行时,在插件信息中查询插件包,当插件信息中存在插件包时,将该插件包作为开发插件的初始插件包,当插件信息中不存在插件包时,在插件信息中识别出插件包的存储地址,基于该存储地址,下载或者接收开发插件的初始插件包。对初始插件包进行完整性校验,当初始插件包的完整性校验通过时,将初始插件包作为目标插件包。当开发插件的运行状态为正在运行时,就可以缓存插件更新任务,然后,继续检测开发插件的运行状态,直到开发插件的运行状态为未运行,然后,再根据插件信息,获取开发插件的目标插件包。
(4)更新单元304;
更新单元304,用于在目标插件包中筛选出业务逻辑代码,并基于业务逻辑代码对开发插件的当前插件包进行更新。
例如,更新单元304,具体可以用于对目标插件包进行解压,得到代码集合,对代码集合中的代码进行分类,基于分类结果,在代码集合中筛选出业务逻辑代码,或者,还可以对目标插件包进行解压,得到解压后插件包,在解压后插件包中识别出代码存储区域,对代码存储区域进行分类,基于分类结果,在代码区域中识别出业务逻辑代码存储区域,提取出业务逻辑代码存储区域中存储的代码作业务逻辑存储代码。在开发插件的当前插件包中识别出代码存储区域和代码备份区域,在代码存储区域中提取出历史业务逻辑代码,并将历史业务逻辑代码移动至代码备份区域,将业务逻辑代码添加至代码存储区域,得到更新后开发插件。
可选的,插件更新装置还可以包括热加载单元305,如图7所示,具体可以如下:
热加载单元305,可以用于对更新后开发插件进行热加载。
例如,热加载单元305,具体可以用于获取历史业务逻辑代码对应的历史对象实例,对业务逻辑代码进行编译,得到目标类文件,加载目标类文件,并创建目标类文件对应的目标对象实例,基于目标对象实例对历史对象实例进行更新,以便热加载更新后开发插件。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
由以上可知,本实施例在第一获取单元301获取针对开发插件的插件信息后,检测单元302根据所述插件信息,对开发插件的更新状态进行检测,得到开发插件的当前更新状态,第二获取单元303当当前更新状态为需要更新时,基于插件信息,获取开发插件的目标插件包,然后,更新单元304在目标插件包中筛选出业务逻辑代码,并基于业务逻辑代码对开发插件的当前插件包进行更新;由于该方案通过获取开发插件的插件信息之后,检测开发插件的更新状态,在需要更新时,可以自动获取目标插件包对开发插件进行更新,无须手动更新,从而可以提升插件更新的更新效率。
本发明实施例还提供一种电子设备,如图8所示,其示出了本发明实施例所涉及的电子设备的结构示意图,具体来讲:
该电子设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图8中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
电子设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该电子设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
获取针对开发插件的插件信息,该开发插件为运行在预设编程语言开发的集成环境下的插件,根据插件信息,对开发插件的更新状态进行检测,得到开发插件的当前更新状态,当当前更新状态为需要更新时,基于插件信息,获取开发插件的目标插件包,在目标插件包中筛选出业务逻辑代码,并基于业务逻辑代码对开发插件的当前插件包进行更新。
例如,电子设备对开发平台进行监听,当开发平台启动时,加载当前插件包中的服务管理代码,以启动该服务管理代码对应的包管理服务,通过该包管理服务接收该开发插件的开发者对应的插件服务器发送的第一推送信息,并在第一推送信息中筛选出插件信息,或者,还可以通过包管理服务接收开发平台发送的第二推送信息,并在第二推送信息中筛选出插件信息。在插件信息中识别出开发插件的目标版本信息,获取开发插件的当前版本信息,并将目标版本信息与当前版本信息进行对比,当目标版本信息与当前版本信息相同时,确定开发插件的当前更新状态为不需要更新,当目标版本信息与当前版本信息不同时,确定开发插件的当前更新状态为需要更新。
当当前更新状态为需要更新时,获取当前运行的运行进程,在运行进程中查询开发插件对应的运行行程,当存在开发插件对应的运行进程时,就可以确定开发插件的运行状态为正在运行,当不存在开发插件对应的运行进程时,就可以确定开发插件的运行状态为未运行,或者,还可以获取开发平台的运行进程,还可以在进程中查询是否存在开发插件对应的子进程,当存在开发插件对应的子进程时,就可以确定开发插件的状态为正在运行,当不存在开发插件对应的子进程时,就可以确定开发插件的状态为未运行。当运行状态为未运行时,在插件信息中查询插件包,当插件信息中存在插件包时,将该插件包作为开发插件的初始插件包,当插件信息中不存在插件包时,在插件信息中识别出插件包的存储地址,基于该存储地址,下载或者接收开发插件的初始插件包。对初始插件包进行完整性校验,当初始插件包的完整性校验通过时,将初始插件包作为目标插件包。当开发插件的运行状态为正在运行时,就可以缓存插件更新任务,然后,继续检测开发插件的运行状态,直到开发插件的运行状态为未运行,然后,再根据插件信息,获取开发插件的目标插件包。
对目标插件包进行解压,得到代码集合,对代码集合中的代码进行分类,基于分类结果,在代码集合中筛选出业务逻辑代码,或者,还可以对目标插件包进行解压,得到解压后插件包,在解压后插件包中识别出代码存储区域,对代码存储区域进行分类,基于分类结果,在代码区域中识别出业务逻辑代码存储区域,提取出业务逻辑代码存储区域中存储的代码作业务逻辑存储代码。在开发插件的当前插件包中识别出代码存储区域和代码备份区域,在代码存储区域中提取出历史业务逻辑代码,并将历史业务逻辑代码移动至代码备份区域,将业务逻辑代码添加至代码存储区域,得到更新后开发插件。获取历史业务逻辑代码对应的历史对象实例,对业务逻辑代码进行编译,得到目标类文件,加载目标类文件,并创建目标类文件对应的目标对象实例,基于目标对象实例对历史对象实例进行更新,以便热加载更新后开发插件。
以上各个操作的具体实施可参见前面的实施例,在此不作赘述。
由以上可知,本发明实施例在获取针对开发插件的插件信息后,根据所述插件信息,对开发插件的更新状态进行检测,得到开发插件的当前更新状态,当当前更新状态为需要更新时,基于插件信息,获取开发插件的目标插件包,然后,在目标插件包中筛选出业务逻辑代码,并基于业务逻辑代码对开发插件的当前插件包进行更新;由于该方案通过获取开发插件的插件信息之后,检测开发插件的更新状态,在需要更新时,可以自动获取目标插件包对开发插件进行更新,无须手动更新,从而可以提升插件更新的更新效率。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本发明实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种插件更新方法中的步骤。例如,该指令可以执行如下步骤:
获取针对开发插件的插件信息,该开发插件为运行在预设编程语言开发的集成环境下的插件,根据插件信息,对开发插件的更新状态进行检测,得到开发插件的当前更新状态,当当前更新状态为需要更新时,基于插件信息,获取开发插件的目标插件包,在目标插件包中筛选出业务逻辑代码,并基于业务逻辑代码对开发插件的当前插件包进行更新。
例如,对开发平台进行监听,当开发平台启动时,加载当前插件包中的服务管理代码,以启动该服务管理代码对应的包管理服务,通过该包管理服务接收该开发插件的开发者对应的插件服务器发送的第一推送信息,并在第一推送信息中筛选出插件信息,或者,还可以通过包管理服务接收开发平台发送的第二推送信息,并在第二推送信息中筛选出插件信息。在插件信息中识别出开发插件的目标版本信息,获取开发插件的当前版本信息,并将目标版本信息与当前版本信息进行对比,当目标版本信息与当前版本信息相同时,确定开发插件的当前更新状态为不需要更新,当目标版本信息与当前版本信息不同时,确定开发插件的当前更新状态为需要更新。
当当前更新状态为需要更新时,获取当前运行的运行进程,在运行进程中查询开发插件对应的运行行程,当存在开发插件对应的运行进程时,就可以确定开发插件的运行状态为正在运行,当不存在开发插件对应的运行进程时,就可以确定开发插件的运行状态为未运行,或者,还可以获取开发平台的运行进程,还可以在进程中查询是否存在开发插件对应的子进程,当存在开发插件对应的子进程时,就可以确定开发插件的状态为正在运行,当不存在开发插件对应的子进程时,就可以确定开发插件的状态为未运行。当运行状态为未运行时,在插件信息中查询插件包,当插件信息中存在插件包时,将该插件包作为开发插件的初始插件包,当插件信息中不存在插件包时,在插件信息中识别出插件包的存储地址,基于该存储地址,下载或者接收开发插件的初始插件包。对初始插件包进行完整性校验,当初始插件包的完整性校验通过时,将初始插件包作为目标插件包。当开发插件的运行状态为正在运行时,就可以缓存插件更新任务,然后,继续检测开发插件的运行状态,直到开发插件的运行状态为未运行,然后,再根据插件信息,获取开发插件的目标插件包。
对目标插件包进行解压,得到代码集合,对代码集合中的代码进行分类,基于分类结果,在代码集合中筛选出业务逻辑代码,或者,还可以对目标插件包进行解压,得到解压后插件包,在解压后插件包中识别出代码存储区域,对代码存储区域进行分类,基于分类结果,在代码区域中识别出业务逻辑代码存储区域,提取出业务逻辑代码存储区域中存储的代码作业务逻辑存储代码。在开发插件的当前插件包中识别出代码存储区域和代码备份区域,在代码存储区域中提取出历史业务逻辑代码,并将历史业务逻辑代码移动至代码备份区域,将业务逻辑代码添加至代码存储区域,得到更新后开发插件。获取历史业务逻辑代码对应的历史对象实例,对业务逻辑代码进行编译,得到目标类文件,加载目标类文件,并创建目标类文件对应的目标对象实例,基于目标对象实例对历史对象实例进行更新,以便热加载更新后开发插件。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的指令,可以执行本发明实施例所提供的任一种插件更新方法中的步骤,因此,可以实现本发明实施例所提供的任一种插件更新方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
其中,根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述插件更新方面或者IDEA插件热加载方面的各种可选实现方式中提供的方法。
以上对本发明实施例所提供的一种插件更新方法、装置、电子设备和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种插件更新方法,其特征在于,包括:
获取针对开发插件的插件信息,所述开发插件为运行在预设编程语言开发的集成环境下的插件;
根据所述插件信息,对所述开发插件的更新状态进行检测,得到所述开发插件的当前更新状态;
当所述当前更新状态为需要更新时,基于所述插件信息,获取所述开发插件的目标插件包;
在所述目标插件包中筛选出业务逻辑代码,并基于所述业务逻辑代码对所述开发插件的当前插件包进行更新。
2.根据权利要求1所述的插件更新方法,其特征在于,所述根据所述插件信息,对所述开发插件的更新状态进行检测,得到所述开发插件的当前更新状态,包括:
在所述插件信息中识别出所述开发插件的目标版本信息;
基于所述目标版本信息,确定所述开发插件的当前更新状态。
3.根据权利要求2所述的插件更新方法,其特征在于,所述基于所述目标版本信息,确定所述开发插件的当前更新状态,包括:
获取所述开发插件的当前版本信息,并将所述目标版本信息与当前版本信息进行对比;
当所述目标版本信息与当前版本信息相同时,确定所述开发插件的当前更新状态为不需要更新;
当所述目标版本信息与当前版本信息不同时,确定所述开发插件的当前更新状态为需要更新。
4.根据权利要求1至3任一项所述插件更新方法,其特征在于,所述基于所述业务逻辑代码对所述开发插件的当前插件包进行更新,包括:
在所述开发插件的当前插件包中识别出代码存储区域和代码备份区域;
在所述代码存储区域中提取出历史业务逻辑代码,并将所述历史业务逻辑代码移动至所述代码备份区域;
将所述业务逻辑代码添加至所述代码存储区域,得到更新后开发插件。
5.根据权利要求4所述的插件更新方法,其特征在于,所述将所述业务逻辑代码添加至所述代码存储区域,得到更新后开发插件之后,还包括:
获取所述历史业务逻辑代码对应的历史对象实例;
基于所述业务逻辑代码对所述历史对象实例进行更新,以便热加载所述更新后开发插件。
6.根据权利要求5所述的插件更新方法,其特征在于,所述基于所述业务逻辑代码对所述历史对象实例进行更新,以便热加载所述更新后开发插件,包括:
对所述业务逻辑代码进行编译,得到目标类文件;
加载所述目标类文件,并创建所述目标类文件对应的目标对象实例;
基于所述目标对象实例对所述历史对象实例进行更新,以便热加载所述更新后开发插件。
7.根据权利要求1至3任一项所述的插件更新方法,其特征在于,所述基于所述插件信息,获取所述开发插件的目标插件包,包括:
对所述开发插件的运行状态进行检测;
当运行状态为未运行时,根据所述插件信息,获取所述开发插件的初始插件包,并对所述初始插件包进行完整性校验;
当所述初始插件包的完整性校验通过时,将所述初始插件包作为所述目标插件包。
8.一种插件更新装置,其特征在于,包括:
第一获取单元,用于获取针对开发插件的插件信息,所述开发插件为运行在预设编程语言开发的集成环境下的插件;
检测单元,用于根据所述插件信息,对所述开发插件的更新状态进行检测,得到所述开发插件的当前更新状态;
第二获取单元,用于当所述当前更新状态为需要更新时,基于所述插件信息,获取所述开发插件的目标插件包;
更新单元,用于在所述目标插件包中筛选出业务逻辑代码,并基于所述业务逻辑代码对所述开发插件的当前插件包进行更新。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序,以执行权利要求1至7任一项所述的插件更新方法中的步骤。
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1至7任一项所述插件更新方法中的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至7任一项所述的插件更新方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111187318.1A CN115964061A (zh) | 2021-10-12 | 2021-10-12 | 插件更新方法、装置、电子设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111187318.1A CN115964061A (zh) | 2021-10-12 | 2021-10-12 | 插件更新方法、装置、电子设备和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115964061A true CN115964061A (zh) | 2023-04-14 |
Family
ID=87361979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111187318.1A Pending CN115964061A (zh) | 2021-10-12 | 2021-10-12 | 插件更新方法、装置、电子设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115964061A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116610387A (zh) * | 2023-07-17 | 2023-08-18 | 杭州比智科技有限公司 | 一种基于动态加载和bitmap实现渠道对接及数据分析方法 |
-
2021
- 2021-10-12 CN CN202111187318.1A patent/CN115964061A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116610387A (zh) * | 2023-07-17 | 2023-08-18 | 杭州比智科技有限公司 | 一种基于动态加载和bitmap实现渠道对接及数据分析方法 |
CN116610387B (zh) * | 2023-07-17 | 2023-10-03 | 杭州比智科技有限公司 | 一种基于动态加载和bitmap实现渠道对接及数据分析方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7243346B1 (en) | Customized library management system | |
CN108762825B (zh) | 动态库重载的实现方法及系统 | |
US10705829B2 (en) | Software discovery using exclusion | |
GB2513528A (en) | Method and system for backup management of software environments in a distributed network environment | |
CN111158730B (zh) | 系统更新方法、装置、电子设备和可读存储介质 | |
US10855750B2 (en) | Centralized management of webservice resources in an enterprise | |
CN111240892A (zh) | 数据备份方法及装置 | |
CN115576600A (zh) | 基于代码变更的差异处理方法、装置、终端及存储介质 | |
CN115964061A (zh) | 插件更新方法、装置、电子设备和计算机可读存储介质 | |
CN113326078A (zh) | 一种动态更新软件开发工具包的方法、设备及存储介质 | |
CN113760306A (zh) | 安装软件的方法、装置、电子设备及存储介质 | |
CN109032641B (zh) | 应用版本更新方法及装置 | |
CN113791809B (zh) | 应用异常处理方法、装置以及计算机可读存储介质 | |
CN109472540B (zh) | 业务处理方法和装置 | |
US7389515B1 (en) | Application deflation system and method | |
CN112691382B (zh) | 资源处理方法、装置及计算机可读存储介质 | |
CN115080114A (zh) | 应用程序的移植处理方法、装置和介质 | |
CN114816470A (zh) | 元数据库的管理方法、装置、电子设备和介质 | |
CN112667491B (zh) | 虚拟机的功能测试方法及装置 | |
US10698749B1 (en) | System and a method for automated resolution of configuration item issues | |
CN109634636B (zh) | 应用处理方法、装置、设备和介质 | |
CN113296786A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN112817782A (zh) | 一种数据采集上报方法、装置、电子设备和存储介质 | |
CN111737964A (zh) | 表格动态处理方法、设备及介质 | |
CN115421785B (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 |