发明内容
鉴于上述技术问题,提出了一种解决上述问题或者至少部分解决上述问题的终端设备的应用程序更新方法。
本发明的一个目的是要提供一种能够在更新目标应用程序的同时,将与目标应用程序功能相关的关联应用程序也一并进行更新,避免某一应用程序更新某一功能时,关联该应用程序的某一功能的所有应用程序在使用该功能时出现异常、崩溃等场景。
本发明的一个进一步的目的是要全面、准确地查找关联应用程序集,避免遗漏,提高了更新准确率。
特别地,根据本发明的一方面,本发明提供了一种终端设备的应用程序更新方法,应用于与终端设备的客户端连接的服务端,该应用程序更新方法包括:
获取目标应用程序的更新包信息;
基于目标应用程序的更新包信息查找目标应用程序的关联应用程序集,得到由关联应用程序集组成的第一应用列表,关联应用程序集包括目标应用程序;
将第一应用列表下发至客户端,并接收客户端从第一应用列表中筛选过滤掉已安装的应用程序后返回的第二应用列表;
根据第二应用列表生成更新包,并将更新包下发至客户端以安装更新包。
可选地,基于目标应用程序的更新包信息查找目标应用程序的关联应用程序集,得到由关联应用程序集组成的第一应用列表,包括:
根据更新包信息,获取目标应用程序所涵盖的第一功能集;
以第一功能集作为筛选功能集,对筛选功能集中的各项功能进行逐项查找,筛选出涉及筛选功能集中的任一项功能的应用程序作为关联应用程序集;
根据筛选出的关联应用程序集获取第二功能集,第二功能集涵盖关联应用程序集中各应用程序的功能;
循环执行以第二功能集作为新的筛选功能集,对筛选功能集中的各项功能进行逐项查找,筛选出新的关联应用程序集,根据新的关联应用程序集获取新的第二功能集,新的第二功能集涵盖新的关联应用程序集中各应用程序的功能,直到新的第二功能集与前一轮的第二功能集相同;
统计最后得到的所述关联应用程序集中的应用程序,并移除重复的应用程序;
生成由去重后的关联应用程序集组成的第一应用列表。
可选地,对筛选功能集中的各项功能进行逐项查找,筛选出涉及筛选功能集中的任一项功能的应用程序作为关联应用程序集,包括:
将每个应用程序的功能集分别与筛选功能集进行且运算;
若某个应用程序的功能集与筛选功能集的且运算结果为真,则确定应用程序为关联应用程序集。
可选地,在终端设备的目标应用程序需要更新时,获取目标应用程序的更新包信息,包括:
在服务端提出目标应用程序的更新请求时,从服务端获取预先存储的目标应用程序的更新包信息;或
在客户端提出目标应用程序的更新请求时,接收客户端上传的目标应用程序的更新包信息。
可选地,根据第二应用列表生成更新包,包括:
搜索第二应用列表中各应用程序的更新文件;
将更新文件打包成更新包。
可选地,在将更新文件打包成更新包之后,应用程序更新方法还包括:生成更新包的第一校验码;且
将更新包下发至客户端的过程中,还包括:将第一校验码随更新包一并下发至客户端。
特别地,根据本发明的另一方面,本发明还提供了一种终端设备的应用程序更新方法,应用于终端设备上的客户端,该应用程序更新方法包括:
在目标应用程序需要更新时,接收服务端下发的第一应用列表,第一应用列表由目标应用程序的关联应用程序集组成,关联应用程序集包括目标应用程序;
从第一应用列表中筛选过滤掉已安装的应用程序得到第二应用列表,并将第二应用列表上传至服务端;
接收服务端下发的根据第二应用列表生成的更新包,并安装更新包。
可选地,从第一应用列表中筛选过滤掉已安装的应用程序得到第二应用列表,包括:
获取客户端的已安装应用列表;
将第一应用列表与已安装应用列表进行版本号以及功能匹配,筛选过滤出第一应用列表中已安装于客户端上的应用程序;
基于筛选过滤后的第一应用列表形成第二应用列表。
可选地,安装更新包,包括:
读取更新包中涉及的所有应用程序相关的类加载器、地址加载器和dex加载器;
通过地址加载器获取更新包中涉及的所有应用程序的dex地址列表;
根据dex地址列表确定各应用程序对应的dex文件位置;
根据dex文件位置,通过dex加载器加载各应用程序的dex文件,并更新dex地址列表。
可选地,在安装更新包之前,前述应用程序更新方法还包括:
校验更新包的正确性。
本发明能够在终端设备的目标应用程序需要更新时,获取目标应用程序的更新包信息,进而基于目标应用程序的更新包查找目标应用程序的关联应用程序集,得到由关联应用程序集组成的第一应用列表,其中关联应用程序集包括目标应用程序,然后将第一应用列表下发至客户端,并接收客户端从第一应用列表中筛选过滤掉已安装的应用程序后返回的第二应用列表,根据第二应用列表生成更新包,将更新包下发至客户端以安装更新包。基于本发明提供的方案,当更新某一目标应用程序时,能够自动查找该目标应用程序的关联应用程序集,从而将与目标应用程序功能相关的关联应用程序也一并进行更新,避免了某一应用程序更新某一功能时,关联该应用程序的某一功能的所有应用程序在使用该功能时出现异常、崩溃等场景。
进一步地,本发明通过对筛选功能集进行逐项查找,以全面、准确地查找目标应用程序的关联应用程序集,避免遗漏,提高了更新准确率。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
本发明实施例所提供的终端设备的应用程序更新方法主要涉及两种执行主体:服务端和客户端。服务端用于在目标应用程序被触发更新时查找目标应用程序的关联应用程序集。客户端用于对目标应用程序的关联应用程序集中筛选过滤掉已安装的应用程序后剩余的应用程序进行更新安装。本发明实施例通过服务端以及客户端的连通配合,实现了目标应用程序以及与目标应用程序关联的应用程序的联合更新。以下分别从不同执行主体角度来说明本发明实施例提供的终端设备的应用程序更新方法。
服务端
图1是根据本发明一个实施例的终端设备的应用程序更新方法的示意性流程图。参见图1,在本发明一实施例中,终端设备的应用程序更新方法可包括步骤S102至步骤S108。
步骤S102,获取目标应用程序的更新包信息。
步骤S104,基于目标应用程序的更新包信息查找目标应用程序的关联应用程序集,得到由关联应用程序集组成的第一应用列表。关联应用程序集包括目标应用程序。
步骤S106,将第一应用列表下发至客户端,并接收客户端从第一应用列表中筛选过滤掉已安装应用程序后返回的第二应用列表。
步骤S108,根据第二应用列表生成更新包,并将更新包下发至客户端以安装更新包。
本发明实施例能够在终端设备的目标应用程序需要更新时,获取目标应用程序的更新包信息,进而基于目标应用程序的更新包查找目标应用程序的关联应用程序集,得到由关联应用程序集组成的第一应用列表,其中关联应用程序集包括目标应用程序,然后将第一应用列表下发至客户端,并接收客户端从第一应用列表中筛选过滤掉已安装的应用程序后返回的第二应用列表,根据第二应用列表生成更新包,将更新包下发至客户端以安装更新包。基于本发明提供的方案,当更新某一目标应用程序时,能够自动查找该目标应用程序的关联应用程序集,从而将与目标应用程序功能相关的关联应用程序也一并进行更新,避免了某一应用程序更新某一功能时,关联该应用程序的某一功能的所有应用程序在使用该功能时出现异常、崩溃等场景。并且,通过对第一应用列表的筛选过滤,可将已安装于客户端上的应用程序滤除,从而有效避免对移动终端上已安装应用程序的重复更新,进一步提升了更新效率。
步骤S102中提及的更新包信息可以是目标应用程序更新的版本信息。例如可以包括应用程序的更新版本的版本号、所含有的功能、所关联的应用程序、和/或文件存放位置等。
目标应用程序的更新请求,可以通过服务端提出,也可以通过客户端提出。在本发明的一实施例中,当通过服务端提出更新目标应用程序的更新请求时,可从服务端获取预先存储的目标应用程序的更新包信息。在本发明的另一些实施例中,当通过客户端提出目标应用程序的更新请求时,可接收客户端上传的目标应用程序的更新包信息。
在本发明一些实施例中,步骤S104还可以包括如下步骤:
步骤1:根据更新包信息,获取目标应用程序所涵盖的第一功能集。
功能集是应用程序所支持的所有功能名称以及对应的功能描述的集合,可预先存储在数据库内。该步骤中的第一功能集可定义为enum枚举类型,以保证功能的顺序递增。
步骤2:以第一功能集作为筛选功能集,对筛选功能集中的各项功能进行逐项查找,筛选出涉及筛选功能集中的任一功能的应用程序作为关联应用程序集。
步骤3:根据筛选出的关联应用程序集获取第二功能集。其中第二功能集涵盖关联应用程序集中各应用程序的功能。可以理解,第一功能集相当于第二功能集的子集。
该步骤中的第二功能集可定义为enum枚举类型,以保证功能的顺序递增。
步骤4:循环执行以第二功能集作为新的筛选功能集,对筛选功能集中的各项功能进行逐项查找,筛选出新的关联应用程序集,根据新的关联应用程序集获取新的第二功能集,新的第二功能集涵盖新的关联应用程序集中各应用程序的功能,直到新的第二功能集与前一轮的第二功能集相同。
步骤5:统计最后得到的关联应用程序集中的应用程序,并移除重复的应用程序。
步骤6:生成由去重后的关联应用程序集组成的第一应用列表。
在该实施例中,通过对筛选功能集中的各项功能进行逐项查找,能够筛选出目标应用程序以及与目标应用程序关联的全部应用程序,以便得到更全面的关联应用程序集,提高关联应用程序集的查找效率。
在一些进一步的实施例中,在对筛选功能集中的各项功能进行逐项查找,筛选出涉及筛选功能集中的任一项功能的应用程序作为关联应用程序集时,可首先获取每个应用程序的功能集,然后将每个应用程序的功能集分别与筛选功能集进行且运算,若某个应用程序的功能集与筛选功能集的且运算结果为真,则确定该应用程序为与目标应用程序关联的应用程序,统计所有与目标应用程序关联的应用程序形成关联应用程序集。如此通过各应用程序的功能集与筛选功能集的且运算,即可方便快捷地确定出与目标应用程序关联的应用程序,从而得到关联应用程序集,有助于提高更新效率。
示意性的,假设将目标应用程序对应的第一功能集作为筛选功能集A。筛选功能集A所涵盖的功能为功能a、功能b、功能c,若某一个应用程序的功能集B所涵盖的功能为功能a、功能d、功能e,而另一个应用程序的功能集C所涵盖的功能为功能f、功能g、功能h。此时,在将功能集B和功能集C分别与筛选功能集A进行且运算时,则可得出功能集B与筛选功能集A的且运算结果为真,功能集C与筛选功能集A的且运算结果为假。也就是说,在这一情况下,功能集B对应的应用程序为需要和目标应用程序一并更新的关联应用程序,需要筛选出来,而功能集C对应的应用程序则是不需要和目标应用程序一并更新的应用程序,不需要筛选出来。
此外,为便于统计与目标应用程序关联的应用程序,可在确定应用程序为目标应用程序关联的应用程序之后,可对与目标应用程序关联的应用程序添加标识信息(例如,为与目标应用程序关联的应用程序添加标签),进而根据标识信息统计最后得到所有与目标应用程序关联的应用程序。
在本发明一些实施例中,根据第二应用列表生成更新包可以包括:搜索第二应用列表中各应用程序的更新文件;将更新文件打包成更新包。通过搜索第二应用列表中各应用程序的更新文件并打包,以便更新文件的快速传输,有助于提升更新效率。
数据传输过程中,可能会被非法篡改导致传输了非法数据,造成安全隐患。针对这种情况,可在将更新文件打包成更新包之后,进一步生成更新包的第一校验码。具体地,可根据预设计算方式生成第一校验码。然后将第一校验码以及更新包一并下发至客户端,以便客户端对更新包进行校验来确定更新包的正确性,从而确保数据传输的安全性。预设计算方式可根据实际应用需求设置,例如可以是MD5消息摘要算法(MD5 Message-DigestAlgorithm,简称MD5算法),也就是说,服务端可以通过MD5算法生成第一校验码。MD5算法是一种被广泛使用的密码杂凑函数,可以产生出一个128位元的散列值,用于确保信息传输完整一致。
另外,在步骤S108之后,服务端还可以接收客户端返回的更新结果,以便及时了解应用程序的更新情况。
客户端
图2是根据本发明另一个实施例的终端设备的应用程序更新方法的示意性流程图。参见图2所示,在本发明一实施例中,终端设备的应用程序更新方法可包括步骤S202至步骤S206。
步骤S202,在目标应用程序需要更新时,接收服务端下发的第一应用列表。第一应用列表由目标应用程序的关联应用程序集组成,关联应用程序集包括目标应用程序。
步骤S204,从第一应用列表中筛选过滤掉已安装的应用程序得到第二应用列表,并将第二应用列表上传至服务端。
步骤S206,接收服务端下发的根据第二应用列表生成的更新包,并安装更新包。
在本发明实施例中,在目标应用程序需要更新时,接收服务端下发的由目标应用程序的关联应用程序集组成的第一应用列表,进而从第一应用列表中筛选过滤掉已安装的应用程序得到第二应用列表,并将第二应用列表上传至服务端,然后接收服务端下发的根据第二应用列表生成的更新包,并安装接收到的更新包。采用本发明实施例,能够对目标应用程序以及与目标应用程序某一功能关联的应用程序进行一并更新,避免了关联该目标应用程序的某一功能的所有应用程序在使用该功能时出现异常、崩溃等场景,并且,客户端能够将第一应用列表中已安装于客户端上的应用程序滤除,可有效避免对移动终端上已安装应用程序的重复更新,进一步提升了更新效率。
在本发明一些实施例中,从第一应用列表中筛选过滤掉已安装的应用程序得到第二应用列表的步骤进一步可包括:获取客户端的已安装应用列表;将第一应用列表与已安装应用列表进行版本号以及功能匹配,筛选过滤出第一应用列表中已安装于客户端上的应用程序;基于筛选过滤后的第一应用列表形成第二应用列表。这里已安装应用列表由客户端上已安装应用程序集组成。已安装应用程序集可以包括目标应用程序的历史版本以及与目标应用程序关联的应用程序的历史版本。
在将第一应用列表与已安装应用列表进行版本号以及功能匹配时,具体地,可将第一应用列表中的某一个应用程序与已安装应用程序列表中的应用程序进行版本号以及功能匹配。若第一应用列表中的某一个应用程序与已安装应用程序列表中的应用程序的版本号以及功能一致,说明该应用程序为已安装于客户端上的应用程序,需要将其从第一应用列表中过滤掉,从而基于过滤后的第一应用列表中剩下的应用程序生成第二应用列表。
关于更新包的安装,本发明提供了一种可选安装方式。例如,可首先读取更新包中涉及的所有应用程序的类加载器、地址加载器和dex加载器,然后通过地址加载器获取更新包中涉及的所有应用程序的dex地址列表,进而根据dex地址列表确定各应用程序对应的dex文件位置,最后根据dex文件位置,通过dex加载器加载各应用程序的dex文件,并更新dex地址列表,如此即可完成更新包中各应用程序的更新安装。
客户端在完成更新包中各应用程序的更新安装后,还可向服务端返回更新结果,以便服务端及时了解更新安装情况。
考虑到数据传输的安全性,在安装更新包之前,还可对更新包进行校验,以确定更新包的正确性。具体地,可接收由服务端下发的更新包的第一校验码,其中该第一校验码由服务端根据预设计算方式生成;客户端通过与服务端使用相同的预设计算方式,计算出客户端接收到的更新包的第二校验码;比较第一校验码与第二校验码是否相等;若第一校验码与第二校验码相等,则校验通过;若第一校验码与第二校验码不等,则校验不通过。预设计算方式可根据实际应用需求设置,例如可以是MD5消息摘要算法(MD5 Message-DigestAlgorithm,简称MD5算法)。也就是说,服务端通过MD5算法生成第一校验码,客户端可通过与服务端相同的MD5算法生成第二校验码,进而通过第一校验码与第二校验码的比较结果来校验更新包的正确性。MD5算法是一种被广泛使用的密码杂凑函数,可以产生出一个128位元的散列值,用于确保信息传输完整一致。
其中,在比较第二校验码和第一校验码是否相等时,可通过比较字符串的大小来确定第二校验码与第一校验码是否相等。
在一些实施例中,在更新dex地址列表之后,还可对该已更新dex地址列表的应用程序发送重启命令,以触发该应用程序重启,从而完成更新。之后,还可返回更新结果至服务端,以便服务端及时了解更新情况。
为了能够更清楚了解本发明的技术手段,下面在本发明的一些可选实施例中对终端设备的应用程序更新方法的具体实施方式进行详细介绍。
图3是根据本发明一个实施例的终端设备的应用程序更新方法的示意性详细流程图。参见图3,本实施例的终端设备的应用程序更新方法可包括步骤S302至步骤S334。
步骤S302,服务端存储各应用程序的更新包信息。
步骤S304,服务端向客户端推送目标应用程序的更新请求。
步骤S306,服务端接收客户端响应更新请求返回的请求结果。
步骤S308,根据请求结果判断请求更新是否成功。若请求更新成功,则执行步骤S310;若请求更新失败,则流程结束。
步骤S310,服务端获取目标应用程序的更新包信息。
步骤S312,服务端查找目标应用程序的关联应用程序集,得到第一应用列表。该步骤的第一应用列表由关联应用程序集组成的。关联应用程序集包括目标应用程序。
步骤S314,服务端将第一应用列表下发至客户端。
步骤S316,客户端从第一应用列表中筛选过滤掉已安装的应用程序得到第二应用列表。
步骤S318,客户端向服务端上传第二应用列表。
步骤S320,服务端搜索第二应用列表中各应用程序的更新文件。
步骤S322,服务端将更新文件打包成更新包,并生成更新包的第一校验码。
步骤S324,服务端将更新包以及第一校验码下发至客户端。
步骤S326,客户端计算得到更新包的第二校验码。
步骤S328,客户端判断第一校验码与第二校验码是否相等。若相等,执行步骤S330;若不相等,则流程结束。
步骤S330,客户端向更新包对应的多个应用程序推送对应的更新文件并安装。
步骤S332,客户端向已更新安装的应用程序下发重启命令。
步骤S334,客户端返回更新结果至服务端。
在本实施例的终端设备的应用程序更新方法中,当更新某一目标应用程序时,可以由服务端提出目标应用程序的更新请求,进而通过服务端获取目标应用程序的更新包信息,以查找目标应用程序的关联应用程序集。采用本实施例的方案,当更新某一目标应用程序时,能够自动查找该目标应用程序的关联应用程序集,从而将与目标应用程序功能相关的关联应用程序也一并进行更新,避免了某一应用程序更新某一功能时,关联该应用程序的某一功能的所有应用程序在使用该功能时出现异常、崩溃等场景。并且,通过对第一应用列表的筛选过滤,可将已安装于客户端上的应用程序滤除,从而有效避免对移动终端上已安装应用程序的重复更新,进一步提升了更新效率。
图4是根据本发明另一个实施例的终端设备的应用程序更新方法的示意性详细流程图。参见图4,本实施例的终端设备的应用程序更新方法可包括步骤S402至步骤S430。
步骤S402,客户端提出目标应用程序更新请求。
步骤S404,客户端获取目标应用程序的更新包信息
步骤S406,客户端将目标应用程序的更新包信息上传至服务端。
步骤S408,服务端查找目标应用程序的关联应用程序集,得到第一应用列表。步骤中的第一应用列表由关联应用程序集组成。关联应用程序集包括目标应用程序。
步骤S410,服务端将第一应用列表下发至客户端。
步骤S412,客户端从第一应用列表中筛选过滤掉已安装的应用程序得到第二应用列表。
步骤S414,客户端向服务端上传第二应用列表。
步骤S416,服务端搜索第二应用列表中各应用程序的更新文件。
步骤S418,服务端将更新文件打包成更新包,并生成更新包的第一校验码。
步骤S420,服务端将更新包以及第一校验码下发至客户端。
步骤S422,客户端根据计算得到更新包的第二校验码。
步骤S424,客户端判断第一校验码与第二校验码是否相等。若相等,执行步骤S426;若不相等,则结束流程。
步骤S426,向更新包对应的多个应用程序推送对应的更新文件并安装。
步骤S428,客户端向已更新安装的应用程序下发重启命令。
步骤S430,客户端返回更新结果至服务端。
在本实施例的终端设备的应用程序更新方法中,当更新某一目标应用程序时,可以由客户端提出目标应用程序的更新请求,进而在客户端本地获取目标应用程序的更新包信息并上传至服务端,以通过服务端查找目标应用程序的关联应用程序集。采用本实施例的方案,当更新某一目标应用程序时,能够自动查找该目标应用程序的关联应用程序集,从而将与目标应用程序功能相关的关联应用程序也一并进行更新,避免了某一应用程序更新某一功能时,关联该应用程序的某一功能的所有应用程序在使用该功能时出现异常、崩溃等场景。并且,通过对第一应用列表的筛选过滤,可将已安装于客户端上的应用程序滤除,从而有效避免对移动终端上已安装应用程序的重复更新,进一步提升了更新效率。
根据上述任意一个实施例或多个实施例的组合,本发明实施例能够达到如下有益效果:
本发明实施例能够在终端设备的目标应用程序需要更新时,自动查找该目标应用程序的关联应用程序集,并对关联应用程序集中各应用程序进行一并更新,避免了关联该目标应用程序的某一功能的所有应用程序在使用该功能时出现异常、崩溃等场景。并且,通过对第一应用列表的筛选过滤,可将已安装于客户端上的应用程序滤除,从而有效避免对移动终端上已安装应用程序的重复更新,进一步提升了更新效率。同时,本发明实施例通过对筛选功能集中的各项功能进行逐项查找,能够筛选出目标应用程序以及目标应用程序的全部关联应用程序,以便得到更全面的关联应用程序集,提高关联应用程序集的查找效率。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。