CN113010199B - 应用更新方法、装置、计算机设备和存储介质 - Google Patents
应用更新方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113010199B CN113010199B CN202110279964.4A CN202110279964A CN113010199B CN 113010199 B CN113010199 B CN 113010199B CN 202110279964 A CN202110279964 A CN 202110279964A CN 113010199 B CN113010199 B CN 113010199B
- Authority
- CN
- China
- Prior art keywords
- updated
- patch
- application
- information
- function
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种应用更新方法、装置、计算机设备和存储介质。通过在待更新应用启动时,获取由多个设置有预设插桩代码的函数构成的待更新应用对应的待安装补丁,并将待安装补丁安装至待更新应用中,当启动的待更新应用执行到待更新的函数时,利用该待更新的函数中的预设插桩代码停止执行该待更新的函数,并执行补丁中的更新函数,从而得到更新后的应用。相较于传统的需要用户手动下载更新的安装包并进行安装,从而完成应用更新的方式。本方案通过在应用启动时安装补丁,在执行到需要更新的函数时,利用待更新应用的各个函数中的预设插桩代码,跳过执行该函数并改为执行补丁中的对应的更新函数,从而实现提高应用更新效率的效果。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种应用更新方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,计算机设备的形态也逐渐呈现多样化和便携化的发展趋势。例如手机、平板电脑等智能终端,目前智能终端已经成为了人们日常生活中需要使用的必不可少的设备之一,在这些智能终端中存在多种APP(Application,应用),为保证应用的正常运行,需要对应用进行维护,包括对应用进行更新等方式;目前对于应用的更新的方法通常是在开发者将更新后的应用重新打包,用户通过下载新的安装包安装,从而完成更新的方式。然而,采用这种方式进行应用的更新,会导致更新的效率不高。
因此,目前的应用更新方法存在更新效率低的缺陷。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高应用更新效率的应用更新方法、装置、计算机设备和存储介质。
一种应用更新方法,应用于终端,所述方法包括:
响应于待更新应用的启动信号,获取所述待更新应用对应的待安装补丁;所述待更新应用基于多个设置有预设插桩代码的函数构成;所述待安装补丁中包括与所述待更新应用中的待更新的函数对应的更新函数;
将所述待安装补丁安装至所述待更新应用中;
若检测到所述待更新应用执行所述待更新的函数,通过所述待更新的函数中的预设插桩代码停止执行所述待更新的函数并执行所述更新函数,得到更新后的应用。
在其中一个实施例中,所述获取所述待更新应用对应的待安装补丁,包括:
根据所述待更新应用的版本信息以及与待更新应用对应的已下载的补丁信息,生成对应的补丁获取指令;
向服务器发送补丁获取指令;所述服务器用于根据所述补丁获取指令中的版本信息以及已下载的补丁信息,向所述终端返回所述待更新应用对应的待更新补丁信息;
若所述终端不存在所述待更新补丁信息对应的待更新补丁,从所述服务器中下载与所述待更新补丁信息对应的待更新补丁,作为所述待安装补丁。
在其中一个实施例中,所述方法还包括:
获取构成所述待更新应用对应的多个函数;
针对每个所述函数,在该函数前插入所述预设插桩代码,得到插入代码后的函数;
根据多个所述插入代码后的函数,生成所述待更新应用。
在其中一个实施例中,所述将所述待安装补丁安装至所述待更新应用中,包括:
通过类加载器加载所述待安装补丁中的可执行文件;
将所述可执行文件安装至所述待更新应用中。
在其中一个实施例中,所述得到更新后的应用之后,还包括:
根据所述更新函数在所述更新后的应用中的执行结果,获取所述应用对应的更新结果;
将所述更新结果发送至所述服务器,以使所述服务器根据所述更新结果生成所述待安装补丁对应的更新成功率。
一种应用更新方法,应用于服务器,所述方法包括:
响应于终端发送的补丁获取指令,获取所述补丁获取指令中的待更新应用对应的版本信息以及已下载的补丁信息;
若所述版本信息不为所述待更新应用对应的最新版本,获取所述待更新应用对应的最新版本的待更新补丁信息;
若所述已下载的补丁信息中不包括所述待更新补丁信息,向所述终端返回所述待更新的补丁信息;以使所述终端根据所述待更新的补丁信息,从所述服务器中下载对应的待更新补丁。
在其中一个实施例中,所述获取所述待更新应用对应的最新版本的待更新补丁信息,包括:
获取所述待更新应用与所述版本信息对应的第一安装文件以及所述待更新应用对应的最新版本的第二安装文件;
通过差分算法将所述第一安装文件与所述第二安装文件进行对比,获取所述第二安装文件中与所述第一安装文件存在差异的差异文件;
根据所述差异文件,生成所述待更新补丁,并根据所述待更新补丁得到所述最新版本的待更新补丁信息。
一种应用更新装置,应用于终端,所述装置包括:
补丁获取模块,用于响应于待更新应用的启动信号,获取所述待更新应用对应的待安装补丁;所述待更新应用基于多个设置有预设插桩代码的函数构成;所述待安装补丁中包括与所述待更新应用中的待更新的函数对应的更新函数;
安装模块,用于将所述待安装补丁安装至所述待更新应用中;
更新模块,用于若检测到所述待更新应用执行所述待更新的函数,通过所述待更新的函数中的预设插桩代码停止执行所述待更新的函数并执行所述更新函数,得到更新后的应用。
一种应用更新装置,应用于服务器,所述装置包括:
指令获取模块,用于响应于终端发送的补丁获取指令,获取所述补丁获取指令中的待更新应用对应的版本信息以及已下载的补丁信息;
信息获取模块,用于若所述版本信息不为所述待更新应用对应的最新版本,获取所述待更新应用对应的最新版本的待更新补丁信息;
发送模块,用于若所述已下载的补丁信息中不包括所述待更新补丁信息,向所述终端返回所述待更新的补丁信息;以使所述终端根据所述待更新的补丁信息,从所述服务器中下载对应的待更新补丁。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。
上述应用更新方法、装置、计算机设备和存储介质,通过在待更新应用启动时,获取由多个设置有预设插桩代码的函数构成的待更新应用对应的待安装补丁,并将待安装补丁安装至待更新应用中,当启动的待更新应用执行到待更新的函数时,利用该待更新的函数中的预设插桩代码停止执行该待更新的函数,并执行补丁中的更新函数,从而得到更新后的应用。相较于传统的需要用户手动下载更新的安装包并进行安装,从而完成应用更新的方式。本方案通过在应用启动时安装补丁,在执行到需要更新的函数时,利用待更新应用的各个函数中的预设插桩代码,跳过执行该函数并改为执行补丁中的对应的更新函数,从而实现提高应用更新效率的效果。
附图说明
图1为一个实施例中应用更新方法的应用环境图;
图2为一个实施例中应用更新方法的流程示意图;
图3为一个实施例中应用更新步骤的流程示意图;
图4为一个实施例中应用构造步骤的流程示意图;
图5为另一个实施例中应用更新方法的流程示意图;
图6为又一个实施例中应用更新方法的流程示意图;
图7为一个实施例中补丁下载步骤的流程示意图;
图8为一个实施例中补丁生成步骤的流程示意图;
图9为一个实施例中应用更新装置的结构框图;
图10为另一个实施例中应用更新装置的结构框图
图11为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的应用更新方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。终端102可以在待更新应用启动时,获取待更新应用对应的待安装补丁,例如可以从本地获取,也可以从服务器104中下载获取,并将待安装补丁安装至待更新应用中,当终端102检测到待更新应用执行到该应用中的待更新的函数时,可以通过待更新的函数中预设的插桩代码,停止执行待更新函数,并执行补丁中的更新函数,从而得到更新后的应用。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种应用更新方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤S202,响应于待更新应用的启动信号,获取待更新应用对应的待安装补丁;待更新应用基于多个设置有预设插桩代码的函数构成;待安装补丁中包括与待更新应用中的待更新的函数对应的更新函数。
其中,待更新应用可以是终端102中需要更新的应用,例如存在bug(漏洞),需要修复的应用;或者版本过旧,需要更新的应用。其中,当终端102为安卓设备时,待更新的应用可以是安卓应用,则该安卓设备可以对待更新的安卓应用进行更新。终端102可以在待更新应用启动时,查找并获取待更新应用对应的待安装补丁。例如,终端102可以双线程异步进行待安装补丁的获取,终端102可以从终端102本地查找是否存在已经下载的补丁文件,若检测到本地存在已经下载的补丁,检测该补丁是否已经加载,即是否已经安装,若未安装,则终端102可以针对该补丁进行补丁安装的流程;若本地不存在已经下载的补丁文件,则终端102可以等待服务器104发送的补丁信息,利用服务器104发送的补丁信息下载对应补丁;上述终端102在进行本地检测补丁时,终端102还可以异步向服务器104中发送补丁获取指令,获取服务器104发送的最新版本的补丁信息;终端102可以利用从服务器104得到的最新版本的补丁信息查询本地,检测该补丁信息对应的补丁是否已经存在终端102中,若该补丁信息对应的补丁不存在,则终端102可以利用上述最新版本的补丁信息,从服务器104中国下载最新的补丁作为待安装补丁并保存;若最新版本的补丁已存在,则终端102可以将已下载的最新版本的补丁作为待安装补丁,并进行应用更新。
其中,上述待更新应用可以是基于多个设置有预设插桩代码的函数构成,上述待安装补丁中包括与待更新应用中的待更新的函数对应的更新函数。上述待更新应用可以由多个函数构成,预设插桩代码可以是在各个函数的开头插入的代码,该插桩代码可以用于在特定情况下跳过其所在的函数的执行过程,并将该过程改为执行指定的新的函数;上述预设插桩可以在应用构建阶段插入上述各个函数中;上述待更新应用中的所有函数均可以设置有上述预设插桩代码。上述待安装补丁中可以包括有与待更新应用中的待更新的函数对应的更新函数。待更新的函数可以是待更新应用中需要进行更新的函数,例如存在漏洞的函数或版本过旧的函数。更新函数可以是最新版本的函数,待安装补丁中的各个更新函数可以与待更新应用中的各个待更新的函数对应。
步骤S204,将待安装补丁安装至待更新应用中。
其中,待安装补丁可以是包括更新函数的补丁,终端102可以利用待安装补丁更新上述待更新应用。终端102获取待安装补丁后,可以将待安装补丁安装至待更新应用中。例如,终端102可以通过特定方式加载待安装补丁,从而终端102可以将加载后的补丁安装至待更新应用中。其中,上述获取补丁和安装补丁可以是在应用启动时,终端102在后台进行安装,从而可以无需用户进行手动安装。
步骤S206,若检测到待更新应用执行待更新的函数,通过待更新的函数中的预设插桩代码停止执行待更新的函数并执行更新函数,得到更新后的应用。
其中,待更新的函数可以是待更新应用中需要更新的函数,例如存在漏洞或版本过旧的函数。待更新应用在运行中时,会使用到其中的多个函数,以实现应用的相应功能。当终端102检测到上述待更新应用执行到待更新的函数时,终端102可以通过该待更新函数中的预设插桩代码,停止执行该待更新函数,并改为执行上述补丁中与该待更新的函数对应的更新函数,从而实现应用的更新。例如,如图3所示,图3为一个实施例中应用更新步骤的流程示意图。例如有漏洞,需要更新的函数为方法B,在修复和更新前,终端102会直接执行方法B;在修复和更新时,终端102检测到方法B即将执行时,可以通过方法B的插桩代码,拦截该方法B的执行,即停止执行方法B,并改为执行上述补丁中与方法B对应的更新修复好的方法B,从而实现该函数的更新。其中,上述待更新的函数可以有多个,当终端102对待更新应用中的所有待更新的函数均更新完成时,终端102可以得到更新后的应用。
上述应用更新方法中,通过在待更新应用启动时,获取由多个设置有预设插桩代码的函数构成的待更新应用对应的待安装补丁,并将待安装补丁安装至待更新应用中,当启动的待更新应用执行到待更新的函数时,利用该待更新的函数中的预设插桩代码停止执行该待更新的函数,并执行补丁中的更新函数,从而得到更新后的应用。相较于传统的需要用户手动下载更新的安装包并进行安装,从而完成应用更新的方式。本方案通过在应用启动时安装补丁,在执行到需要更新的函数时,利用待更新应用的各个函数中的预设插桩代码,跳过执行该函数并改为执行补丁中的对应的更新函数,从而实现提高应用更新效率的效果。
在一个实施例中,获取待更新应用对应的待安装补丁,包括:根据待更新应用的版本信息以及与待更新应用对应的已下载的补丁信息,生成对应的补丁获取指令;向服务器104发送补丁获取指令;服务器104用于根据所述补丁获取指令中的版本信息以及已下载的补丁信息,向终端102返回待更新应用对应的待更新补丁信息;若终端102不存在待更新补丁信息对应的待更新补丁,从服务器104中下载与待更新补丁信息对应的待更新补丁,作为待安装补丁。
本实施例中,终端102可以用异步方式分别在本地检测是否存在已下载的补丁,以及向服务器104发送补丁获取指令,使服务器104查询待更新应用最新的补丁信息并返回至终端102中。终端102可以根据上述待更新应用的版本信息以及待更新应用对应的已下载的补丁信息,生成对应的补丁获取指令,并向服务器104发送补丁获取指令。其中,补丁获取指令中可以包括当前待更新应用的版本信息,例如版本号等;还可以包括终端102本地已下载的补丁信息,若终端102本地没有已下载的补丁对应的相关信息,则向补丁获取指令中的已下载补丁信息可以是无已下载补丁。服务器104可以在接收到上述补丁获取指令后,利用该补丁获取指令中,终端102提供的待更新应用的版本信息以及已下载的补丁信息,查询待更新应用对应的最新版本的补丁信息,例如服务器104可以将上述版本信息和补丁信息与服务器104中的数据库中的相应信息进行匹配,从而得到上述最新版本的补丁信息。服务器104可以将上述最新版本的补丁信息发送至终端102,终端102可以获取服务器104发送的最新版本的补丁信息,并检测本地是否存在与该最新版本的补丁信息对应的待更新补丁,若本地不存在最新版本的补丁,则终端102可以利用上述最新版本的补丁信息,从服务器104中下载与该最新版本的补丁信息对应的待更新补丁并保存至终端102本地,得到上述待安装补丁;若终端102在检测后得到本地存在最新版本的补丁,则终端102可以直接将本地的最新版本的补丁作为待安装补丁。从而终端102可以利用得到的待安装补丁实现待更新应用的更新。
通过本实施例,终端102可以通过异步方式分别在本地查询补丁以及向服务器104获取最新补丁信息,并基于本地查询的结果以及服务器104返回的最新补丁信息,确定待安装补丁,从而实现提高应用更新效率的效果。
在一个实施例中,还包括:获取构成待更新应用对应的多个函数;针对每个函数,在该函数前插入预设插桩代码,得到插入代码后的函数;根据多个插入代码后的函数,生成待更新应用。
本实施例中,待更新的应用可以由多个函数构成,例如,待更新的应用可以是由多个函数构造而成的安卓应用。终端102可以在编译应用阶段,即待更新应用构成前,向每个待更新函数对应的函数均插入上述预设插桩代码。例如,终端102可以获取构成待更新应用对应的多个函数,并针对每个函数,在该函数前插入预设插桩代码,得到插入代码后的函数;其中上述函数可以有多个,终端102可以在所有函数均插入上述预设插桩代码后,生成得到上述待更新应用。具体地,如图4所示,图4为一个实施例中应用构造步骤的流程示意图。上述待更新应用可以是安卓应用,安卓应用的文件可以是apk(Android applicationpackage,安卓应用程序包)文件,在编译程序阶段,终端102可以向待更新应用的apk文件中的每个函数前插入特定插桩代码,该插桩代码的作用是在应用补丁包时可以拦截原有的bug方法,从而执行修复后的补丁包中正确方法。例如,终端102可以在编译阶段利用Gradle+ASM技术,在生成apk之前进行函数插装,以便于加载更新补丁的方法。其中,Gradle可以是安卓开发工具Android Studio(安卓工作室)的自动化构建工具;ASM可以是java字节码操纵框架,通过该框架,终端102可以向.java类型的文件中插入上述插桩代码。上述编译插桩的步骤只需集成好一次,安卓开发工具在编译时会自动执行,无需开发者做额外操作。
终端102可以根据插入上述插桩代码后的各个函数,生成上述待更新应用,例如形成APK文件,并进行发布。
通过本实施例,终端102可以通过在编译阶段为待更新应用的每个函数插入特定插桩代码,从而可以利用该插桩代码进行应用更新,实现提高应用更新效率的效果,并且,采用插桩代码实现应用更新,有效避免了安卓应用由于不同版本系统差异带来的不稳定性,从而降低维护成本。
在一个实施例中,将待安装补丁安装至待更新应用中,包括:通过类加载器加载待安装补丁中的可执行文件;将可执行文件安装至待更新应用中。
本实施例中,终端102可以从本地或服务器104中获取上述待安装补丁,终端102在获取待安装补丁后,需要将待安装补丁安装至待更新应用中。例如,待安装补丁中可以包括有多个可执行文件,终端102可以通过类加载器,加载上述待安装补丁中的各个可执行文件,并将可执行文件安装至上述待更新应用中。具体地,上述待更新应用可以是安卓应用,终端102可以通过DexClassLoader(安卓文件类加载器),加载待安装补丁中的dex文件,即安卓对应的可执行文件。其中,dex文件是经过优化的类文件。Android中是通过DexClassLoader来加载安卓的类的。
通过本实施例,终端102可以利用类加载器实现待安装补丁安装至待更新应用的过程,从而实现提高应用更新效率的效果。
在一个实施例中,得到更新后的应用之后,还包括:根据更新函数在更新后的应用中的执行结果,获取应用对应的更新结果;将更新结果发送至服务器,以使服务器根据更新结果生成待安装补丁对应的更新成功率。
本实施例中,终端102可以在更新执行过程中,监测并记录相关参数,用于生成更新结果。例如可以对上述待安装补丁加载至待更新应用的结果进行监测,包括待安装补丁中的更新函数对待更新应用的修复率等。终端102可以根据上述更新函数在上述更新后的应用中的执行结果,获取上述应用对应的更新结果;并且终端102还可以将更新结果发送至服务器104中,服务器104可以根据更新结果生成上述待安装补丁对应的更新成功率。其中更新结果中可以包括待安装补丁的加载状态,包括加载成功和加载失败等状态,还可以包括待安装补丁中的各个更新函数是否成功执行等信息;服务器104可以根据上述加载状态和是否成功执行等信息,统计上述待安装补丁的更新成功率。例如,服务器104可以获取加载成功的待安装补丁的数量与所有待安装补丁的数量的比值,以及待安装补丁中更新函数成功执行的数量以及待安装补丁中所有更新函数的数量的比值,服务器104可以根据上述的各个比值得到上述更新成功率。
通过本实施例,终端102可以在更新应用后利用服务器104得到更新的成功率,从而可以根据成功率调整下一次的更新过程,实现提高应用更新效率的效果。
在一个实施例中,如图5所示,图5为另一个实施例中应用更新方法的流程示意图。本实施例中,包括以下流程:
用户启动待更新应用时,终端102可以并行执行加载补丁和下载补丁的过程。例如,在第一线程中,终端102可以向服务器104发送补丁获取指令,补丁获取指令中可以包括待更新应用的当前版本信息,签名信息等信息;还可以包括本地的已下载的补丁信息,服务器104可以根据上述补丁获取指令,获取待更新应用对应的最新版本的补丁信息,并返回至终端102中,终端102可以获取服务器104发送的最新补丁信息,并检测本地是否存在与该最新补丁信息对应的补丁,若不存在,则终端102可以根据上述最新补丁信息,从服务器104中下载最新版本的补丁并保存至本地。
在第二线程中,终端102可以在待更新应用启动时,检测本地是否存在补丁,若存在,则检测补丁是否已被加载;若已被加载,则终端102可以检测该补丁的合法性,例如终端102可以解密补丁的加密信息,防止加载被人恶意篡改的补丁程序,保证程序的安全性。终端102可以通过上述类加载器,例如通过android的DexClassLoader加载上述补丁文件中的dex文件。并确定是否需要保存patch(补丁)信息;终端102还可以将加载补丁成功或失败的状态,以及补丁中的更新函数在待更新应用中的执行情况作为修复结果,发送至服务器104,服务器104可以根据终端102发送的修复结果统计补丁的更新修复成功率。其中,若上述终端102检测到本地不存在补丁或本地补丁均未加载时,可以结束此次热修复,即结束此次更新。上述第一线程和第二线程可以是异步线程。
通过本实施例,终端102可以通过在应用启动时安装补丁,在执行到需要更新的函数时,利用待更新应用的各个函数中的预设插桩代码,跳过执行该函数并改为执行补丁中的对应的更新函数,从而实现提高应用更新效率的效果。
在一个实施例中,如图6所示,提供了一种应用更新方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤S302,响应于终端发送的补丁获取指令,获取补丁获取指令中的待更新应用对应的版本信息以及已下载的补丁信息。
其中,补丁获取指令可以是终端102发送的指令,终端102可以向服务器104中发送补丁获取指令,获取服务器104发送的最新版本的补丁信息。其中,补丁获取指令中可以包括待更新应用对应的版本信息,例如待更新应用的当前版本信息,还可以包括终端102已下载的补丁信息。服务器104可以在接收到补丁获取指令后,获取上述版本信息以及已下载的补丁信息。另外,服务器104还可以根据终端102的身份信息、待更新应用的信息以及终端102对应的用户信息等,确定终端102的合法性,并提供相应的补丁信息。其中,用户信息可以包括终端102的版本信息和签名信息等。
步骤S304,若版本信息不为待更新应用对应的最新版本,获取待更新应用对应的最新版本的待更新补丁信息。
其中,服务器104可以根据上述补丁获取指令,找到匹配的补丁信息。例如,服务器104可以检测上述版本信息是否为待更新应用的最新版本,若否,则服务器104可以获取待更新应用对应的最新版本的待更新补丁信息;若服务器104检测到上述版本信息为待更新应用的最新版本,则服务器104可以将该最新版本对应的补丁信息作为待更新补丁信息,并且可以向终端102发送无需更新的信息。
步骤S306,若已下载的补丁信息中不包括待更新补丁信息,向终端102返回待更新的补丁信息;以使终端根据待更新的补丁信息,从服务器104中下载对应的待更新补丁。
其中,服务器104还可以检测已下载的补丁信息中是否包括上述待更新补丁信息,即终端102本地是否已下载上述用于更新的待更新补丁信息,若否,则服务器104可以将该待更新补丁信息返回至终端102中,终端102可以根据该待更新补丁信息,从服务器104下载对应的待更新补丁;若服务器104检测到已下载的补丁信息中包括待更新补丁信息,即终端102已将则该待更新补丁信息对应的补丁下载,则服务器104可以向终端102发送无需下载补丁的信息。
通过本实施例,服务器104可以根据终端102发送的信息进行待更新补丁信息的查询,从而实现提高应用更新效率的效果。
在一个实施例中,获取待更新应用对应的最新版本的待更新补丁信息,包括:获取待更新应用与版本信息对应的第一安装文件以及待更新应用对应的最新版本的第二安装文件;通过差分算法将第一安装文件与第二安装文件进行对比,获取第二安装文件中与第一安装文件存在差异的差异文件;根据差异文件,生成待更新补丁,并根据待更新补丁得到最新版本的待更新补丁信息。
本实施例中,第一安装文件可以是待更新应用对应的当前版本的安装文件;第二安装文件可以是待更新应用对应的最新版本的安装文件。服务器104可以根据上述第一安装文件以及第二安装文件得到待更新应用对应的最新版本的待更新补丁信息。其中,上述待更新应用可以是安卓应用,上述第一安装文件以及第二安装文件均可以是APK文件。服务器104可以根据上述待更新应用对应的当前版本信息,得到对应的第一安装文件,即当前版本的安装文件;服务器104还可以根据上述待更新应用对应的最新版本信息,获取对应的最新版本的第二安装文件。并且服务器104可以利用第一安装文件以及第二安装文件,通过差分算法将两个文件进行对比,获取其中存在差异的差异文件,并根据差异文件生成待更新补丁,从而服务器104可以根据待更新补丁得到该待更新补丁对应的最新版本的待更新补丁信息。
具体地,如图7所示,图7为一个实施例中补丁下载步骤的流程示意图。上述第一安装文件可以是待更新应用对应的当前版本的安装文件,该安装文件可以从服务器104中的数据库中获取。第二安装文件可以是修复更新后的安装文件,即最新版本的安装文件,该第二安装文件可以由开发者在对待更新应用进行更新修复后,将更新形成的安装文件,例如APK文件,上传至服务器104,服务器104可以根据上述第一安装文件和第二安装文件形成补丁,并由终端102主动下载。
其中,如图8所示,图8为一个实施例中补丁生成步骤的流程示意图。上述待更新应用可以是安卓应用,上述安装文件可以是安卓中的APK文件,服务器104可以将上述当前版本的安装文件,例如存在漏洞的安装文件,与更新修复后的安装文件通过差分算法进行比较,差分比较出来的便是修改的代码文件,即上述差异文件,服务器104可以将所有差异文件合并加密生成补丁包文件,并标注最新版本的版本号等版本信息,得到上述待更新补丁。另外,服务器104还可以将补丁信息保存至数据库中。
通过本实施例,服务器104可以通过差分算法得到上述待更新补丁,从而减少了应用安装包的大小,实现提高应用更新效率的效果。
应该理解的是,虽然图2-图8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-图8中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图9所示,提供了一种应用更新装置,包括:补丁获取模块500、安装模块502和更新模块504,其中:
补丁获取模块500,用于响应于待更新应用的启动信号,获取待更新应用对应的待安装补丁;待更新应用基于多个设置有预设插桩代码的函数构成;待安装补丁中包括与待更新应用中的待更新的函数对应的更新函数。
安装模块502,用于将待安装补丁安装至待更新应用中。
更新模块504,用于若检测到待更新应用执行待更新的函数,通过待更新的函数中的预设插桩代码停止执行待更新的函数并执行更新函数,得到更新后的应用。
在一个实施例中,上述补丁获取模块500,具体用于根据待更新应用的版本信息以及与待更新应用对应的已下载的补丁信息,生成对应的补丁获取指令;向服务器104发送补丁获取指令;服务器104用于根据所述补丁获取指令中的版本信息以及已下载的补丁信息,向终端102返回待更新应用对应的待更新补丁信息;若终端102不存在待更新补丁信息对应的待更新补丁,从服务器104中下载与待更新补丁信息对应的待更新补丁,作为待安装补丁。
在一个实施例中,上述装置还包括:插桩模块,用于获取构成待更新应用对应的多个函数;针对每个函数,在该函数前插入预设插桩代码,得到插入代码后的函数;根据多个插入代码后的函数,生成待更新应用。
在一个实施例中,上述安装模块502,具体用于通过类加载器加载待安装补丁中的可执行文件;将可执行文件安装至待更新应用中。
在一个实施例中,上述装置还包括:反馈模块,用于根据更新函数在更新后的应用中的执行结果,获取应用对应的更新结果;将更新结果发送至服务器,以使服务器根据更新结果生成待安装补丁对应的更新成功率。
在一个实施例中,如图10所示,提供了一种应用更新装置,包括:指令获取模块600、信息获取模块602和发送模块604,其中:
指令获取模块600,用于响应于终端发送的补丁获取指令,获取补丁获取指令中的待更新应用对应的版本信息以及已下载的补丁信息。
信息获取模块602,用于若版本信息不为待更新应用对应的最新版本,获取待更新应用对应的最新版本的待更新补丁信息。
发送模块604,用于若已下载的补丁信息中不包括待更新补丁信息,向终端102返回待更新的补丁信息;以使终端根据待更新的补丁信息,从服务器104中下载对应的待更新补丁。
在一个实施例中,上述信息获取模块602,具体用于获取待更新应用与版本信息对应的第一安装文件以及待更新应用对应的最新版本的第二安装文件;通过差分算法将第一安装文件与第二安装文件进行对比,获取第二安装文件中与第一安装文件存在差异的差异文件;根据差异文件,生成待更新补丁,并根据待更新补丁得到最新版本的待更新补丁信息。
关于上述各个应用更新装置的具体限定可以参见上文中对于对应的应用更新方法的限定,在此不再赘述。上述各个应用更新装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图11所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种应用更新方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述的应用更新方法。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的应用更新方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (11)
1.一种应用更新方法,其特征在于,应用于终端,所述方法包括:
响应于待更新应用的启动信号,通过第一线程获取所述待更新应用对应的待安装补丁,并通过第二线程检测所述终端是否存在待安装补丁;所述通过第一线程获取所述待更新应用对应的待安装补丁,包括:根据所述待更新应用的版本信息以及与待更新应用对应的已下载的补丁信息,生成对应的补丁获取指令;向服务器发送补丁获取指令,根据所述服务器返回的待更新补丁信息从所述服务器中下载对应的待安装补丁;所述服务器用于检测到所述版本信息不为所述待更新应用对应的最新版本时,获取待更新应用与所述版本信息对应的第一安装文件以及所述待更新应用对应的最新版本的第二安装文件;通过差分算法将所述第一安装文件与所述第二安装文件进行对比,根据所述第二安装文件中与所述第一安装文件存在差异的差异文件得到待更新补丁和待更新补丁信息,向所述终端返回所述待更新应用对应的待更新补丁信息;所述待更新应用基于多个设置有预设插桩代码的函数构成;所述待安装补丁中包括与所述待更新应用中的待更新的函数对应的更新函数;所述第一线程和所述第二线程为异步线程;
若通过所述第二线程检测到所述终端存在待安装补丁,将所述待安装补丁安装至所述待更新应用中;
若检测到所述待更新应用执行所述待更新的函数,通过所述待更新的函数中的预设插桩代码停止执行所述待更新的函数并执行所述更新函数,得到更新后的应用。
2.根据权利要求1所述的方法,其特征在于,所述获取所述待更新应用对应的待安装补丁,包括:
若所述终端不存在所述待更新补丁信息对应的待更新补丁,从所述服务器中下载与所述待更新补丁信息对应的待更新补丁,作为所述待安装补丁。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取构成所述待更新应用对应的多个函数;
针对每个所述函数,在该函数前插入所述预设插桩代码,得到插入代码后的函数;
根据多个所述插入代码后的函数,生成所述待更新应用。
4.根据权利要求1所述的方法,其特征在于,所述将所述待安装补丁安装至所述待更新应用中,包括:
通过类加载器加载所述待安装补丁中的可执行文件;
将所述可执行文件安装至所述待更新应用中。
5.根据权利要求2所述的方法,其特征在于,所述得到更新后的应用之后,还包括:
根据所述更新函数在所述更新后的应用中的执行结果,获取所述应用对应的更新结果;
将所述更新结果发送至所述服务器,以使所述服务器根据所述更新结果生成所述待安装补丁对应的更新成功率。
6.一种应用更新方法,其特征在于,应用于服务器,所述方法包括:
响应于终端通过第一线程发送的补丁获取指令,获取所述补丁获取指令中的待更新应用对应的版本信息以及已下载的补丁信息;所述终端用于响应于待更新应用的启动信号,根据所述待更新应用的版本信息以及与待更新应用对应的已下载的补丁信息,生成对应的补丁获取指令;向服务器发送补丁获取指令;并通过第二线程检测所述终端是否存在待安装补丁;所述待更新应用基于多个设置有预设插桩代码的函数构成;所述待安装补丁中包括与所述待更新应用中的待更新的函数对应的更新函数;所述第一线程和所述第二线程为异步线程;若通过所述第二线程检测到所述终端存在待安装补丁,将所述待安装补丁安装至所述待更新应用中;若检测到所述待更新应用执行所述待更新的函数,通过所述待更新的函数中的预设插桩代码停止执行所述待更新的函数并执行所述更新函数,得到更新后的应用;
若所述版本信息不为所述待更新应用对应的最新版本,获取所述待更新应用对应的最新版本的待更新补丁信息;
若所述已下载的补丁信息中不包括所述待更新补丁信息,向所述终端返回所述待更新的补丁信息;以使所述终端根据所述待更新的补丁信息,从所述服务器中下载对应的待更新补丁;所述终端还用于根据所述服务器返回的待更新补丁信息从所述服务器中下载对应的待安装补丁。
7.根据权利要求6所述的方法,其特征在于,所述获取所述待更新应用对应的最新版本的待更新补丁信息,包括:
获取所述待更新应用与所述版本信息对应的第一安装文件以及所述待更新应用对应的最新版本的第二安装文件;
通过差分算法将所述第一安装文件与所述第二安装文件进行对比,获取所述第二安装文件中与所述第一安装文件存在差异的差异文件;
根据所述差异文件,生成所述待更新补丁,并根据所述待更新补丁得到所述最新版本的待更新补丁信息。
8.一种应用更新装置,其特征在于,应用于终端,所述装置包括:
补丁获取模块,用于响应于待更新应用的启动信号,通过第一线程获取所述待更新应用对应的待安装补丁,并通过第二线程检测所述终端是否存在待安装补丁;具体用于:根据所述待更新应用的版本信息以及与待更新应用对应的已下载的补丁信息,生成对应的补丁获取指令;向服务器发送补丁获取指令,根据所述服务器返回的待更新补丁信息从所述服务器中下载对应的待安装补丁;所述服务器用于检测到所述版本信息不为所述待更新应用对应的最新版本时,获取待更新应用与所述版本信息对应的第一安装文件以及所述待更新应用对应的最新版本的第二安装文件;通过差分算法将所述第一安装文件与所述第二安装文件进行对比,根据所述第二安装文件中与所述第一安装文件存在差异的差异文件得到待更新补丁和待更新补丁信息,向所述终端返回所述待更新应用对应的待更新补丁信息;所述待更新应用基于多个设置有预设插桩代码的函数构成;所述待安装补丁中包括与所述待更新应用中的待更新的函数对应的更新函数;所述待安装补丁所述第一线程和所述第二线程为异步线程;
安装模块,用于若通过所述第二线程检测到所述终端存在待安装补丁,将所述待安装补丁安装至所述待更新应用中;
更新模块,用于若检测到所述待更新应用执行所述待更新的函数,通过所述待更新的函数中的预设插桩代码停止执行所述待更新的函数并执行所述更新函数,得到更新后的应用。
9.一种应用更新装置,其特征在于,应用于服务器,所述装置包括:
指令获取模块,用于响应于终端通过第一线程发送的补丁获取指令,获取所述补丁获取指令中的待更新应用对应的版本信息以及已下载的补丁信息;所述终端用于响应于待更新应用的启动信号,根据所述待更新应用的版本信息以及与待更新应用对应的已下载的补丁信息,生成对应的补丁获取指令;向服务器发送补丁获取指令;并通过第二线程检测所述终端是否存在待安装补丁;所述待更新应用基于多个设置有预设插桩代码的函数构成;所述待安装补丁中包括与所述待更新应用中的待更新的函数对应的更新函数;所述第一线程和所述第二线程为异步线程;若通过所述第二线程检测到所述终端存在待安装补丁,将所述待安装补丁安装至所述待更新应用中;若检测到所述待更新应用执行所述待更新的函数,通过所述待更新的函数中的预设插桩代码停止执行所述待更新的函数并执行所述更新函数,得到更新后的应用;
信息获取模块,用于若所述版本信息不为所述待更新应用对应的最新版本,获取所述待更新应用对应的最新版本的待更新补丁信息;
发送模块,用于若所述已下载的补丁信息中不包括所述待更新补丁信息,向所述终端返回所述待更新的补丁信息;以使所述终端根据所述待更新的补丁信息,从所述服务器中下载对应的待更新补丁;所述终端还用于根据所述服务器返回的待更新补丁信息从所述服务器中下载对应的待安装补丁。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110279964.4A CN113010199B (zh) | 2021-03-16 | 2021-03-16 | 应用更新方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110279964.4A CN113010199B (zh) | 2021-03-16 | 2021-03-16 | 应用更新方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113010199A CN113010199A (zh) | 2021-06-22 |
CN113010199B true CN113010199B (zh) | 2023-01-20 |
Family
ID=76408018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110279964.4A Active CN113010199B (zh) | 2021-03-16 | 2021-03-16 | 应用更新方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113010199B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055368A (zh) * | 2016-06-02 | 2016-10-26 | 腾讯科技(深圳)有限公司 | 应用更新方法和装置 |
CN109725923A (zh) * | 2018-12-27 | 2019-05-07 | 广州华多网络科技有限公司 | 一种软件轻量更新方法、装置及设备 |
CN110471693A (zh) * | 2019-08-21 | 2019-11-19 | 网易(杭州)网络有限公司 | 应用程序发布、运行方法及设备 |
CN111831316A (zh) * | 2020-07-21 | 2020-10-27 | 北京字节跳动网络技术有限公司 | 一种软件开发包更新方法及装置 |
CN112035153A (zh) * | 2019-05-14 | 2020-12-04 | 腾讯科技(深圳)有限公司 | 应用更新方法、装置、终端及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10430208B2 (en) * | 2017-05-02 | 2019-10-01 | Huawei Technologies Co., Ltd. | Multi-version asynchronous dynamic software update system and method for applications with multiple threads |
CN111258850B (zh) * | 2020-01-13 | 2024-04-19 | 奇安信科技集团股份有限公司 | 一种基于Linux系统的更新软件信息的方法及装置 |
-
2021
- 2021-03-16 CN CN202110279964.4A patent/CN113010199B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055368A (zh) * | 2016-06-02 | 2016-10-26 | 腾讯科技(深圳)有限公司 | 应用更新方法和装置 |
CN109725923A (zh) * | 2018-12-27 | 2019-05-07 | 广州华多网络科技有限公司 | 一种软件轻量更新方法、装置及设备 |
CN112035153A (zh) * | 2019-05-14 | 2020-12-04 | 腾讯科技(深圳)有限公司 | 应用更新方法、装置、终端及存储介质 |
CN110471693A (zh) * | 2019-08-21 | 2019-11-19 | 网易(杭州)网络有限公司 | 应用程序发布、运行方法及设备 |
CN111831316A (zh) * | 2020-07-21 | 2020-10-27 | 北京字节跳动网络技术有限公司 | 一种软件开发包更新方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113010199A (zh) | 2021-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108845812B (zh) | 插件更新方法、装置、计算机设备和存储介质 | |
CN110866198B (zh) | 静态资源缓存方法、系统、装置、计算机设备和存储介质 | |
CN105138347A (zh) | 一种差分升级包生成方法、软件升级方法及相应装置 | |
CN107783776B (zh) | 固件升级包的处理方法及装置、电子设备 | |
CN110333868B (zh) | 用于生成子应用的安装包的方法和系统 | |
KR20060064660A (ko) | 전자 장치에서의 3-단계 부팅 프로세스 | |
CN112558946A (zh) | 一种生成代码的方法、装置、设备和计算机可读存储介质 | |
CN107797818A (zh) | 应用程序升级方法及装置 | |
CN113835713B (zh) | 源码包下载方法、装置、计算机设备和存储介质 | |
CN111949529B (zh) | 系统调试方法、装置、计算机设备和存储介质 | |
CN106843947B (zh) | 代码缺陷的处理方法和装置 | |
CN109257426B (zh) | 业务线资源加载方法、装置、计算机设备和存储介质 | |
KR20210029621A (ko) | 전자 장치에서 어플리케이션 업데이트 시 런타임 성능 개선 방법 및 장치 | |
CN110989986B (zh) | 基于软件模板的软件生成方法、装置和计算机设备 | |
CN108762787B (zh) | 软件修复方法、装置、计算机设备和存储介质 | |
CN105677409A (zh) | 一种系统升级方法及装置 | |
CN113238790B (zh) | 基于sd卡和eeprom的固件程序更新方法及系统 | |
CN113360914A (zh) | 一种bios更新的方法、系统、设备及介质 | |
CN113010199B (zh) | 应用更新方法、装置、计算机设备和存储介质 | |
CN112306634A (zh) | 在云平台中根据配置变化更新工作负载的方法及装置 | |
CN108536444B (zh) | 插件编译方法、装置、计算机设备和存储介质 | |
CN109766084B (zh) | 支付应用的定制开发方法、装置、计算机设备和存储介质 | |
CN114143197A (zh) | 物联网设备ota升级方法、装置、设备及可读存储介质 | |
CN108762801B (zh) | 软件修复包处理方法、装置、计算机设备和存储介质 | |
CN112860287A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230814 Address after: 518000 building 501, 502, 601, 602, building D, wisdom Plaza, Qiaoxiang Road, Gaofa community, Shahe street, Nanshan District, Shenzhen City, Guangdong Province Patentee after: China Southern Power Grid Digital Platform Technology (Guangdong) Co.,Ltd. Address before: Room 86, room 406, No.1, Yichuang street, Zhongxin Guangzhou Knowledge City, Huangpu District, Guangzhou City, Guangdong Province Patentee before: Southern Power Grid Digital Grid Research Institute Co.,Ltd. |
|
TR01 | Transfer of patent right |