一种应用更新方法、装置和存储介质
技术领域
本申请涉及终端应用领域,特别是涉及一种应用更新方法、装置和存储介质。
背景技术
随着移动互联网的发展,各种各样的应用被投放市场,应用功能也由单一向多元化场景转型,为了实现应用并行开发、在线升级,应用的开发模式也逐渐转为插件化开发,即应用某一功能对应一个插件。一款应用的插件有原生插件类型、H5(HTML5)插件类型或者RN(React Native)插件类型,不同类型的插件在运行速度、用户体验上不同。
然而,当基于插件进行应用升级时,如果变更了插件类型,比如插件由原生插件类型改为RN插件类型,就必须下架整个应用,修改应用代码,重新发布应用并等待应用市场审核,使得应用更新效率低。
发明内容
基于此,本发明提出了一种应用更新方法、装置和存储介质,以解决应用更新效率低的问题。
一种应用更新方法,包括:
拦截对目标应用的更新指令;
根据所述更新指令,确定运行于所述目标应用的目标插件的运行版本;
查询所述目标插件的最新版本及所述最新版本目标插件的插件类型;
当所述运行版本与所述最新版本不一致时,获取所述最新版本的目标插件;
调用所述插件类型对应的容器来运行所述最新版本的目标插件,实现对所述目标应用的更新。
在其中一个实施例中,所述拦截对目标应用的更新指令,包括:
拦截基于对目标应用的启动操作生成的更新指令;
将所述目标应用中的每个运行插件确定为目标插件。
在其中一个实施例中,所述拦截对目标应用的更新指令,包括:
拦截基于预先配置在目标应用的定时更新信息生成的更新指令;
将所述目标应用中的每个运行插件确定为目标插件。
在其中一个实施例中,所述拦截对目标应用的更新指令,包括:
拦截基于对目标应用中功能组件的触发操作生成的更新指令;
将所述目标应用中所述触发操作所指向的运行插件确定为目标插件。
在其中一个实施例中,所述查询所述目标插件的最新版本及所述最新版本目标插件的插件类型,包括:
根据所述目标插件的插件标识生成查询请求;
将所述查询请求发送至服务器;
接收所述服务器根据所述插件标识返回的所述目标插件的最新版本及所述最新版本目标插件的插件类型。
在其中一个实施例中,所述查询所述目标插件的最新版本及所述最新版本目标插件的插件类型,包括:
缓存在服务器查询到的目标应用中每个运行插件的最新版本和插件类型;
当再次拦截到对目标应用的同一目标插件的更新指令时,根据拦截时间计算当前的更新指令与前一更新指令之间的时间差;
当所述时间差小于或等于阈值时,在所述缓存中查询所述当前的更新指令对应目标插件的最新版本和插件类型。
在其中一个实施例中,所述调用所述插件类型对应的容器来运行所述最新版本的目标插件,实现对所述目标应用的更新,包括:
查询容器的容器标签;
根据容器标签,确定与所述插件类型对应的容器;
调用与所述插件类型对应的容器运行所述最新版本的目标插件。
在其中一个实施例中,所述调用所述插件类型对应的容器来运行所述最新版本的目标插件,实现对所述目标应用的更新之后,还包括:
按照预设时间频率扫描容器中的目标插件是否运行完毕;
若运行完毕,对所述容器中的资源进行清理回收。
一种应用更新装置,包括:
拦截模块,用于拦截对目标应用的更新指令;
运行版本获取模块,用于确定运行于所述目标应用的目标插件的运行版本;
版本与类型获取模块,用于根据所述更新指令查询所述目标插件的最新版本及所述最新版本目标插件的插件类型;
目标插件获取模块,用于当所述运行版本与所述最新版本不一致时,获取所述最新版本的目标插件;
应用更新模块,用于调用所述插件类型对应的容器来运行所述最新版本的目标插件,实现对所述目标应用的更新。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
拦截对目标应用的更新指令;
根据所述更新指令,确定运行于所述目标应用的目标插件的运行版本;
查询所述目标插件的最新版本及所述最新版本目标插件的插件类型;
当所述运行版本与所述最新版本不一致时,获取所述最新版本的目标插件;
调用所述插件类型对应的容器来运行所述最新版本的目标插件,实现对所述目标应用的更新。
上述应用更新方法、装置和存储介质,当目标应用生成更新指令或基于用户对目标应用操作而生成更新指令时,终端拦截更新指令,并根据更新指令,查询运行于目标应用的目标插件的运行版本;终端从服务器获取目标插件的最新版本及最新版本目标插件的插件类型,判断目标插件的运行版本与最新版本是否一致,当运行版本与最新版本不一致时,终端从服务器下载最新版本的目标插件,并调用与最新版本的目标插件类型对应的容器来运行最新版本的目标插件,实现对目标应用的更新。通过判断目标插件是否为最新版本,若不为最新版本时,才从服务器中下载最新版本的目标插件,可以避免资源的浪费;通过识别最新版本的目标插件的类型,并根据插件类型自动调用对应的容器来运行最新版本的目标插件,可以实现在用户无感知的情况下,对应用进行自动在线升级,提高应用更新效率;针对不同的插件类型预置不同的容器,而容器可以为插件提供相适应的运行环境,从而在插件类型发生变更时可以无需下架整个应用,即可实现应用更新,进一步提高应用更新效率。
附图说明
图1是一个实施例的一种应用更新方法的应用环境图;
图2是一个实施例的一种应用更新方法的流程示意图;
图3是一个实施例的一种应用更新系统的结构示意图;
图4是一个实施例的一种应用更新装置的结构框图;
图5是一个实施例的一种计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的应用更新方法,可以应用于如图1所示的应用环境中。其中,终端120与服务器140通过网络进行通信。其中,终端120可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器140可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
当开发人员在基于插件进行应用更新时,将最新版本的插件上传至服务器140,并在服务器配置最新插件的最新版本、类型和插件标识;当目标应用生成更新指令或基于用户对目标应用操作而生成更新指令时,终端120拦截更新指令,并根据更新指令,查询运行于目标应用的目标插件的运行版本;终端120从服务器140获取目标插件的最新版本及最新版本目标插件的插件类型,判断目标插件的运行版本与最新版本是否一致,当运行版本与最新版本不一致时,终端120从服务器140下载最新版本的目标插件,并调用与最新版本的目标插件类型对应的容器来运行最新版本的目标插件,实现对目标应用的更新。通过判断目标插件是否为最新版本,若不为最新版本时,才从服务器中下载最新版本的目标插件,可以避免资源的浪费;通过识别最新版本的目标插件的类型,并根据插件类型自动调用对应的容器来运行最新版本的目标插件,可以实现在用户无感知的情况下,对应用进行自动在线升级,提高应用更新效率;针对不同的插件类型预置不同的容器,而容器可以为插件提供相适应的运行环境,从而在插件类型发生变更时可以无需下架整个应用,即可实现应用更新,进一步提高应用更新效率。
在一个实施例中,如图2所示,提供了一种应用更新的方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤S210,拦截对目标应用的更新指令。
其中,目标应用为,当前运行在终端中的应用。目标应用依赖运行插件,通过运行不同的运行插件,实现不同功能。每个插件具有唯一的插件标识,例如,插件标识可以为插件ID;根据插件标识,即可唯一确定插件。
具体实现中,终端拦截根据用户对目标应用的操作而生成的更新指令,或拦截目标应用定时生成的更新指令;根据更新指令,查看目标应用是否为最新版本,若不为最新版本,则更新目标应用。
例如,开发人员在完成新版本的插件的开发后,可以将新版本的插件上传至服务器中。当用户点击目标应用的某一功能图标时,终端拦截基于点击操作生成的更新指令,查看目标应用即将调用的目标插件是否为最新版本。
步骤S220,根据更新指令,确定运行于目标应用的目标插件的运行版本。
具体实现中,当终端拦截到更新指令后,从更新指令中提取插件标识,根据插件标识,确定运行于目标应用的目标插件,并根据插件标识查询目标插件的运行版本。
例如,终端中存有应用的应用配置文件,应用配置文件记录了应用标识和应用名称,和与应用标识相对应的插件标识、插件的运行版本。当用户安装一个应用时,终端会在配置文件左边记录安装应用的应用标识和应用名称,并将和安装插件的插件标识和运行版本记录在文件右边。当终端拦截到更新指令后,对更新指令进行解码,从解码后的更新指令中提取目标插件的插件标识,根据插件标识,在应用配置文件中查询查询目标插件的运行版本。
步骤S230查询目标插件的最新版本及最新版本目标插件的插件类型。
具体实现中,服务器中存有服务器配置文件,服务器配置文件记录了插件标识,和与插件标识相对应的插件版本、插件版本号、插件类型、插件存储位置、写入服务器配置文件的时间。当开发人员在基于插件进行应用更新时,将最新版本的插件上传至服务器,并在服务器配置文件中写入插件的最新版本、类型和标识。终端获得目标插件的插件标识后,将目标插件的插件标识打包生成查询指令,并开启线程将查询指令通过网络发送至服务器。服务器接收到查询指令后,将查询指令进行解析,提取出目标插件的插件标识,并从服务器配置文件中,获取至少一个与目标插件的插件标识相同的运行插件,然后,从运行插件中查询写入服务器配置文件时间最晚的插件版本和类型,将写入服务器配置文件时间最晚的运行插件确定为最新版本的目标插件,并将最新版本的目标插件的版本和类型返回至终端。
又例如,每一个插件版本具有一个版本号,版本号由数字组成,通过对比版本号中的数字,可以确定插件的版本高低。终端获得目标插件的插件标识后,终端根据插件标识,发送查询指令。服务器接收到查询指令后,从查询指令中提取出目标插件的插件标识,并从服务器配置文件中,提取至少一个与目标插件的插件标识相同的运行插件,对比运行插件的版本号,确定版本号最高的候选插件为最新版本的目标插件,并将最新版本的目标插件的版本及最新版本目标插件的插件类型返回至终端。
步骤S240当运行版本与最新版本不一致时,获取最新版本的目标插件。
具体实现中,终端获取到目标插件的运行版本和目标插件的最新版本后,判断运行版本与最新版本的版本高低,当确定最新版本比运行版本高时,终端向服务器发送查询请求,服务器接收到查询请求后,根据查询请求查询最新版本的目标插件在服务器中的存储位置,终端根据存储位置生成HTTP(HyperText Transfer Protocol,超文本传输协议)请求,从服务器中下载最新版本的目标插件,当在规定时间内,服务器返回下载完成通知,终端删除不是最新版本的目标插件,并在应用配置文件中删除不是最新版本的目标插件的插件标识、运行版本,添加最新版本的目标插件的插件标识、运行版本。
步骤S250调用插件类型对应的容器来运行最新版本的目标插件,实现对目标应用的更新。
其中,容器为操作系统为不同进程分配的独立空间,该独立空间具有独立运行环境,包括内存分页空间、CPU时钟分配、硬盘空间、进程空间、运行库等
其中,不同类型的插件在运行时,所依赖的运行环境和资源不同,不同类型的容器可以部署不同的运行环境和资源,从而能够运行不同类型的插件。
其中,容器存放在容器仓中。
具体实现中,当终端获取到最新版本的目标插件的插件类型后,根据插件类型,从容器仓中查询是否有与目标插件类型相同的容器,若有,则从容器仓中调用与目标插件类型相同的容器运行最新版本的目标插件。
例如,容器仓中有原生类型插件容器、H5(HTML5)类型插件容器和RN(ReactNative)类型插件容器。当终端确定最新版本的目标插件的插件类型为H5类型后,从容器仓中调用H5类型插件容器运行最新版本的目标插件,更具体地:H5类型插件容器查询最新版本的目标插件在终端中的存储地址,根据存储地址获取目标插件包,对最新版本的目标插件包进行解压,执行解压后的目标插件包中的类方法,以运行最新版本的目标插件,从而更新应用。
本实施例中,当拦截对目标应用的更新指令后,可以根据更新指令确定运行在目标应用中的目标插件,和确定运行于目标应用的目标插件的运行版本;查询目标插件的最新版本后,可以根据运行版本和最新版本确定目标应用的目标插件是否需要更新,若需要更新,获取最新版本的目标插件;获取最新版本的目标插件的插件类型后,可以根据插件类型调用对应的容器来运行最新版本的目标插件,实现对目标应用的更新。通过判断目标插件是否为最新版本,若不为最新版本时,才从服务器中下载最新版本的目标插件,可以避免资源的浪费;通过识别最新版本的目标插件的类型,并根据插件类型自动调用对应的容器来运行最新版本的目标插件,可以实现在用户无感知的情况下,对应用进行自动在线升级,提高应用更新效率;针对不同的插件类型预置不同的容器,而容器可以为插件提供相适应的运行环境,从而在插件类型发生变更时可以无需下架整个应用,即可实现应用更新,进一步提高应用更新效率。
在一个实施例中,该方法还包括:拦截基于对目标应用的启动操作生成的更新指令;将目标应用中的每个运行插件确定为目标插件。
具体实现中,当用户点击应用图标启动目标应用,或者目标应用在终端重启后自动启动时,目标应用会根据启动操作生成更新指令。终端中对目标应用进行监控,当发现目标应用生成更新指令后,拦截更新指令,并从更新指令中提取目标应用的应用标识;终端获得目标应用的应用标识后,在应用配置文件中查询与目标应用的应用标识相同的插件,并将与目标应用的应用标识相同的运行插件确定为目标插件。
上述一种应用更新方法中,通过终端拦截更新指令,从更新指令中,提取目标应用的应用标识,根据应用标识,确定目标插件,使后续可以根据更新指令对目标插件进行自动更新,以达到在用户无感知的情况下,更新应用的目的。
在一个实施例中,该方法还包括:拦截基于预先配置在目标应用的定时更新信息生成的更新指令;将目标应用中的每个运行插件确定为目标插件。
其中,定时更新信息中记录了目标应用定时发送更新指令的时间周期。
具体实现中,目标应用在每个时间周期内,生成更新指令,更新运行在目标应用的目标插件。终端的拦截更新指令,从更新指令中提取插件标识,并将运行在目标应用中的每个插件确定为目标插件。
例如,开发人员开辟一个新进程,用以设置间隔时间,和根据间隔时间,触发目标应用轮流向每个运行在目标应用中的运行插件发送更新指令;更具体地,目标应用从应用配置文件中,查询与目标应用的应用标识相同的运行插件,并向每个运行插件发送更新指令;终端依次拦截更新指令,从更新指令中提取运行插件的插件标识,将运行插件确定为目标插件,然后将目标插件的插件标识存放于数组中。
上述一种应用更新方法中,通过拦截定时向运行在目标应用的运行插件发送的更新指令,并从更新指令中提取运行插件的插件标识,根据插件标识确定目标插件,然后将目标插件的插件标识存放于数组中,使后续可以根据插件标识查询插件的运行版本和最新版本,以确定目标插件是否为最新版本的插件。
在一个实施例中,该方法还包括:拦截基于对目标应用中功能组件的触发操作生成的更新指令;将目标应用中触发操作所指向的运行插件确定为目标插件。
具体实现中,当用户对目标应用中的某一图标进行操作后,目标应用获取图标标识,根据图标标识确定目标插件。目标应用获取跳转到目标插件的链接,根据链接重定向至目标插件所渲染的页面。终端对目标应用进行监控,当发现目标应用即将调用目标插件时,拦截重定向至目标插件的链接,将链接为更新指令,并从更新指令中提取目标插件的插件标识。
例如,目标应用中存有插件列表,用于存储图标与插件的对应关系。更具体地,插件列表中存有图标标识和插件标识,每个图标标识对应至少一个插件标识。当用户对目标应用中的某一图标进行操作后,为了响应用户操作,目标应用获取图标标识,并根据图标标识,在插件列表中查询与图标标识相对应的目标插件。目标应用获取跳转到目标插件的链接,根据链接重定向至目标插件所渲染的页面。终端拦截重定向至目标插件的链接,将链接为更新指令,并从更新指令中提取目标插件的插件标识。
上述一种应用更新方法中,通过拦截更新指令和确定目标插件,使后续可以根据更新指令对目标插件进行自动更新,以达到在用户无感知的情况下,更新应用的目的。
在一个实施例中,该方法还包括:根据目标插件的插件标识生成查询请求;将查询请求发送至服务器;接收服务器根据插件标识返回的目标插件的最新版本及最新版本目标插件的插件类型。
具体实现中,终端获得目标插件的插件标识后,将目标插件的插件标识打包生成查询指令并发送至服务器。服务器接收到查询指令后,从查询指令中提取出目标插件的插件标识,并从服务器配置文件中,获取至少一个与目标插件的插件标识相同的运行插件,然后,在运行插件中,将写入服务器配置文件的时间最晚的插件确定为最新版本的目标插件,并将最新版本的目标插件的插件版本和插件类型返回至终端。
上述一种应用更新方法中,通过获取目标插件的最新版本及最新版本的目标插件类型,使后续可以根据目标插件的运行版本和最新版本,确定是否需要自动更新目标插件,使应用中的插件始终保持最新版本。
在一个实施例中,该方法还包括:缓存在服务器查询到的目标应用中每个运行插件的最新版本和插件类型;当再次拦截到对目标应用的同一目标插件的更新指令时,根据拦截时间计算当前的更新指令与前一更新指令之间的时间差;当时间差小于或等于阈值时,在缓存中查询当前的更新指令对应目标插件的最新版本和插件类型。
具体实现中,当终端拦截到对目标应用的更新指令时,终端记录更新指令拦截时间,并获取目标应用的应用标识和目标插件的插件标识。根据应用标识,终端在应用配置文件中查询目标应用中的每个运行插件和每个运行插件的插件标识,打包每个运行插件的插件标识,依次根据打包后的插件标识生成查询指令,通过网络发送至服务器。服务器接收到查询指令后,根据插件标识,从服务器配置文件中查询运行插件的最新版本和插件类型,并将运行插件的最新版本和插件类型返回至终端;终端接收目标应用中每个运行插件的最新版本和插件类型,然后,将每个运行插件的最新版本和插件类型缓存至临时文件中;终端再次拦截对目标应用的更新指令时,从更新指令中提取插件标识,根据插件标识判断此次待更新的目标插件是否与前一次待新的目标插件相同,若相同,记录再次拦截的拦截时间,将再次拦截的拦截时间减去前一次拦截时间,得到时间差,当时间差小于阈值时,从临时文件中查询再次拦截的更新指令对应的目标插件的最新版本和插件类型。
例如,终端第一次拦截到对目标应用的更新指令时,记录目标应用的应用标识、目标插件的插件标识和第一次拦截更新指令的时间,并将从服务器中查询到的,目标应用的每个运行插件最新版本和插件类型缓存至本地的临时文件中;终端第二次拦截到更新指令时,判断从第二次拦截到的更新指令中提取出的应用标识和插件标识是否与第一次相同,若相同,记录第二次拦截更新指令的时间,将第二次拦截更新指令的时间减去第一次拦截更新指令的时间,得到时间差,当时间差小于阈值时,从临时文件中查询第二次拦截的更新指令对应的目标插件的最新版本和插件类型。
上述一种应用更新方法中,通过计算拦截时间得到时间差,根据时间差从缓存中查询当前的更新指令对应目标插件的最新版本和类型;使终端可以无需向服务器查询目标插件的最新版本和类型,从本地文件中即可快速确定目标插件的最新版本和类型,从而减少了查询时间;当时间差大于阈值时,从服务器查询目标插件的最新版本和类型,以提升查询的准确性。
在一个实施例中,该方法还包括:获取容器的容器标签;根据容器标签,确定与插件类型对应的容器;调用与插件类型对应的容器运行最新版本的目标插件。
其中,容器具有容器标签和容器标识;容器标签为,记录容器类型的标签;每一个容器具有唯一的容器标识,通过容器标识可以唯一确定容器。
具体实现中,当终端获取到最新版本的目标插件的插件类型后,根据插件类型,向容器仓发送查询指令。容器仓接收到查询指令后,根据查询指令查询容器的容器标签,根据容器标签,确定与插件类型对应的容器,并获取与插件类型对应容器的容器标识,并将容器标识返回至终端。终端接收容器标识,根据容器标识从容器仓中调用容器运行最新版本的目标插件,实现对目标应用的更新。
在一个实施例中,该方法还包括:按照预设时间频率扫描容器中的目标插件是否运行完毕;若运行完毕,对容器中的资源进行清理回收。
具体实现中,终端按照预设时间频率,对容器仓中的容器进行扫描,生成扫描日志。终端根据扫描日志记录的运行完毕的目标插件的插件标识,生成清理任务,即时执行清理任务,或者在数据库空闲时间执行清理任务,用以释放容器在运行目标插件时所占有的资源。
本实施例中,对容器中运行完毕的目标插件进行资源释放,减少对终端的资源的占用。
为了便于本领域技术人员的理解,如图3所示,提供了一种应用更新系统的结构图,该系统包括终端310、服务器320和容器仓330;终端310包括更新指令触发模块、插件配置模块;容器仓330可以设置于终端,也可以设置于服务器端或第三方设备中。
更新指令触发模块,用于在用户点击应用某图标、链接或者页面标志时,触发目标应用发送请求,请求从当前页面重定向至另一页面。插件配置模块,用于拦截目标应用发送的请求,并将请求作为更新指令,当拦截到更新指令后,插件配置模块还用于获取当前目标应用的版本以及所有目标应用的运行插件的插件版本,并将目标应用版本与插件版本上报到服务器320进行查询,接收服务器320返回的插件类型,然后,将插件类型存储到本地数据库中。容器仓330中有不同类型的容器仓,不同类型的容器仓中有对应类型的容器,用以加载不同类型的插件。服务器320,用于配置和存储应用的插件类型,并响应于应用的插件配置模块的查询请求,返回意欲在当前目标重配置的插件类型。
插件配置模块在应用启动时或启动后定时向服务器320查询最新的所有的插件对应的版本和类型;当用户在目标应用上进行操作比如点击某图标时,更新指令触发模块向插件配置模块查询,该点击操作调用的目标插件的插件类型,根据插件类型,调用与目标插件对应的插件容器去加载目标插件,触发应用从当前页面重定向至新页面。
应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种应用更新装置,包括:
拦截模块410,用于拦截对目标应用的更新指令;
运行版本获取模块420,用于确定运行于目标应用的目标插件的运行版本;
版本与类型获取模块430,用于根据更新指令查询目标插件的最新版本及最新版本目标插件的插件类型;
目标插件获取模块440,用于当运行版本与最新版本不一致时,获取最新版本的目标插件;
应用更新模块450,用于调用插件类型对应的容器来运行最新版本的目标插件,实现对目标应用的更新。
在一个实施例中,上述的拦截模块410,包括:
更新指令拦截子模块,用于拦截基于更新指令;
目标插件确定子模块,用于将目标应用中的每个运行插件确定为目标插件。
在一个实施例中,上述的版本与类型获取模块430,包括:
查询子模块,用于根据目标插件的插件标识生成查询请求;
请求发送子模块,用于将查询请求发送至服务器;
接收子模块,用于接收服务器根据插件标识返回的目标插件的最新版本及最新版本目标插件的插件类型。
在一个实施例中,上述的版本与类型获取模块430,包括:
缓存模块,用于缓存在服务器查询到的目标应用中每个运行插件的最新版本和插件类型;
时间差计算子模块,用于当再次拦截到对目标应用的同一目标插件的更新指令时,根据拦截时间计算当前的更新指令与前一更新指令之间的时间差;
查询版本与类型子模块,用于当时间差小于或等于阈值时,在缓存中查询当前的更新指令对应目标插件的最新版本和插件类型。
在一个实施例中,上述的应用更新模块450,包括:
容器标签子模块,用于查询容器的容器标签;
容器确定子模块,用于根据容器标签,确定与插件类型对应的容器;
目标插件运行子模块,用于调用与插件类型对应的容器运行最新版本的目标插件。
在一个实施例中,上述的应用更新装置,包括:
频率扫描子模块,用于按照预设时间频率扫描容器中的目标插件是否运行完毕;
资源回收子模块,用于若运行完毕,对容器中的资源进行清理回收。
关于应用更新装置的具体限定可以参见上文中对于应用更新方法的限定,在此不再赘述。上述应用更新装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
上述提供的应用更新装置可用于执行上述任意实施例提供的应用更新方法,具备相应的功能和有益效果。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种应用更新方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
拦截对目标应用的更新指令;
根据更新指令,确定运行于目标应用的目标插件的运行版本;
查询目标插件的最新版本及最新版本目标插件的插件类型;
当运行版本与最新版本不一致时,获取最新版本的目标插件;
调用插件类型对应的容器来运行最新版本的目标插件,实现对目标应用的更新。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
拦截基于对目标应用的启动操作生成的更新指令;
将目标应用中的每个运行插件确定为目标插件。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
拦截基于预先配置在目标应用的定时更新信息生成的更新指令;
将目标应用中的每个运行插件确定为目标插件。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
拦截基于对目标应用中功能组件的触发操作生成的更新指令;
将目标应用中触发操作所指向的运行插件确定为目标插件。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
根据目标插件的插件标识生成查询请求;
将查询请求发送至服务器;
接收服务器根据插件标识返回的目标插件的最新版本及最新版本目标插件的插件类型。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
缓存在服务器查询到的目标应用中每个运行插件的最新版本和插件类型;
当再次拦截到对目标应用的同一目标插件的更新指令时,根据拦截时间计算当前的更新指令与前一更新指令之间的时间差;
当时间差小于或等于阈值时,在缓存中查询当前的更新指令对应目标插件的最新版本和插件类型。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
查询容器的容器标签;
根据容器标签,确定与插件类型对应的容器;
调用与插件类型对应的容器运行最新版本的目标插件。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
按照预设时间频率扫描容器中的目标插件是否运行完毕;
若运行完毕,对容器中的资源进行清理回收。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。