本发明涉及计算机技术领域,特别涉及一种应用更新方法、装置、设备及存储介质。
背景技术:
在快速发展的互联网时代,服务端功能新旧更迭、推陈出新速度非常快。用户端通过直接使用第三方开发的服务或集成使用第三方开发的工具来实现第三方提供的应用功能,在上述过程中需要接入该服务时就需要使用服务配套的工具集,当工具进行了更新,对于使用者也即用户端而言,如果需要使用这些更新后的功能,就需要引入该工具对应的更新后的版本。特别是在java应用中,java开发者在开发服务端功能的时候,为了方便使用者快速接入,都会开发配套的软件开发工具包(sdk,softwaredevelopmentkit),软件开发工具包一般会包含部分或全部功能实现来对应配套服务端功能。使用者需要引入软件开发工具包使用该功能,软件开发工具包随着服务端功能的升级而升级,用户端如果想要使用javasdk的升级后的功能,就需要频繁升级javasdk。
现有技术中,上述应用更新过程需要整体更新软件开发工具包,且要求服务端写好足够清晰的更新步骤,让用户端按照步骤进行更新。然而即便有详细更新步骤的对应文档,在更新过程中,用户端也会有诸多疑问题,受理咨询会占用极大的时间,且在更新完毕之后,服务端还需要进行验证测试,用户体验较差。综上所述,现有技术至少存在更新效率低、用户体验差的技术问题。
技术实现要素:
有鉴于此,本发明的目的在于提供一种应用更新方法、装置、设备及存储介质,能够在不对软件开发工具包进行整体更新的情况下将服务端的功能更快地推送至用户端。其具体方案如下:
本申请的第一方面提供了一种应用更新方法,应用于用户端,包括:
获取待更新应用的api包,以得到目标api包,并确定所述目标api包对应的目标api实现包的文件信息;
基于所述目标api实现包的文件信息,确定目标标识信息;
将所述目标标识信息传输至服务端,以便所述服务端根据所述目标标识信息返回相应的预设api实现包;
接收并加载所述服务端返回的所述预设api实现包,以更新所述待更新应用。
可选的,所述获取待更新应用的目标api包,以得到目标api包,包括:
加载启动包以查找待更新应用对应的数据包中是否存在预设api属性文件,如果是,则将所述预设api属性文件对应的数据包确定为目标api包。
可选的,所述确定所述目标api包对应的目标api实现包的文件信息,包括:
查找所述待更新应用对应的本地的实现包文件中是否存在目标api实现包,如果是,则获取所述目标api实现包的目标摘要值,并将所述目标摘要值确定为所述目标api实现包的文件信息,如果否,则将所述目标api实现包的文件信息设置为空值。
可选的,所述查找所述待更新应用对应的本地的实现包文件中是否存在目标api实现包,包括:
判断所述待更新应用对应的本地的实现包文件的名称与所述目标api包的名称是否一致,如果是,则判定所述待更新应用对应的本地的实现包文件中存在所述目标api实现包。
可选的,所述基于所述目标api实现包的文件信息,确定目标标识信息,包括:
遍历所述目标api包,读取所述目标api包的名称、版本,以得到所述目标api包的文件信息;
将所述目标摘要值、所述目标api包的文件信息及所述待更新应用的名称确定为目标标识信息。
可选的,所述将所述目标标识信息传输至服务端,以便所述服务端根据所述目标标识信息返回相应的预设api实现包,包括:
获取所述目标api实现包对应的服务端地址;
将所述目标标识信息传输至所述服务端地址对应的服务端,以便所述服务端在接收到所述用户端发送的所述目标标识信息后,根据所述目标api包的名称、版本及所述待更新应用的名称确定目标需求,并基于所述目标需求确定相应的预设api实现包,判断所述目标摘要值与所述预设api实现包的摘要值是否一致,如果否,则返回所述预设api实现包。
可选的,所述接收并加载所述服务端返回的所述预设api实现包,以更新所述待更新应用,包括:
接收所述服务端返回的所述预设api实现包;
创建目标类加载器,并将所述目标类加载器设置为目标类加载的父类以加载所述预设api实现包。
本申请的第二方面提供了一种应用更新装置,包括:
获取模块,用于获取待更新应用的目标api包,以得到目标api包,并确定所述目标api包对应的目标api实现包的文件信息;
确定模块,用于基于所述目标api实现包的文件信息,确定所述目标标识信息;
传输模块,用于将所述目标标识信息传输至服务端,以便所述服务端根据所述目标标识信息返回相应的预设api实现包;
更新模块,用于接收并加载所述服务端返回的所述预设api实现包,以更新所述待更新应用。
本申请的第三方面提供了一种电子设备,所述电子设备包括处理器和存储器;其中所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述应用更新方法。
本申请的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述应用更新方法。
本申请中,先获取待更新应用的api包,以得到目标api包,并确定所述目标api包对应的目标api实现包的文件信息,然后基于所述目标api实现包的文件信息,确定目标标识信息,并将所述目标标识信息传输至服务端,以便所述服务端根据所述目标标识信息返回相应的预设api实现包,最后接收并加载所述服务端返回的所述预设api实现包,以更新所述待更新应用。本申请用户端只需引入服务端提供的api包,当需要更新应用功能时,只用从服务端下载相应的api实现包来实现功能的更新,通过上述方法能够在不对软件开发工具包进行整体更新的情况下,也即不变动api包的情况下将服务端的功能更快地推送至用户端,提高应用更新的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种应用更新方法流程图;
图2为本申请提供的一种具体的应用更新方法流程图;
图3为本申请提供的一种应用更新方案示意图;
图4为本申请提供的类加载机制示意图;
图5为本申请提供的一种应用更新装置结构示意图;
图6为本申请提供的一种应用更新电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有的应用更新方案需要整体更新软件开发工具包,且要求服务端写好足够清晰的更新步骤,让用户端按照步骤进行更新。然而即便有详细更新步骤的对应文档,在更新过程中,用户端也会有诸多疑问题,受理咨询会占用极大的时间,且在更新完毕之后,服务端还需要进行验证测试,更新效率较低、用户体验较差。为了克服上述技术问题,本申请提供了一种应用更新方案,能够在不对软件开发工具包进行整体更新的情况下,也即不变动api包的情况下将服务端的功能更快地推送至用户端,提高应用更新的效率。
图1为本申请实施例提供的一种应用更新方法流程图,应用于用户端。参见图1所示,该应用更新方法包括:
s11:获取待更新应用的api包,以得到目标api包,并确定所述目标api包对应的目标api实现包的文件信息。
本实施例中,首先需要获取待更新应用的api包,以得到目标api包,在java环境中,存在各种类型和功能的api包,不同的api包对应不同的实现包,本实施例的本质是通过对待更新应用中的api包对应的实现包进行更新从而更新待更新应用,因此,在得到目标api包后需要进一步确定所述目标api包对应的目标api实现包的文件信息,所述文件信息为所述目标api实现包的标识信息,能反映所述api实现包的内容或版本等信息,如可以为所述目标api实现包的版本号、摘要值等。不难理解,所述摘要值是通过消息摘要算法对所述目标api实现包进行处理后输出的特殊格式的数值,不同的所述目标api实现包对应不同的摘要值。
需要说明的是,所述用户端相对于本实施例中的服务端,所述服务端视为客户端服务的,如向所述用户端提供资源、保存所述用户端数据等。在应用开发过程中,所述服务端可以视为第三方,所述用户端使用所述服务端提供的开发功能进行开发并将开发的产品提供给客户端。
s12:基于所述目标api实现包的文件信息,确定目标标识信息。
s13:将所述目标标识信息传输至服务端,以便所述服务端根据所述目标标识信息返回相应的预设api实现包。
s14:接收并加载所述服务端返回的所述预设api实现包,以更新所述待更新应用。
本实施例中,基于所述目标api实现包的文件信息,确定目标标识信息,然后将所述目标标识信息传输至服务端,以便所述服务端根据所述目标标识信息返回相应的预设api实现包。在一种实施例中,直接将所述目标api实现包的文件信息作为所述目标标识信息,所述服务端接收到所述目标api实现包的文件信息后,将所述目标api实现包的文件信息与所述服务端上与所述目标api包的功能对应的实现包的最新版本的文件信息进行比对,当两者不一致时,返回所述服务端上与所述目标api包的功能对应的最新版本的实现包,所述预设api实现包即为所述服务端上与所述目标api包的功能对应的最新版本的实现包。在另一种实施例中,所述预设api实现包可以理解为定制的api实现包,所述目标标识信息除了所述目标api实现包的文件信息还包括所述目标api包的名称、版本及所述待更新应用的名称等信息,通过上述信息可以确定用户的具体需求,进而返回定制化的api实现包。
本实施例中,所述用户端接收所述服务端返回的相应的预设api实现包并加载所述预设api实现包,以更新所述待更新应用。本实施例中通过创建新的类加载器来加载所述预设api实现包,所述类加载器是java运行环境(javaruntimeenvironment)的一部分,负责动态加载java类到java虚拟机的内存空间中。本实施例可以等待更新应用的所有api包的对应的所述预设api实现包都下载到本地后再创建新的类加载器统一加载所有的所述预设api实现包,也可以接收到一个所述预设api实现包就新创建一个类加载器加载所述预设api实现包,本实施例对此不做限定。
可见,本申请实施例先获取待更新应用的api包,以得到目标api包,并确定所述目标api包对应的目标api实现包的文件信息,然后基于所述目标api实现包的文件信息,确定目标标识信息,并将所述目标标识信息传输至服务端,以便所述服务端根据所述目标标识信息返回相应的预设api实现包,最后接收并加载所述服务端返回的所述预设api实现包,以更新所述待更新应用。本申请将不稳定的api实现包放在服务端,用户端只需引入服务端提供的api包,当需要更新应用功能时,只用从服务端下载相应的api实现包来实现功能的更新,通过上述方法能在不更新api包的情况下将服务端的功能更快地推送至用户端,提高应用更新的效率。
图2为本申请实施例提供的一种具体的应用更新方法流程图,图3为本申请实施例提供的一种应用更新方案示意图。参见图2和图3所示,该应用更新方法包括:
s21:加载启动包以查找待更新应用对应的数据包中是否存在预设api属性文件,如果是,则将所述预设api属性文件对应的数据包确定为目标api包。
本实施例中,为了实现应用的自动更新,应用在启动的时候,首先需要加载启动包,本实施例中,所述启动包为bootstrap包,所述bootstrap包是一个软件框架(softwareframework),通常指为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。所述bootstrap包具备查找满足特定规范的javaapi包并进一步处理的能力。特别地如果是servlet应用,所述bootstrap包会先基于servlet的接口做好初始化类钩子,以确保tomcat或jetty等servlet容器在启动的时候加载所述bootstrap包。
所述bootstrap包启动的时候,会查找待更新应用对应的数据包中是否存在预设api属性文件,所述api属性文件在本实施例中指plugin.properties文件,也即当所述待更新应用对应的数据包中包含所述plugin.properties文件时,将所述plugin.properties文件对应的数据包确定为目标api包。
s22:查找所述待更新应用对应的本地的实现包文件中是否存在目标api实现包,如果是,则获取所述目标api实现包的目标摘要值,并将所述目标摘要值确定为所述目标api实现包的文件信息,如果否,则将所述目标api实现包的文件信息设置为空值。
本实施例中,在所述目标api包确定后,需要查找所述待更新应用对应的本地的实现包文件中是否存在目标api实现包,其中,所述目标api实现包为所述目标api包对应的实现包。如果所述待更新应用对应的本地的实现包文件中存在所述目标api实现包,则获取所述目标api实现包的目标摘要值,本实施例中所述目标摘要值为所述目标api实现包的md5值,当然也可以为能反映所述目标api实现包的身份的其他信息,本实施例对此不做限定。不难理解,所述md5值是利用信息摘要算法生成的具有特殊格式的数值,从某种程度上可视为文件的id,获取md5值的方式有很多,本实施例不进行限定。进一步的,当所述待更新应用对应的本地的实现包文件中存在目标api实现包时,将所述目标api实现包的md5值确定为所述目标api实现包的文件信息,如果所述待更新应用对应的本地的实现包文件中不存在目标api实现包,则将所述目标api实现包的文件信息设置为空值。
本实施例中,通过判断所述待更新应用对应的本地的实现包文件的名称与所述目标api包的名称是否一致来确定所述待更新应用对应的本地的实现包文件中是否存在目标api实现包,如果所述待更新应用对应的本地的实现包文件的名称与所述目标api包的名称一致,则说明所述待更新应用对应的本地的实现包文件中存在目标api实现包,此时获取所述目标api实现包的目标摘要值,并将所述目标摘要值确定为所述目标api实现包的文件信息。如果所述待更新应用对应的本地的实现包文件的名称与所述目标api包的名称不一致,则说明所述待更新应用对应的本地的实现包文件中不存在目标api实现包,此时将所述目标api实现包的文件信息设置为空值。所述实现包文件一般以压缩文件的形式保存在本地,因此本实施例中是将所述待更新应用对应的本地的实现包压缩文件的名称与所述目标api包的名称进行比。
s23:遍历所述目标api包,读取所述目标api包的名称、版本,以得到所述目标api包的文件信息,并将所述目标摘要值、所述目标api包的文件信息及所述待更新应用的名称确定为目标标识信息。
s24:获取所述目标api实现包对应的服务端地址。
s25:将所述目标标识信息传输至所述服务端地址对应的服务端,以便所述服务端在接收到所述用户端发送的所述目标标识信息后,根据所述目标api包的名称、版本及所述待更新应用的名称确定目标需求,并基于所述目标需求确定相应的预设api实现包,判断所述目标摘要值与所述预设api实现包的摘要值是否一致,如果否,则返回所述预设api实现包。
本实施例中,为了能让所述服务端返回相应的定制化的所述预设api实现包,需要再次遍历所述目标api包中的plugin.properties文件列表,通过遍历所述目标api包中的plugin.properties文件列表读取所述目标api包的名称(name)、版本(version),以得到所述目标api包的文件信息,在此基础上,将所述目标api实现包的md5值、所述目标api包的文件信息及所述待更新应用的名称确定为目标标识信息,其中所述目标api包的名称能反映所述目标api包的功能信息,所述服务端根据所述目标api包的名称确定所述预设api实现包范围,所述服务端根据所述目标api包的版本及所述待更新应用的名称确定所述用户端对应的用户需求。
进一步的,在java中,所述目标api实现包对应的服务端地址可以通过遍历所述plugin.properties文件列表得到,当所述服务端为具体的网页时,所述服务端地址为一个具体的统一资源定位符(url,uniformresourcelocator),此时通过将所述目标标识信息添加到所述url参数上的方式访问所述目标api实现包对应的服务端同时将所述目标标识信息传输至所述服务端。当所述服务端为服务器时,可以通过获取所述目标api实现包对应的服务端ip地址并将所述目标标识信息以数据包的形式传输至所述服务端。所述服务端在接收到所述用户端发送的所述目标标识信息后,根据所述目标api包的名称、版本及所述待更新应用的名称确定目标需求,其中,所述目标需求为所述用户端对应的用户对api实现包的特定需求,所述目标需求已经提前获取并和相应的所述预设api实现包相互对应,根据所述目标需求可以确定所述目标api包对应的所述预设api实现包的范围,进一步判断所述目标摘要值与所述预设api实现包的摘要值是否一致,如果不一致,说明所述待更新应用对应的本地的实现包文件中不存在用户需要的所述目标api实现包,此时返回所述预设api实现包。图3中的最新包指在所述目标api包对应的所述预设api实现包的范围中的最新版本的实现包,当所述用户端没有设置具体的需求时,可以返回与所述目标api包对应的最新版本的实现包,此时,所述最新版本的实现包为所述预设api实现包,另一方面,所述最新包也可以为与所述用户端的所述目标需求对应的api实现包中的最新版本的实现包,也即预设api实现包。
需要说明的是,对于为具体的网页的所述服务端,如果所述目标摘要值与所述预设api实现包的摘要值一致,说明所述待更新应用对应的本地的实现包文件中存在用户需要的所述目标api实现包,为了减少资源占用率和所述服务端的运行压力,此时仅需返回http状态码304,当所述用户端接收到304状态码时,直接使用所述待更新应用对应的本地的实现包文件中存在的所述目标api实现包即可。
s26:接收所述服务端返回的所述预设api实现包,并创建目标类加载器,将所述目标类加载器设置为目标类加载的父类以加载所述预设api实现包。
本实施例中,所述用户端接收到所述服务端返回的所述预设api实现包后,所述bootstrap包需要新建一个类加载器,也即所述目标类加载器,并将该目标类加载器的加载路径指向所述预设api实现包,同时把所述待更新应用本身的类加载的父类替换成新创建的所述目标类加载器。之后更新后的应用的类加载器在加载类的时候,会优先使用所述目标类加载器来加载类,实现包中的类也由所述目标类加载器来加载。本实施例以tomcat为例来说明本方案中的类加载机制,如图4所示,tomcat是一种轻量级的javaweb容器。原生tomcat的类加载器在加载类的时候先由子类自身加载类,当找不到要加载的类时才委托父类加载,破坏了双亲委派原则。本方案插入了一个pluginclassloader类加载器,实现了动态下载实现包并加载类的功能,该类加载器用于加载web-inf/lib及实现包,当bootstrap包启动后将类加载任务首先委派给父类,也即新插入的类加载器,父类加载失败后才由子类进行加载,所述类加载机制为双亲委派机制。
可见,本申请实施例首先通过加载启动包以查找待更新应用对应的数据包中是否存在预设api属性文件,如果是,则将所述预设api属性文件对应的数据包确定为目标api包。然后查找所述待更新应用对应的本地的实现包文件中是否存在目标api实现包,如果是,则获取所述目标api实现包的目标摘要值,并将所述目标摘要值确定为所述目标api实现包的文件信息,如果否,则将所述目标api实现包的文件信息设置为空值,并读取所述目标api包的名称、版本,以得到所述目标api包的文件信息,并将所述目标摘要值、所述目标api包的文件信息及所述待更新应用的名称确定为目标标识信息。最后将所述目标标识信息传输至所述服务端地址对应的服务端,以便所述服务端在接收到所述用户端发送的所述目标标识信息后,根据所述目标api包的名称、版本及所述待更新应用的名称确定目标需求,并基于所述目标需求确定相应的预设api实现包,判断所述目标摘要值与所述预设api实现包的摘要值是否一致,如果否,则返回所述预设api实现包。上述步骤中服务端根据用户需求返回对应的定制实现包,同时将创建的目标类加载器设置为所述待更新应用的类加载的父类来加载所述预设api实现包,从而实现所述待更新应用的更新。
参见图5所示,本申请实施例还相应公开了一种应用更新装置,包括:
获取模块11,用于获取待更新应用的目标api包,以得到目标api包,并确定所述目标api包对应的目标api实现包的文件信息;
确定模块12,用于基于所述目标api实现包的文件信息,确定所述目标标识信息;
传输模块13,用于将所述目标标识信息传输至服务端,以便所述服务端根据所述目标标识信息返回相应的预设api实现包;
更新模块14,用于接收并加载所述服务端返回的所述预设api实现包,以更新所述待更新应用。
可见,本申请实施例先获取待更新应用的api包,以得到目标api包,并确定所述目标api包对应的目标api实现包的文件信息,然后基于所述目标api实现包的文件信息,确定目标标识信息,并将所述目标标识信息传输至服务端,以便所述服务端根据所述目标标识信息返回相应的预设api实现包,最后接收并加载所述服务端返回的所述预设api实现包,以更新所述待更新应用。本申请用户端只需引入服务端提供的api包,当需要更新应用功能时,只用从服务端下载相应的api实现包来实现功能的更新,通过上述方法能够在不对软件开发工具包进行整体更新的情况下,也即不变动api包的情况下将服务端的功能更快地推送至用户端,提高应用更新的效率。
在一些具体实施例中,所述获取模块11,具体包括:
第一查找单元,用于加载启动包以查找待更新应用对应的数据包中是否存在预设api属性文件,如果是,则将所述预设api属性文件对应的数据包确定为目标api包;
第二查找单元,用于查找所述待更新应用对应的本地的实现包文件中是否存在目标api实现包,如果是,则获取所述目标api实现包的目标摘要值,并将所述目标摘要值确定为所述目标api实现包的文件信息,如果否,则将所述目标api实现包的文件信息设置为空值。
在一些具体实施例中,所述确定模块12,具体包括:
读取单元,用于遍历所述目标api包,读取所述目标api包的名称、版本,以得到所述目标api包的文件信息;
确定子单元,用于将所述目标摘要值、所述目标api包的文件信息及所述待更新应用的名称确定为目标标识信息。
在一些具体实施例中,所述更新模块14,具体包括:
接收单元,用于接收所述服务端返回的所述预设api实现包;
创建单元,用于创建目标类加载器,并将所述目标类加载器设置为目标类加载的父类以加载所述预设api实现包。
进一步的,本申请实施例还提供了一种电子设备。图6是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图6为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的应用更新方法中的相关步骤。另外,本实施例中的电子设备20具体可以为用户端。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222及数据包223等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据包223的运算与处理,其可以是windowsserver、netware、unix、linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的应用更新方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223可以包括电子设备20收集到的各种数据包。
进一步的,本申请实施例还公开了一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的应用更新方法步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种应用更新方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
1.一种应用更新方法,其特征在于,应用于用户端,包括:
获取待更新应用的api包,以得到目标api包,并确定所述目标api包对应的目标api实现包的文件信息;
基于所述目标api实现包的文件信息,确定目标标识信息;
将所述目标标识信息传输至服务端,以便所述服务端根据所述目标标识信息返回相应的预设api实现包;
接收并加载所述服务端返回的所述预设api实现包,以更新所述待更新应用。
2.根据权利要求1所述的应用更新方法,其特征在于,所述获取待更新应用的目标api包,以得到目标api包,包括:
加载启动包以查找待更新应用对应的数据包中是否存在预设api属性文件,如果是,则将所述预设api属性文件对应的数据包确定为目标api包。
3.根据权利要求2所述的应用更新方法,其特征在于,所述确定所述目标api包对应的目标api实现包的文件信息,包括:
查找所述待更新应用对应的本地的实现包文件中是否存在目标api实现包,如果是,则获取所述目标api实现包的目标摘要值,并将所述目标摘要值确定为所述目标api实现包的文件信息,如果否,则将所述目标api实现包的文件信息设置为空值。
4.根据权利要求3所述的应用更新方法,其特征在于,所述查找所述待更新应用对应的本地的实现包文件中是否存在目标api实现包,包括:
判断所述待更新应用对应的本地的实现包文件的名称与所述目标api包的名称是否一致,如果是,则判定所述待更新应用对应的本地的实现包文件中存在所述目标api实现包。
5.根据权利要求3所述的应用更新方法,其特征在于,所述基于所述目标api实现包的文件信息,确定目标标识信息,包括:
遍历所述目标api包,读取所述目标api包的名称、版本,以得到所述目标api包的文件信息;
将所述目标摘要值、所述目标api包的文件信息及所述待更新应用的名称确定为目标标识信息。
6.根据权利要求5所述的应用更新方法,其特征在于,所述将所述目标标识信息传输至服务端,以便所述服务端根据所述目标标识信息返回相应的预设api实现包,包括:
获取所述目标api实现包对应的服务端地址;
将所述目标标识信息传输至所述服务端地址对应的服务端,以便所述服务端在接收到所述用户端发送的所述目标标识信息后,根据所述目标api包的名称、版本及所述待更新应用的名称确定目标需求,并基于所述目标需求确定相应的预设api实现包,判断所述目标摘要值与所述预设api实现包的摘要值是否一致,如果否,则返回所述预设api实现包。
7.根据权利要求1至6任一项所述的应用更新方法,其特征在于,所述接收并加载所述服务端返回的所述预设api实现包,以更新所述待更新应用,包括:
接收所述服务端返回的所述预设api实现包;
创建目标类加载器,并将所述目标类加载器设置为所述待更新应用的类加载的父类以加载所述预设api实现包。
8.一种应用更新装置,其特征在于,包括:
获取模块,用于获取待更新应用的目标api包,以得到目标api包,并确定所述目标api包对应的目标api实现包的文件信息;
确定模块,用于基于所述目标api实现包的文件信息,确定所述目标标识信息;
传输模块,用于将所述目标标识信息传输至服务端,以便所述服务端根据所述目标标识信息返回相应的预设api实现包;
更新模块,用于接收并加载所述服务端返回的所述预设api实现包,以更新所述待更新应用。
9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器;其中所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至7任一项所述的应用更新方法。
10.一种计算机可读存储介质,其特征在于,用于存储计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如权利要求1至7任一项所述的应用更新方法。
技术总结