CN112698850B - 一种优化的升级方法和相关设备 - Google Patents
一种优化的升级方法和相关设备 Download PDFInfo
- Publication number
- CN112698850B CN112698850B CN201911007640.4A CN201911007640A CN112698850B CN 112698850 B CN112698850 B CN 112698850B CN 201911007640 A CN201911007640 A CN 201911007640A CN 112698850 B CN112698850 B CN 112698850B
- Authority
- CN
- China
- Prior art keywords
- upgrade
- client
- function
- sdk
- new
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种优化的升级方法,该方法具体包括:升级SDK从升级服务中心获取升级函数流,该升级函数流用于表征该客户端的当前版本和新版本的函数差异;升级SDK根据该升级函数流,对应用程序进行升级,使得客户端从当前版本升级至新版本。这样,通过在客户端上集成具有升级功能的升级SDK,该升级SDK能够获取到表征新版本和旧版本差异的升级函数流,升级函数流的数据量比全量升级包的数据量少,不仅使得下载过程中所要占用的网络资源大大减小,从而降低了网络质量对升级过程的影响;而且采用该升级函数流对客户端的应用程序进行差量升级,对两个版本中相同的内容不作处理,提高升级时效性,实现对客户端升级过程的优化。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种优化的升级方法和相关设备。
背景技术
各类终端均在其上安装许多不同的客户端,每个客户端都可以给用户提供对应的服务,以实现为用户提供丰富服务的效果,大大的方便了用户的生活和工作。对于各客户端,为了给用户带来更好的体验、提供更多的功能以及修复用户反馈的漏洞,往往需要对客户端的版本进行升级。
目前,对客户端的版本进行升级,往往需要从该客户端对应的服务器下载新版本的全量升级包,用该全量升级包中的文件替换该客户端当前版本对应的文件,以将该客户端升级为新版本。但是,随着客户端提供业务的不断扩展,全量升级包的体积会越来越大,不仅下载该全量升级包会占用较多网络资源,而且采用上述方式升级需要替换的数据量较大,导致升级占用时间长,时效性差。
发明内容
基于此,本申请实施例提供了一种优化的升级方法和相关设备,客户端具有升级软件开发工具包(英文:Software Development Kit,简称:SDK),该升级SDK能够直接获取到表征待更新的新版本和旧版本差异的升级函数流,并以该升级函数流对该客户端进行升级,对客户端的升级实现了优化。
第一方面,在本申请实施例中,提供了一种优化的升级方法,应用于客户端中的升级SDK,对该客户端上的应用程序进行升级,该方法具体可以包括:升级SDK从升级服务中心获取升级函数流,该升级函数流用于表征该客户端的当前版本和新版本的函数差异;那么,该升级SDK即可根据该升级函数流,对应用程序进行升级,使得客户端从当前版本升级至新版本。这样,通过在客户端上集成具有升级功能的升级SDK,当该客户端相对当前版本具有新版本时,该升级SDK能够从升级服务中心直接获取到表征待更新的新版本和旧版本差异的升级函数流,并以该升级函数流对该客户端进行升级,而升级函数流的数据量明显比全量升级包的数据量少很多,不仅可以使得下载过程中所要占用的网络资源大大减小,从而降低了网络质量对升级过程的影响;而且采用该升级函数流对客户端的应用程序进行差量升级,对两个版本中相同的内容不作处理,能够有效的节约升级时长,提高升级时效性,即,通过本申请实施例提供的升级方法,能够实现对客户端升级过程的优化。
在一些可能的设计中,升级SDK根据升级函数流,对应用程序进行升级,包括:升级SDK将升级函数流转换为对应的进程区域代码;升级SDK基于进程区域代码,识别目标函数,目标函数为当前版本中被调用的函数,且目标函数在新版本中被新函数替换;升级SDK确定调用目标函数的第一指令;升级SDK将第一指令中目标函数的第一地址修改为新函数的第二地址,获得第二指令,其中,第一地址用于指示目标函数的入口地址,第二地址用于指示新函数的入口地址。如此,实现了对客户端灵活、快速和智能的升级。
在另一些可能的设计中,该方法还包括:若客户端的新版本运行正常,则,升级SDK对第二指令进行固化。这样,实现了可靠的升级,以便下次启动后该客户端保持在该新版本上运行。
在再一些可能的设计中,该方法还包括:若客户端的新版本运行异常,则,升级SDK将第二指令恢复为第一指令,使得客户端从新版本回退至当前版本。此时,在一个示例中,该方法还包括:升级SDK向升级服务中心和/或客户端对应的服务器发送升级失败通知,以告知客户端的升级出现异常。如此,客户端即可快速回退至当前版本,并按照之前的版本继续正常运行,提高了本申请实施例提供的升级方法的可靠性。而且,还可以将升级失败的消息告知升级服务中心和/或该客户端对应的服务器,以便其查找并确定升级失败的原因,使得本申请实施例提供的升级方法更加智能。
在又一些可能的设计中,客户端还可以包括升级代理,升级SDK从升级服务中心获取升级函数流,具体为:升级SDK通过升级代理从升级服务中心获取升级函数流,其中,升级代理用于管理终端上包括升级SDK的各客户端的升级。这样,实现了升级服务中心和客户端之间交互信息的管理,屏蔽升级服务中心发送升级函数流的同时发来的一些中间信息,一定程度上提高了升级效率。
在另一些可能的设计中,该方法还包括:升级SDK从升级服务中心获取文件变更信息,文件变更信息用于表征客户端的当前版本和新版本中待变更的文件的差异;升级SDK根据文件变更信息,对应用程序中待变更的文件进行修改,生成新版本对应的新文件。这样,通过针对性修改需要更新的少量文件以及从更细粒度的函数角度实现差量升级,使得升级更加灵活和智能。
第二方面,在本申请实施例中,提供了一种优化的升级方法,应用于升级服务中心,当该升级服务中心获取客户端的新版本后,可以对比新版本和该客户端的当前版本的差异,提取可以表征该差异的升级函数流;接着,即可将该升级函数流发送至客户端,以便客户端上的升级SDK根据该升级函数流,对该客户端上的应用程序进行升级,从而该客户端从当前版本升级至新版本。这样,升级服务中心在发现新版本后对该新版本和该客户端的当前版本的对比,提取表征两者差异的升级函数流,并将其发送至客户端,以便客户端上的升级SDK以该升级函数流对该客户端进行升级,升级函数流的数据量明显比全量升级包的数据量少很多,不仅可以使得下载过程中所要占用的网络资源大大减小,从而降低了网络质量对升级过程的影响;而且采用该升级函数流对客户端的应用程序进行差量升级,对两个版本中相同的内容不作处理,能够有效的节约升级时长,提高升级时效性,即,通过本申请实施例提供的升级方法,能够实现对客户端升级过程的优化。
在一些可能的设计中,该方法还包括:升级服务中心对比新版本和客户端的当前版本,获得文件变更信息;升级服务中心将文件变更信息发送给客户端,以便客户端上的升级SDK根据文件变更信息,对应用程序中待变更的文件进行修改,生成新版本对应的新文件。这样,通过针对性修改需要更新的少量文件以及从更细粒度的函数角度实现差量升级,使得升级更加灵活和智能。
第三方面,本申请实施例还提供了一种升级软件开发工具包SDK,该升级SDK包括在客户端中,客户端还包括应用程序,升级SDK包括:第一获取单元和升级单元。其中,第一获取单元,用于从升级服务中心获取升级函数流,升级函数流用于表征客户端的当前版本和新版本的函数差异;升级单元,用于根据升级函数流,对应用程序进行升级,使得客户端从当前版本升级至新版本。
在一些可能的设计中,该升级单元,包括:转换子单元、识别子单元、确定子单元和修改子单元,其中,转换子单元,用于将升级函数流转换为对应的进程区域代码;识别子单元,用于基于进程区域代码,识别目标函数,目标函数为当前版本中被调用的函数,且目标函数在新版本中被新函数替换;确定子单元,用于确定调用目标函数的第一指令;修改子单元,用于将第一指令中目标函数的第一地址修改为新函数的第二地址,获得第二指令,其中,第一地址用于指示目标函数的入口地址,第二地址用于指示新函数的入口地址。
在另一些可能的设计中,该升级SDK还包括:固化单元,该固化单元,用于若客户端的新版本运行正常,则对第二指令进行固化。
在再一些可能的设计中,该升级SDK还包括:恢复单元,该恢复单元,用于若客户端的新版本运行异常,则,将第二指令恢复为第一指令,使得客户端从新版本回退至当前版本。此时,该升级SDK还包括:发送单元,用于向升级服务中心和/或客户端对应的服务器发送升级失败通知,以告知客户端的升级出现异常。
在另一些可能的设计中,该客户端还包括升级代理,那么。第一获取单元,具体用于:通过升级代理从升级服务中心获取升级函数流,其中,升级代理用于管理终端上包括升级SDK的各客户端的升级。
在又一些可能的设计中,该升级SDK还包括:第二获取单元,用于从升级服务中心获取文件变更信息,文件变更信息用于表征客户端的当前版本和新版本中待变更的文件的差异;修改单元,用于根据文件变更信息,对应用程序中待变更的文件进行修改,生成新版本对应的新文件。
需要说明的是,第三方面提供的该升级SDK,对应于第一方面提供的方法,故第三方面提供的升级SDK的各种可能的实现方式以及达到的技术效果,可以参照前述第一方面提供的方法的介绍。
第四方面,本申请实施例还提供了一种升级服务中心,包括:第一获取单元、第二获取单元和第一发送单元。其中,第一获取单元,用于获取客户端的新版本;第二获取单元,用于对比新版本和客户端的当前版本的函数差异,获得升级函数流;第一发送单元,用于将升级函数流发送至客户端,以便客户端上的升级软件开发工具包SDK根据升级函数流,对客户端上的应用程序进行升级,从而客户端从当前版本升级至新版本。
在一些可能的设计中,该升级服务中心还包括:第三获取单元和第二发送单元。其中,第三获取单元,用于对比新版本和客户端的当前版本,获得文件变更信息;第二发送单元,用于将文件变更信息发送给客户端,以便客户端上的升级SDK根据文件变更信息,对应用程序中待变更的文件进行修改,生成新版本对应的新文件。
需要说明的是,第四方面提供的该升级服务中心,对应于第二方面提供的方法,故第四方面提供的升级服务中心的各种可能的实现方式以及达到的技术效果,可以参照前述第二方面提供的方法的介绍。
第五方面,本申请实施例还提供了一种升级SDK,该升级SDK包括存储器和处理器;其中,存储器,用于存储程序代码;处理器,用于运行程序代码中的指令,使得升级SDK执行以上第一方面的任一种实现方式下的优化的升级方法。
第六方面,本申请实施例还提供了一种升级服务中心,该升级服务中心包括存储器和处理器;其中,存储器,用于存储程序代码;处理器,用于运行程序代码中的指令,使得升级服务中心执行以上第二方面的任一种实现方式下的优化的升级方法。
第七方面,本申请实施例还提供了一种优化的升级系统,所述系统包括升级服务中心和客户端,所述客户端包括升级SDK和应用程序;其中,所述升级服务中心,用于执行上述第二方面的任一种实现方式下的优化的升级方法;所述升级SDK,用于执行上述第一方面的任一种实现方式下的优化的升级方法,实现对所述客户端的版本升级。
第八方面,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行以上第一方面或第二方面的任一种实现方式下的优化的升级方法。
第九方面,本申请实施例还提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行前述第一方面或第二方面的任一种实现方式下的优化的升级方法。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一应用场景所涉及的系统框架示意图;
图2为本申请实施例中一种优化的升级方法的流程示意图;
图3为本申请实施例中一种优化的升级方法的一示例的流程示意图;
图4为本申请实施例中步骤202的一示例的流程示意图;
图5为本申请实施例中一种优化的升级方法的另一示例的流程示意图;
图6为本申请实施例中一种升级SDK的结构示意图;
图7为本申请实施例中一种升级服务中心的结构示意图;
图8为本申请实施例中升级SDK的另一结构示意图;
图9为本申请实施例中升级服务中心的另一结构示意图;
图10为本申请实施例中一种优化的升级系统的结构示意图。
具体实施方式
随着用户对客户端上所提供服务的要求的不断提高,客户端上的业务需要不断的扩展,那么,为了满足该需求,需要频繁的对客户端的版本进行升级,以使得升级后的客户端能够给用户带来更好的体验、提供更多的功能,或者,能够修复用户反馈的漏洞从而为用户提供更优质的服务。
目前,对客户端的版本进行升级,通常先从该客户端对应的服务器下载新版本的全量升级包,再用该全量升级包中的文件替换该客户端当前版本对应的文件,以将该客户端升级为新版本。但是,各客户端提供的服务不断增多且不断细化,其对应的全量升级包的体积会越来越大,那么,采用上述方式对客户端进行升级,不仅下载该全量升级包会占用较多网络资源,使得下载该全量升级包对网络状况的依赖较重,当网络状况较差时,导致该下载全量升级包的过程的可靠性下降,而且,采用该方式升级时需要进行全量替换,替换的数据量较大,导致升级占用时间长,时效性差。
基于此,在本申请实施例中,提供了一种优化的升级方法,该方法具体可以包括:当该升级服务中心获取客户端的新版本后,对比新版本和该客户端的当前版本的差异,提取表征该差异的升级函数流;接着,将该升级函数流发送至客户端,该客户端上的升级SDK根据该升级函数流,对该客户端上的应用程序进行升级,从而该客户端从当前版本升级至新版本。这样,升级服务中心在发现新版本后对该新版本和该客户端的当前版本的对比,提取表征两者差异的升级函数流,并将其发送至客户端,通过在客户端上集成具有升级功能的升级SDK,该升级SDK能够在不影响该客户端正常运行的前提下,基于该升级函数流对该客户端进行升级,显然,同等条件下升级函数流的数据量明显比全量升级包的数据量少很多,不仅可以使得下载过程中所要占用的网络资源大大减小,从而降低了网络质量对升级过程的影响;而且采用该升级函数流对客户端的应用程序进行差量升级,对两个版本中相同的内容不作处理,能够有效的节约升级时长,提高升级时效性,即,通过本申请实施例提供的升级方法,能够实现对客户端升级过程的优化。
举例来说,本申请实施例的场景之一,可以是应用到如图1所示的系统中。参见图1,该系统可以包括:服务器100、终端200和升级服务中心300。其中,终端200上安装有有服务器100对应的客户端210,该客户端210包括应用程序211和升级SDK 212,运行客户端210的应用程序211,可以为用户提供服务器100对应的服务;升级SDK 212是和应用程序211解耦的程序,该升级SDK 212用于执行下述图2对应实施例,对其所在的客户端210进行版本升级。升级服务器中心300,在图1所示的系统中,可以是一个独立部署的服务器,另一些情况下,升级服务器中心300也可以内置在终端200中,或者,还可以部署在服务器100上。该升级服务中心300,用于执行下述图3对应实施例,从客户端210对应的服务器100获取新版本,通过对比新版本和客户端210的当前版本,提取表征两者差异的升级函数流,并将其发送至客户端210,使得各具有升级SDK 212的客户端210通过本申请实施例升级方法进行应用程序211的升级成为了可能。
需要说明的是,该终端200上还可以包括升级代理220,该升级代理220可以管理终端200上包括升级SDK的客户端的升级事项,例如:升级服务中心300将升级函数流发送给终端200的升级代理220上,该升级代理220可以确定对应的待升级的客户端,并屏蔽一些中间信息,将处理后的升级函数流发送至所确定的待升级的客户端,由其中的升级SDK进行对应的升级。
可以理解的是,上述场景仅是本申请实施例提供的一个场景示例,本申请实施例并不限于此场景。
下面结合附图,通过实施例来详细说明本申请实施例中的优化的升级方法的具体实现方式。
图2示出了本申请实施例中一种优化的升级方法的流程示意图。图2对应实施例应用于客户端中的升级软件开发工具包SDK,该客户端还包括应用程序。其中,升级SDK可以是图1对应系统中终端200安装的任意客户端210上的升级SDK 212。参见图2,本申请实施例提供的方法可以包括下述步骤201和步骤202:
步骤201,升级SDK从升级服务中心获取升级函数流,该升级函数流用于表征客户端的当前版本和新版本的函数差异。
可以理解的是,为了克服目前采用全量升级包进行客户端升级不够方便和智能的问题,使得越来越多的客户端能够智能且灵活的实现快速升级成为可能,本申请实施例将客户端的升级过程进行分析,抽象出客户端升级过程中相同逻辑,将该相同逻辑通过程序集成为升级SDK,作为客户端的一个组成部分,用于实现对该客户端上版本的升级功能,即,实现对同样属于客户端的应用程序进行升级。而客户端中包括应用程序,用于和该客户端对应的服务器配合,为用户提供相应的服务,运行客户端的应用程序即可为用户提供服务。
需要说明的是,目前的客户端采用全量升级包升级时,需要停止运行客户端上运行的用户程序,才可以进行升级,而在升级期间无法再为用户提供其业务服务,影响用户使用该客户端的体验。那么,为了克服升级过程对客户端上运行业务的影响,确保客户端提供的业务的连续性,本申请实施例中可以将客户端上的应用程序和升级SDK设计为完全解耦的两部分程序,即,客户端上运行应用程序以正常提供业务服务的同时,升级SDK即可在其所在的客户端有新版本时执行本申请实施例提供的升级方法,完成对客户端的升级。
可以理解的是,升级服务中心,用于管理包括升级SDK的客户端的升级,具体为待升级的客户端提供升级的数据基础——升级函数流。作为一个示例,该升级服务中心如图1所示,可以是一个独立部署的服务器,该服务器专用作升级服务。作为另一个示例,该升级服务中心也可以内置于某个终端中,为该终端中的包括升级SDK的客户端提供升级服务,或者,还可以为与该终端相连的其他终端上的包括升级SDK的客户端提供升级服务。作为再一个示例,该升级服务中心还可以部署在每个包括升级SDK的客户端对应的服务器中,作为该服务器上的一个独立的模块,为各终端上该服务器对应的客户端提供升级服务。
具体实现时,升级服务中心上记录有客户端的当前版本,具体为当前版本的相关信息,例如:当前版本的版本号、当前版本的软件包等。当客户端具有新版本时,升级服务中心还可以获得新版本,具体为新版本的相关信息,例如:新版本的版本号、新版本的软件包等。此时,为了提高客户端的升级效率,降低升级所涉及的数据量,参见图3,本申请实施例还可以在步骤201之前,执行下述步骤:
步骤301,升级服务中心获取客户端的新版本。
步骤302,升级服务中心对比新版本和客户端的当前版本的差异,获得升级函数流。
步骤303,升级服务中心将升级函数流发送至客户端。
其中,步骤301中,升级服务中心获取客户端的新版本,一种情况下,可以是在该客户端对应的服务器上具有新版本后,推送给该升级服务中心的;另一种情况下,也可以是该升级服务中心周期性的向客户端对应的服务器查询得到的。
具体实现时,升级服务中心可以在获取到新版本后,确定该新版本对应的客户端,并查找该客户端的当前版本,再通过新版本和当前版本的对比分析,生成可以表征新版本和当前版本的函数差异的数据,记作升级函数流,并将其发送给所确定的客户端,以便该客户端上的升级SDK执行该图2所示的实施例,完成对其所属的客户端的升级,使其版本从当前版本升级为新版本。
其中,升级函数流,是基于新版本和当前版本的对比生成的二进制信息流,用于实现客户端的升级,可以表征客户端的当前版本和新版本的函数差异,例如:新版本中包括:函数Function A*、动态库liba.so、libb.so和libc.so,当前版本中对应包括:函数Function A、动态库liba.so和libb.so,那么,升级服务中心获取的升级函数流至少包括两个部分:表征将Function A替换为Function A*,以及表征增加动态库libc.so。那么,将该升级函数流发送给客户端,客户端即可基于该升级函数流完成对应用程序的升级,无需再以文件为粒度,对整个软件包进行提换,大大的节约了网络、内存以及处理资源。
作为另一个示例,当新版本和当前版本之间的差异不仅表现在函数的差异上,还表现在文件这一粒度的差异上,那么,在步骤301之后,本申请实施例还可以包括:
步骤304,升级服务中心对比所新版本和客户端的当前版本,获得文件变更信息。
步骤305,升级服务中心将文件变更信息发送给客户端。
其中,升级服务中心可以在进行新版本和当前版本的对比分析时,生成升级函数流的同时,还可以获得表征文件粒度上新版本和当前版本的差异,记作文件变更信息,例如:配置文件对应的文件变更信息。在另一些情况下,还可以包括文本、图片的差异信息,以及差异说明信息,等等。其中,差异说明信息,用于指示升级前后具体发生的改变,可以被用于升级后功能的校验。那么,升级服务中心将升级函数流和文件变更信息发送给客户端,客户端在基于该升级函数流对应用程序进行升级时,也可以基于文件变更信息,对当前版本中待变更的文件进行修改,得到新版本中对应的新文件,如此,通过针对性修改需要更新的少量文件以及从更细粒度的函数角度实现差量升级,使得升级更加灵活和智能。
需要说明的是,步骤304和步骤与步骤302可以同时执行,也可以先后执行,先后执行时,执行的先后顺序不进行具体限定,可以先执行步骤302再执行步骤304,也可以先执行步骤304再执行步骤302。而且,步骤302执行之后即可执行步骤303,同理,步骤304执行之后即可执行步骤305,步骤303和步骤305的执行并无顺序的限定,也可以携带在同一消息中发送给客户端。
若升级服务中心为独立部署的服务器,对多个终端进行管理,那么,该升级服务中心针对某一客户端提取到升级函数流时,可以将升级函数流发送给受其管理的每个终端上,通知各终端上该对应的客户端基于该升级函数流进行升级。
若升级服务中心为部署在某一客户端对应的服务器上,那么,该升级服务中心提取到升级函数流时,可以将升级函数流发送给安装了该服务器对应的客户端的终端上,通知各终端上该对应的客户端基于该升级函数流进行升级。
若升级服务中心内置于某一终端上,对该终端上包括升级SDK的客户端进行管理,那么,该升级服务中心针对某一客户端提取到升级函数流时,可以将升级函数流发送对应的客户端,通知该客户端基于该升级函数流进行升级。
这样,本申请实施例提供的优化的升级方法,应用于升级服务中心时,升级服务中心在发现新版本后对该新版本和该客户端的当前版本的对比,提取表征两者差异的升级函数流,并将其发送至客户端,以便客户端上的升级SDK以该升级函数流对该客户端进行升级,升级函数流的数据量明显比全量升级包的数据量少很多,不仅可以使得下载过程中所要占用的网络资源大大减小,从而降低了网络质量对升级过程的影响;而且采用该升级函数流对客户端的应用程序进行差量升级,对两个版本中相同的内容不作处理,能够有效的节约升级时长,提高升级时效性。
需要说明的是,若终端上安装有包括升级SDK的客户端,那么,为了实现升级服务中心和客户端之间交互信息的管理,屏蔽升级服务中心发送升级函数流的同时发来的一些中间信息,终端上还可以包括升级代理。该场景下,步骤201具体可以包括:升级SDK通过升级代理从升级服务中心获取升级函数流,其中,升级代理用于管理终端上包括升级SDK的各客户端的升级。具体实现时,升级服务中心将包括升级函数流的信息发送给终端上的升级代理,该升级代理可以从该信息中,确定出有效的升级函数流以及待升级的客户端,从而该升级代理可以将升级数据流发送给待升级的客户端,通知该客户端利用升级函数流进行升级。
例如:假设终端A上安装了客户端1、客户端2和客户端3,这三个客户端均包括升级SDK,而且,该终端A上包括升级代理X,用于管理上述三个客户端的升级事项。当升级服务中心发现客户端1有新版本时,通过上述图3所示实施例的方法,将包括升级函数流a的信息1发送给终端A上的升级代理X,此时,升级代理X通过分析信息1,确定待升级的客户端为客户端1,且可以从信息1中获取到升级函数流a,接着,该升级代理X可以将升级函数流a针对性的发送至客户端1。可见,利用本申请实施例提供的升级方式升级,不仅智能性高,而且快速高效。
这样,通过步骤201升级SDK获取到表征新版本和当前版本函数差异的升级函数流,为该升级SDK对该客户端的升级提供了数据基础,使得实现智能灵活的软件升级成为了可能。
步骤202,升级SDK根据升级函数流,对应用程序进行升级,使得客户端从当前版本升级至新版本。
具体实现时,参见图4,步骤202的具体实现例如可以包括:
步骤2021,升级SDK将升级函数流转换为对应的进程区域代码;
步骤2022,升级SDK基于进程区域代码,识别目标函数,该目标函数为当前版本中被调用的函数,且目标函数在新版本中被新函数替换;
步骤2023,升级SDK确定调用目标函数的第一指令;
步骤2024,升级SDK将第一指令中目标函数的第一地址修改为新函数的第二地址,获得第二指令,其中,第一地址用于指示目标函数的入口地址,第二地址用于指示新函数的入口地址。
可以理解的是,升级函数流为二进制信息流,无法被机器直接执行,因此,在升级SDK接收到升级函数流时,可以将其转换为进程区域代码,该进程区域代码为机器码中的一种,可以被机器识别并执行,那么,步骤2021的转换操作,为实现升级提供了可用的数据基础。
升级SDK具体实现步骤2022~步骤2024的过程可以包括:根据进程区域代理,可以确定出当前版本的函数中,待被新版本中的新函数替换的函数,记作目标函数;接着,可以确定出应用程序中,用于调用该目标函数的指令(例如:可以是跳转到目标函数的跳转指令),记作第一指令;然后,将第一指令中目标函数的入口地址(即,第一地址)修改为新函数的入口地址(即,第二地址),并将修改后的第一指令记作第二指令。那么,客户端上的应用程序在步骤2024执行之后,第一指令更新为第二指令,理论上该应用程序继续运行时,在该第二指令处调用新函数而不再调用目标函数,实现了版本的升级。
需要说明的是,当执行完上述步骤2021~步骤2024之后,该第二指令还未被固化,即,该第二指令在关机重启后就会消失。为了提供更加可靠的升级方法,本申请实施例中,在步骤202之后,还可以对升级进行验证,参见图5,在步骤2024之后,本申请实施例还可以包括:
步骤2026,判断客户端的新版本运行是否正常,若是,则执行步骤2027,否则,执行步骤2028;
步骤2027,升级SDK对第二指令进行固化。
步骤2028,升级SDK将第二指令恢复为第一指令,使得客户端从新版本回退至当前版本。
可以理解的是,当将第一指令替换为第二指令后,在第二指令固化之前,该客户端已经按照第二指令运行,在该位置调用新函数,为了确保升级的可靠性,可以检查当前应用程序的运行状态是否正常,例如:判断该新版本的新功能是否稳定,和/或,新版本中是否不存在理论上已经修复的漏洞,如果是,则认为该次升级成功,否则,可以认为该次升级失败。
作为一个示例,若确定该客户端的新版本运行正常,那么,可以将第二指令进行固化,生成对应的本地二进制固化文件,以便下次启动后该客户端保持在该新版本上运行。
作为另一示例,若确定该客户端的新版本运行出现异常,那么,由于第二指令未固化且只是实现差异升级,本申请实施例中可以实现快速方便的版本回退,具体而言,可以将该第二指令中新函数的入口地址(即,第二地址)恢复为目标函数的入口地址(即,第一地址),即,将第二指令恢复为第一指令。如此,客户端即可按照之前的版本继续正常运行,提高了本申请实施例提供的升级方法的可靠性。
需要说明的是,当确定客户端的新版本运行出现异常,将第二指令恢复为第一指令时,为了确保该客户端之后的升级以及升级软件包的开发,该客户端上的升级SDK还可以向升级服务中心和/或该客户端对应的服务器发送升级失败通知,以告知客户端的此次升级出现异常,以便升级服务中心和/或该客户端对应的服务器查找并确定升级失败的原因,使得本申请实施例提供的升级方法更加智能。
在另一些可能的实现方式中,本申请实施例还可以包括:升级SDK从升级服务中心获取文件变更信息,该文件变更信息用于表征客户端的当前版本和新版本中待变更的文件的差异;升级SDK根据文件变更信息,对应用程序中待变更的文件进行修改,生成新版本对应的新文件。该实现方式中的操作的具体描述,可以参见上述图3所述实施例中的步骤304和步骤305的相关说明,在此不再赘述。
可见,在本申请实施例中,通过在客户端上集成具有升级功能的升级SDK,当该客户端相对当前版本具有新版本时,该升级SDK能够从升级服务中心直接获取到表征待更新的新版本和旧版本差异的升级函数流,并以该升级函数流对该客户端进行升级,而升级函数流的数据量明显比全量升级包的数据量少很多,不仅可以使得下载过程中所要占用的网络资源大大减小,从而降低了网络质量对升级过程的影响;而且采用该升级函数流对客户端的应用程序进行差量升级,对两个版本中相同的内容不作处理,能够有效的节约升级时长,提高升级时效性,即,通过本申请实施例提供的升级方法,能够实现对客户端升级过程的优化。
此外,本申请实施例还提供了一种升级SDK 600,如图6所示,该升级SDK 600包括在客户端中,客户端还包括应用程序,升级SDK 600包括:第一获取单元601和升级单元602。
其中,第一获取单元601,用于从升级服务中心获取升级函数流,升级函数流用于表征客户端的当前版本和新版本的函数差异;升级单元602,用于根据升级函数流,对应用程序进行升级,使得客户端从当前版本升级至新版本。
在一些可能的设计中,该升级单元602,包括:转换子单元、识别子单元、确定子单元和修改子单元。其中,转换子单元,用于将升级函数流转换为对应的进程区域代码;识别子单元,用于基于进程区域代码,识别目标函数,目标函数为当前版本中被调用的函数,且目标函数在新版本中被新函数替换;确定子单元,用于确定调用目标函数的第一指令;修改子单元,用于将第一指令中目标函数的第一地址修改为新函数的第二地址,获得第二指令,其中,第一地址用于指示目标函数的入口地址,第二地址用于指示新函数的入口地址。
在另一些可能的设计中,该升级SDK 600还包括:固化单元603。该固化单元603,用于若客户端的新版本运行正常,则对第二指令进行固化。
在再一些可能的设计中,该升级SDK 600还包括:恢复单元,该恢复单元,用于若客户端的新版本运行异常,则,将第二指令恢复为第一指令,使得客户端从新版本回退至当前版本。此时,该升级SDK 600还包括:发送单元,用于向升级服务中心和/或客户端对应的服务器发送升级失败通知,以告知客户端的升级出现异常。
在另一些可能的设计中,该客户端还包括升级代理,那么。第一获取单元601,具体用于:通过升级代理从升级服务中心获取升级函数流,其中,升级代理用于管理终端上包括升级SDK 600的各客户端的升级。
在又一些可能的设计中,该升级SDK 600还包括:第二获取单元,用于从升级服务中心获取文件变更信息,文件变更信息用于表征客户端的当前版本和新版本中待变更的文件的差异;修改单元,用于根据文件变更信息,对应用程序中待变更的文件进行修改,生成新版本对应的新文件。
需要说明的是,该升级SDK 600,对应于图2所示实施例中提供的方法,故该升级SDK600的各种可能的实现方式以及达到的技术效果,可以参照前述图2所示实施例对应的方法的介绍。
此外,本申请实施例还提供了一种升级服务中心700,如图7所示,该升级服务中心700包括:第一获取单元701、第二获取单元702和第一发送单元703。
其中,第一获取单元701,用于获取客户端的新版本;第二获取单元702,用于对比新版本和客户端的当前版本的函数差异,获得升级函数流;第一发送单元703,用于将升级函数流发送至客户端,以便客户端上的升级软件开发工具包SDK根据升级函数流,对客户端上的应用程序进行升级,从而客户端从当前版本升级至新版本。
在一些可能的设计中,该升级服务中心700还包括:第三获取单元和第二发送单元。其中,第三获取单元,用于对比新版本和客户端的当前版本,获得文件变更信息;第二发送单元,用于将文件变更信息发送给客户端,以便客户端上的升级SDK根据文件变更信息,对应用程序中待变更的文件进行修改,生成新版本对应的新文件。
需要说明的是,该升级服务中心700,对应于图3所示实施例中提供的方法,故升级服务中心700的各种可能的实现方式以及达到的技术效果,可以参照前述图3所示实施例对应的方法的介绍。
此外,本申请实施例还提供了一种升级SDK 800,如图8所示,该升级SDK800包括存储器801和处理器802;其中,存储器801,用于存储程序代码;处理器802,用于运行程序代码中的指令,使得升级SDK 800执行以上图2所示实施例的任一种实现方式下的优化的升级方法。
此外,本申请实施例还提供了一种升级服务中心900,如图9所示,该升级服务中心900包括存储器901和处理器902;其中,存储器901,用于存储程序代码;处理器902,用于运行程序代码中的指令,使得升级服务中心900执行以上图3所示实施例的任一种实现方式下的优化的升级方法。
上述存储器801和存储器901可以是随机存取存储器(random-access memory,RAM)、闪存(flash)、只读存储器(read only memory,ROM)、可擦写可编程只读存储器(erasable programmable read only memory,EPROM)、电可擦除可编程只读存储器(electrically erasable programmable read only memory,EEPROM)、寄存器(register)、硬盘、移动硬盘、CD-ROM或者本领域技术人员知晓的任何其他形式的存储介质。
上述处理器802、和处理器802例如可以是中央处理器(central processingunit,CPU)、通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。
上述升级SDK 800和升级服务中心900中的通信接口可以是接口卡等,可以为以太(ethernet)接口或异步传输模式(asynchronous transfer mode,ATM)接口。
此外,本申请实施例还提供了一种优化的升级系统1000,如图10所示,所述系统1000包括升级服务中心1010和客户端1020,所述客户端1020包括升级SDK 1021和应用程序1022;其中,所述升级服务中心1010,用于执行上述图3所示实施例的任一种实现方式下的优化的升级方法;所述升级SDK 1021,用于执行上述图2所示实施例的任一种实现方式下的优化的升级方法,实现对所述客户端1020的版本升级。
此外,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行以上图2或图3所示实施例的任一种实现方式下的优化的升级方法。
此外,本申请实施例还提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行前述图2或图3所示实施例的任一种实现方式下的优化的升级方法。
本申请实施例中提到的“第一指令”、“第一地址”等名称中的“第一”只是用来做名字标识,并不代表顺序上的第一。该规则同样适用于“第二”等。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如只读存储器(英文:read-only memory,ROM)/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如路由器等网络通信设备)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备和系统实施例仅仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本申请示例性的实施方式,并非用于限定本申请的保护范围。
Claims (18)
1.一种优化的升级方法,其特征在于,应用于客户端中的升级软件开发工具包SDK,所述客户端还包括应用程序,所述方法包括:
所述升级SDK从升级服务中心获取升级函数流,所述升级函数流用于表征所述客户端的当前版本和新版本的函数差异;
所述升级SDK根据所述升级函数流,对所述应用程序进行升级,使得所述客户端从所述当前版本升级至所述新版本
其中,所述升级SDK根据所述升级函数流,对所述应用程序进行升级,包括:
所述升级SDK将所述升级函数流转换为对应的进程区域代码;
所述升级SDK基于所述进程区域代码,识别目标函数,所述目标函数为所述当前版本中被调用的函数,且所述目标函数在所述新版本中被新函数替换;
所述升级SDK确定调用所述目标函数的第一指令;
所述升级SDK将所述第一指令中所述目标函数的第一地址修改为所述新函数的第二地址,获得第二指令,其中,所述第一地址用于指示所述目标函数的入口地址,所述第二地址用于指示所述新函数的入口地址。
2.根据权利要求1所述的方法,其特征在于,还包括:
若所述客户端的所述新版本运行正常,则,所述升级SDK对所述第二指令进行固化。
3.根据权利要求1所述的方法,其特征在于,还包括:
若所述客户端的所述新版本运行异常,则,所述升级SDK将所述第二指令恢复为所述第一指令,使得所述客户端从所述新版本回退至所述当前版本。
4.根据权利要求3所述的方法,其特征在于,还包括:
所述升级SDK向所述升级服务中心和/或所述客户端对应的服务器发送升级失败通知,以告知所述客户端的升级出现异常。
5.根据权利要求1~4任意一项所述的方法,其特征在于,所述客户端还包括升级代理,所述升级SDK从升级服务中心获取升级函数流,具体为:
所述升级SDK通过所述升级代理从所述升级服务中心获取所述升级函数流,其中,所述升级代理用于管理终端上包括升级SDK的各客户端的升级。
6.根据权利要求1~5任意一项所述的方法,其特征在于,还包括:
所述升级SDK从升级服务中心获取文件变更信息,所述文件变更信息用于表征所述客户端的当前版本和新版本中待变更的文件的差异;
所述升级SDK根据所述文件变更信息,对所述应用程序中所述待变更的文件进行修改,生成所述新版本对应的新文件。
7.一种优化的升级方法,其特征在于,应用于升级服务中心,所述方法包括:
所述升级服务中心获取客户端的新版本;
所述升级服务中心对比所述新版本和所述客户端的当前版本的函数差异,获得升级函数流;
所述升级服务中心将所述升级函数流发送至所述客户端,以便所述客户端上的升级软件开发工具包SDK根据所述升级函数流,对所述客户端上的应用程序进行升级,从而所述客户端从所述当前版本升级至所述新版本,其中,所述升级SDK根据所述升级函数流,对所述应用程序进行升级,包括:所述升级SDK将所述升级函数流转换为对应的进程区域代码;所述升级SDK基于所述进程区域代码,识别目标函数,所述目标函数为所述当前版本中被调用的函数,且所述目标函数在所述新版本中被新函数替换;所述升级SDK确定调用所述目标函数的第一指令;所述升级SDK将所述第一指令中所述目标函数的第一地址修改为所述新函数的第二地址,获得第二指令,其中,所述第一地址用于指示所述目标函数的入口地址,所述第二地址用于指示所述新函数的入口地址。
8.根据权利要求7所述的方法,其特征在于,还包括:
所述升级服务中心对比所述新版本和所述客户端的当前版本,获得文件变更信息;
所述升级服务中心将所述文件变更信息发送给所述客户端,以便所述客户端上的所述升级SDK根据所述文件变更信息,对所述应用程序中待变更的文件进行修改,生成所述新版本对应的新文件。
9.一种升级软件开发工具包SDK,其特征在于,所述升级SDK包括在客户端中,所述客户端还包括应用程序,所述升级SDK包括:
第一获取单元,用于从升级服务中心获取升级函数流,所述升级函数流用于表征所述客户端的当前版本和新版本的函数差异;
升级单元,用于根据所述升级函数流,对所述应用程序进行升级,使得所述客户端从所述当前版本升级至所述新版本;
其中,所述升级单元,包括:
转换子单元,用于将所述升级函数流转换为对应的进程区域代码;
识别子单元,用于基于所述进程区域代码,识别目标函数,所述目标函数为所述当前版本中被调用的函数,且所述目标函数在所述新版本中被新函数替换;
确定子单元,用于确定调用所述目标函数的第一指令;
修改子单元,用于将所述第一指令中所述目标函数的第一地址修改为所述新函数的第二地址,获得第二指令,其中,所述第一地址用于指示所述目标函数的入口地址,所述第二地址用于指示所述新函数的入口地址。
10.根据权利要求9所述的升级SDK,其特征在于,还包括:
固化单元,用于若所述客户端的所述新版本运行正常,则对所述第二指令进行固化。
11.根据权利要求9所述的升级SDK,其特征在于,还包括:
恢复单元,用于若所述客户端的所述新版本运行异常,则,将所述第二指令恢复为所述第一指令,使得所述客户端从所述新版本回退至所述当前版本。
12.根据权利要求11所述的升级SDK,其特征在于,还包括:
发送单元,用于向所述升级服务中心和/或所述客户端对应的服务器发送升级失败通知,以告知所述客户端的升级出现异常。
13.根据权利要求9~12任意一项所述的升级SDK,其特征在于,所述客户端还包括升级代理,所述第一获取单元,具体用于:
通过所述升级代理从所述升级服务中心获取所述升级函数流,其中,所述升级代理用于管理终端上包括升级SDK的各客户端的升级。
14.根据权利要求9~13任意一项所述的升级SDK,其特征在于,还包括:
第二获取单元,用于从升级服务中心获取文件变更信息,所述文件变更信息用于表征所述客户端的当前版本和新版本中待变更的文件的差异;
修改单元,用于根据所述文件变更信息,对所述应用程序中所述待变更的文件进行修改,生成所述新版本对应的新文件。
15.一种升级服务中心,其特征在于,包括:
第一获取单元,用于获取客户端的新版本;
第二获取单元,用于对比所述新版本和所述客户端的当前版本的函数差异,获得升级函数流;
第一发送单元,用于将所述升级函数流发送至所述客户端,以便所述客户端上的升级软件开发工具包SDK根据所述升级函数流,对所述客户端上的应用程序进行升级,从而所述客户端从所述当前版本升级至所述新版本,其中,所述升级SDK根据所述升级函数流,对所述应用程序进行升级,包括:所述升级SDK将所述升级函数流转换为对应的进程区域代码;所述升级SDK基于所述进程区域代码,识别目标函数,所述目标函数为所述当前版本中被调用的函数,且所述目标函数在所述新版本中被新函数替换;所述升级SDK确定调用所述目标函数的第一指令;所述升级SDK将所述第一指令中所述目标函数的第一地址修改为所述新函数的第二地址,获得第二指令,其中,所述第一地址用于指示所述目标函数的入口地址,所述第二地址用于指示所述新函数的入口地址。
16.根据权利要求15所述的升级服务中心,其特征在于,还包括:
第三获取单元,用于对比所述新版本和所述客户端的当前版本,获得文件变更信息;
第二发送单元,用于将所述文件变更信息发送给所述客户端,以便所述客户端上的所述升级SDK根据所述文件变更信息,对所述应用程序中待变更的文件进行修改,生成所述新版本对应的新文件。
17.一种优化的升级系统,其特征在于,所述系统包括升级服务中心和客户端,所述客户端包括升级SDK和应用程序;
所述升级服务中心,用于执行上述权利要求7或8所述的方法;
所述升级SDK,用于执行上述权利要求1~6任意一项所述的方法,实现对所述客户端的版本升级。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得所述计算机执行权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911007640.4A CN112698850B (zh) | 2019-10-22 | 2019-10-22 | 一种优化的升级方法和相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911007640.4A CN112698850B (zh) | 2019-10-22 | 2019-10-22 | 一种优化的升级方法和相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112698850A CN112698850A (zh) | 2021-04-23 |
CN112698850B true CN112698850B (zh) | 2023-06-20 |
Family
ID=75504710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911007640.4A Active CN112698850B (zh) | 2019-10-22 | 2019-10-22 | 一种优化的升级方法和相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112698850B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113791809B (zh) * | 2021-11-11 | 2022-03-04 | 腾讯科技(深圳)有限公司 | 应用异常处理方法、装置以及计算机可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136013A (zh) * | 2011-12-01 | 2013-06-05 | 腾讯科技(深圳)有限公司 | 软件升级方法和系统 |
CN103544033A (zh) * | 2013-09-30 | 2014-01-29 | 小米科技有限责任公司 | 应用程序回退方法、装置及相关设备 |
CN103825925A (zh) * | 2012-11-19 | 2014-05-28 | 腾讯科技(深圳)有限公司 | 应用程序升级方法、系统及其客户端 |
CN104281440A (zh) * | 2013-07-03 | 2015-01-14 | 中国移动通信集团公司 | 一种接口实现方法、系统及接口客户端主机 |
CN106603311A (zh) * | 2017-01-18 | 2017-04-26 | 北京洋浦伟业科技发展有限公司 | Ota升级方法、客户端、服务器和系统 |
CN106921709A (zh) * | 2015-12-28 | 2017-07-04 | 航天信息股份有限公司 | App管理方法及系统 |
CN106951228A (zh) * | 2017-02-21 | 2017-07-14 | 腾讯科技(深圳)有限公司 | 版本迭代中差异的处理方法和装置 |
CN107016280A (zh) * | 2017-03-31 | 2017-08-04 | 武汉票据交易中心有限公司 | 一种客户端应用程序的升级方法及系统 |
CN107122200A (zh) * | 2016-02-25 | 2017-09-01 | 博雅网络游戏开发(深圳)有限公司 | 加载插件sdk的方法、系统及客户端 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2859440A4 (en) * | 2012-06-08 | 2016-03-02 | Hewlett Packard Development Co | VERSION MANAGEMENT FOR APPLICATIONS |
US20170147323A1 (en) * | 2015-11-25 | 2017-05-25 | Le Holding (Beijing) Co., Ltd. | Method and electronic device for upgrading software development kit of an application |
-
2019
- 2019-10-22 CN CN201911007640.4A patent/CN112698850B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136013A (zh) * | 2011-12-01 | 2013-06-05 | 腾讯科技(深圳)有限公司 | 软件升级方法和系统 |
CN103825925A (zh) * | 2012-11-19 | 2014-05-28 | 腾讯科技(深圳)有限公司 | 应用程序升级方法、系统及其客户端 |
CN104281440A (zh) * | 2013-07-03 | 2015-01-14 | 中国移动通信集团公司 | 一种接口实现方法、系统及接口客户端主机 |
CN103544033A (zh) * | 2013-09-30 | 2014-01-29 | 小米科技有限责任公司 | 应用程序回退方法、装置及相关设备 |
CN106921709A (zh) * | 2015-12-28 | 2017-07-04 | 航天信息股份有限公司 | App管理方法及系统 |
CN107122200A (zh) * | 2016-02-25 | 2017-09-01 | 博雅网络游戏开发(深圳)有限公司 | 加载插件sdk的方法、系统及客户端 |
CN106603311A (zh) * | 2017-01-18 | 2017-04-26 | 北京洋浦伟业科技发展有限公司 | Ota升级方法、客户端、服务器和系统 |
CN106951228A (zh) * | 2017-02-21 | 2017-07-14 | 腾讯科技(深圳)有限公司 | 版本迭代中差异的处理方法和装置 |
CN107016280A (zh) * | 2017-03-31 | 2017-08-04 | 武汉票据交易中心有限公司 | 一种客户端应用程序的升级方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112698850A (zh) | 2021-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105373410B (zh) | 基站软件差分升级方法及其装置 | |
CN100501675C (zh) | 一种用于软件升级的方法及装置 | |
CN107948744B (zh) | 接口检测方法、接口检测设备及计算机可读存储介质 | |
US20140289719A1 (en) | Automatic version management | |
CN105955846A (zh) | 移动终端基于网络升级失败后进行恢复的方法及系统 | |
CN106055375B (zh) | 应用程序安装方法及装置 | |
CN112115105B (zh) | 一种业务处理方法、装置及设备 | |
CN103034560B (zh) | 一种修复应用软件的方法、装置及系统 | |
CN113687858B (zh) | 配置文件的检查方法、装置、电子设备及存储介质 | |
CN107832166A (zh) | 一种Linux服务器宕机故障分析系统及方法 | |
CN103249027B (zh) | 一种终端业务处理的方法和设备 | |
CN110727581A (zh) | 崩溃定位方法与电子设备 | |
CN112698850B (zh) | 一种优化的升级方法和相关设备 | |
CN112732292A (zh) | 一种软件升级的方法、系统、设备及可读存储介质 | |
US20180113745A1 (en) | Non-transitory computer-readable medium, system, and information processing method | |
CN112199104B (zh) | 一种软件升级方法、装置、电子设备和存储介质 | |
CN110045969A (zh) | 应用程序安装方法、服务器、系统、设备及存储介质 | |
US9772892B2 (en) | Recovery method for portable touch-control device and portable touch-control device using the same | |
CN116633766A (zh) | 故障处理方法、装置、电子设备及存储介质 | |
CN109032643A (zh) | 软件更新的方法和装置 | |
JP5499484B2 (ja) | プログラム修正システム、端末装置、サーバ装置、プログラム修正方法、エラー検出プログラム及び管理プログラム | |
CN113760608A (zh) | 数据恢复方法和装置、电子设备和存储介质 | |
CN114328409A (zh) | 一种文件类型打开方式的设置方法、装置及电子设备 | |
CN111641987B (zh) | 基于业务进行处理的方法、终端设备、网络设备及计算机存储介质 | |
CN107678928B (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 |