用于更新应用程序的方法

文档序号:6504838阅读:161来源:国知局
用于更新应用程序的方法
【专利摘要】一种方法包括:从远程计算设备接收更新请求,所述更新请求包括与在所述远程计算设备处存储的客户端侧应用程序包相对应的第一签名。所述方法还包括:使用所述第一签名来识别第一服务器侧应用程序包。所述方法还包括:使用所述第一服务器侧应用程序包和第二服务器侧应用程序包作为输入来生成差异更新包,其中,所述差异更新包在被应用到所述客户端侧应用程序包时,用于修改所述客户端侧应用程序包,使得其在功能上与所述第二服务器侧应用程序包等价。
【专利说明】用于更新应用程序的方法
[0001]相关申请的交叉引用
[0002]本申请要求于2012年6月27日提交的美国临时专利申请N0.61/665,255的权益。【背景技术】
[0003]诸如移动电话、平板电脑、以及膝上型计算机之类的移动计算设备近些年来发展迅猛。这些设备可以配备有处理器、存储器、和通过局域网和广域网(包括互联网)来进行通信的能力。这些设备可以配备有允许设备执行各种计算机程序(通常被称为应用程序(apps))的操作系统。移动计算设备的用户可以通过经由移动电话网络或无线局域网的、与服务器的直接通信来下载计算机程序和其它内容。
[0004]应用程序作者不时地发布针对应用程序的更新。在通常的应用程序的生命周期中,作者可以发布多个更新。用于更新应用程序的一个方法是通过例如从服务器向移动设备的下载来获得已更新应用程序的完整拷贝。然后用更新版本来替换应用程序的过期版本。由于从服务器向移动设备发送已更新应用程序的完整版本,与该传输相关联的带宽成本基于已更新应用程序的完整拷贝的大小,而不管与被替换的版本相比,在已更新版本中要对应用程序进行的改变的程度。

【发明内容】

[0005]本公开涉及用于更新应用程序的方法。
[0006]所公开实施例的一个方案是一种方法,包括:从远程计算设备接收更新请求,所述更新请求包括与在所述远程计算设备处存储的客户端侧应用程序包相对应的第一签名。所述方法还包括:使用所述第一签名来识别第一服务器侧应用程序包。所述方法还包括:使用所述第一服务器侧应用程序包以及第二服务器侧应用程序包作为输入来生成差异更新包。所述差异更新包在被应用到所述客户端侧应用程序包时,用于修改所述客户端侧应用程序包,使得其在功能上与所述第二服务器侧应用程序包等价。
[0007]所公开的实施例的另一方案是一种包括可由一个或多个处理器来执行的程序指令在内的存储介质,当执行所述程序指令时,所述程序指令使得所述一个或多个处理器执行操作。所述操作包括:从远程计算设备接收更新请求,所述更新请求包括与在所述远程计算设备处存储的客户端侧应用程序包相对应的第一签名。所述操作还包括:使用所述第一签名来识别第一服务器侧应用程序包。所述操作还包括:使用所述第一服务器侧应用程序包以及第二服务器侧应用程序包作为输入来生成差异更新包。所述差异更新包在被应用到所述客户端侧应用程序包时,用于修改所述客户端侧应用程序包,使得其在功能上与所述第二服务器侧应用程序包等价。
[0008]所公开的实施例的另一方案是一种装置,包括一个或多个处理器和用于存储由所述一个或多个处理器使用的程序指令的一个或多个存储器设备。当由所述一个或多个处理器执行所述程序指令时,所述程序指令使得所述一个或多个处理器:从远程计算设备接收更新请求,所述更新请求包括与在所述远程计算设备处存储的客户端侧应用程序包相对应的第一签名。所述程序指令还使得所述一个或多个处理器:使用所述第一签名来识别第一服务器侧应用程序包,以及使用所述第一服务器侧应用程序包和第二服务器侧应用程序包作为输入来生成差异更新包,其中,所述差异更新包在被应用到所述客户端侧应用程序包时,用于修改所述客户端侧应用程序包,使得其在功能上与所述第二服务器侧应用程序包等价。
[0009]所公开的实施例的另一方案是一种方法,包括:从计算设备向一个或多个服务器计算机发送与在所述计算设备处存储的客户端侧应用程序包相对应的更新请求,所述客户端侧应用程序包包含多个应用程序组件。所述方法还包括:接收响应于所述请求的差异更新包,所述差异更新包包括多个增量,其中,每个增量对应于在所述客户端侧应用程序包中包含的应用程序组件之一。所述方法还包括:应用所述多个增量,以修改所述多个应用程序组件中的至少一些应用程序组件。
[0010]所公开的实施例的另一方案是一种包括可由一个或多个处理器来执行的程序指令在内的存储介质,当执行所述程序指令时,所述程序指令使得所述一个或多个处理器执行操作。所述操作包括:从计算设备向一个或多个服务器计算机发送与在所述计算设备处存储的客户端侧应用程序包相对应的更新请求。所述客户端侧应用程序包包含多个应用程序组件。所述操作还包括:接收响应于所述请求的差异更新包,所述差异更新包包括多个增量,其中,每个增量对应于在所述客户端侧应用程序包中包含的应用程序组件之一。所述方法还包括:应用所述多个增量,以修改所述多个应用程序组件中的至少一些应用程序组件。
[0011]所公开的实施例的另一方案是一种装置,包括一个或多个处理器和用于存储由所述一个或多个处理器使用的程序指令的一个或多个存储器设备。当由所述一个或多个处理器执行所述程序指令时,所述程序指令使得所述一个或多个处理器:从计算设备向一个或多个服务器计算机发送与在所述计算设备处存储的客户端侧应用程序包相对应的更新请求,所述客户端侧应用程序包包含多个应用程序组件。所述程序指令还使得所述一个或多个处理器:接收响应于所述请求的差异更新包,所述差异更新包包括多个增量,其中,每个增量对应于在所述客户端侧应用程序包中包含的应用程序组件之一。所述程序指令还使得所述一个或多个处理器:应用所述多个增量,以修改所述多个应用程序组件中的至少一些应用程序组件。
【专利附图】

【附图说明】
[0012]本文的描述参考了附图,其中,在全部的若干视图中,相似的附图标记指代相似的部分,且其中:
[0013]图1是用于远程安装应用程序的系统的框图。
[0014]图2是示出了计算设备的示例的硬件配置的示例的框图。
[0015]图3是示出了更新应用程序包的示例的说明图。
[0016]图4是示出了更新应用程序包的内容的示例的说明流程图。
[0017]图5是示出了在计算设备和一个或多个服务器计算机之间的通信的说明图。
[0018]图6是示出了用于更新应用程序的过程的第一示例的流程图。
[0019]图7是示出了用于生成差异补丁的过程的示例的流程图。【具体实施方式】
[0020]在此处描述的系统和方法中,对在计算设备处作为应用程序包存储的应用程序应用更新。应用程序包可以例如是包含软件应用程序的所有组件(例如,代码、图形、和/或其它媒体文件)在内的单一文件。应用程序包的一个示例是Android应用程序包文件格式,也被称为APK文件格式,其由Android操作系统来使用。
[0021]基于在远程计算设备处安装的应用程序的版本和该应用程序的当前版本来选择或创建差异更新补丁。创建差异更新补丁可以包括:基于从远程计算设备接收到的签名,从服务器侧仓库选择应用程序包文件,以在不向服务器发送应用程序包文件本身的情况下,使用与在远程计算设备处安装的应用程序包文件实质上相同的应用程序包文件来创建差异更新补丁。创建差异更新补丁可以包括:将应用程序的每个版本的应用程序包加以解包(例如,解压缩),并创建对二进制更新包的组件进行分别更新的打补丁指令。打补丁指令的一个示例是二进制数据增量。为了在远程计算设备处应用该差异更新补丁,在远程计算设备处对应用程序包加以解包,通过例如对各个组件中的每个组件应用二进制数据增量来对各个组件应用差异更新,对组件进行打包(例如,压缩),以创建应用程序的已更新应用程序包。
[0022]图1是根据一个实现的系统100的框图。系统100包括计算设备110。计算设备110通过网络120连接到一个或多个服务器计算机。一个或多个服务器计算机可以包括:更新管理器130、更新传递服务140、仓库150、高速缓存服务160、以及补丁生成器170。所有这些设备经由网络120彼此通信且与计算设备110通信。
[0023]计算设备110可以是智能电话、平板计算机、膝上型计算机、或可以经由网络120连接到一个或多个服务器计算机的其它移动计算设备。应用程序可以通过应用程序包文件的形式存在于和/或被安装在计算设备110处。应用程序包文件的示例是用作与应用程序相对应的组件文件的容器的文件。可以对应用程序包文件进行压缩和/或加密。在一些实现中,计算设备110可用于对应用程序包进行解包(解压缩),得到与应用程序相对应的多个组件文件。
[0024]网络120可以包括各种类型的多个网络,包括具有任何组合方式的LAN、WAN、和互联网。可以使用有线和/或无线通信协议。
[0025]更新管理器130可用于从计算设备110接收针对更新的请求。该请求可以标识应用程序包的当前安装版本,并可选地还可以标识应用程序包的所请求版本。可以通过签名来标识请求中的应用程序的当前安装版本和应用程序的所请求版本。该签名可以是具有任何合适形式的唯一或非唯一签名,且可以由例如在给定指定输入时将始终生成相同输出的算法来生成。在一些实现中,该签名可以是固定的类字母数字串,其比与其对应的应用程序包文件要短很多量级。作为任何示例,签名可以是散列码,例如SHA256摘要。该请求还可以包括附加信息,例如与计算设备110相对应的硬件或软件信息。
[0026]更新管理器130使用在请求中包含的信息可以向计算设备110发送信息。如本文将要描述的,该信息可以包括用于更新应用程序的一个或多个选项。该信息还可以包括与更新应用程序相关的元数据,例如用于安装更新版本的应用程序的存储空间要求。
[0027]更新传递服务140可用于引起向计算设备110发送更新包。更新包可以具有补丁的形式,在本文中也被称为差异更新包,基于应用程序包的当前安装版本和应用程序包的所请求版本来选择该更新包。可以使用仓库150或高速缓存服务160来进行该发送。
[0028]补丁生成器170可用于生成补丁,可以在计算设备110处应用该补丁,以修改应用程序包文件或与应用程序相对应的组件文件。该补丁对应于应用程序的特定版本对。例如,在存在应用程序包的被指定为vl、v2、和v3的3个版本的情况下,可以生成被应用到Vl以得到功能上与v3等价的更新应用程序包的第一补丁,且可以生成被应用到v2以得到功能上与v3等价的更新应用程序包的第二补丁。
[0029]可以在不访问在计算设备110处安装的应用程序包的在先版本的情况下,响应于从计算设备110处接收到的更新请求,由补丁生成器自动生成补丁。计算设备110可以发送标识应用程序包的安装版本的信息。该信息可以是例如版本号或签名,例如SHA-1散列或SHA256散列。由补丁生成器170来访问对应应用程序包的本地拷贝。可以在仓库150处使用签名来识别应用程序包的拷贝,这指示了位于仓库150处的应用程序包与位于移动设备110处的应用程序包相同,且从而可以将其用作生成更新包的基础,该更新包可被应用到移动设备110处的应用程序包。
[0030]图2是计算设备110的硬件配置的示例的框图。可以将类似的硬件配置用于更新管理器130、更新传递服务140、仓库150、高速缓存服务160、以及补丁生成器170。
[0031]计算设备110的CPU 220可以是传统中央处理单元。备选地,CPU220可以是任何其他类型的设备、或多个设备,其能够操纵或处理现存的或以后开发的信息。尽管可以用如图所示的单一处理器(例如,CPU 220)来实现所公开的示例,可以使用多于一个处理器来实现在速度和效率方面的优点。
[0032]计算设备110可以包括存储器222,例如随机存取存储器设备(RAM)。可以将任何其他合适类型的存储设备用作存储器222。存储器222可以包括可由CPU 220使用总线226来访问的代码和数据224。存储器222还可以包括操作系统228和一个或多个应用程序230。应用程序230可以包括允许CPU 220执行此处所述方法的程序。
[0033]可以可选地以任何合适的计算机可读介质的形式来提供存储设备232,例如硬盘驱动器、存储器设备、闪存驱动器、或光驱动器。一个或多个输入设备234(例如,键盘、鼠标、手势敏感输入设备)接收用户输入,并可以向CPU 220输出指示用户输入的信号或数据。可以提供一个或多个输出设备,例如显示设备236。显示设备236(例如液晶显示器(LCD)、或阴极射线管(CRT))允许响应于例如接收到视频信号而向用户呈现输出。
[0034]尽管图2将计算设备110的CPU 220和存储器222示出为集成到单一单元中,可以使用其他配置。可以将CPU 220的操作分布在可以直接耦合或通过局域网或其它网络耦合的多个机器上(每个机器具有一个或多个处理器)。可以将存储器222分布在多个机器上,例如基于网络的存储器或执行计算设备110的操作的多个机器中的存储器。尽管此处示出为单一总线,计算设备110的总线226可以包括多个总线。此外,存储设备232可以直接耦合到计算设备110的其它组件,或可以经由网络来访问,且可以包括单一集成单元(例如存储器卡)或多个单元(例如,多个存储器卡)。从而可以用各种配置来实现计算设备110。
[0035]图3是示出了更新应用程序包的示例300的说明图。在大多数情况下,与下载应用程序包的更新版本的完整拷贝相比,这允许小得多的数据下载大小,导致减少带宽成本。在本示例中,在服务器侧上(例如补丁生成器170)存在应用程序的原始版本310和更新版本320。原始版本310和更新版本320中每一个可以是应用程序包文件。使用原始版本310和更新版本320作为输入来执行差异补丁生成过程,且作为结果生成补丁 340。基于用作输入的应用程序包文件之间的差异来产生该补丁 340。在图3所示示例中,可以在不首先对应用程序包文件进行解包或解压缩的情况下生成补丁 340。取而代之地,可以由使用与原始版本310和更新版本320相对应的应用程序包文件作为输入的二进制数据增量过程来生成补丁 340。补丁 340包括允许通过对原始版本310应用补丁 340来重新创建更新版本320的二进制数据增量信息。
[0036]二进制数据增量生成是已知的。可以在过程330中应用来产生补丁 340的二进制增量数据生成的实现示例包括=Xdelta算法和bsdiff (后缀排序)算法的变型。在过程300中可以应用其它算法来取代二进制数据增量生成算法,或在过程300中除了二进制数据增量生成算法之外,还可以应用其它算法。
[0037]从一个或多个服务器计算机向计算设备110发送补丁 340。然后对应用程序的原始版本310的客户端侧拷贝350 (也被称为客户端侧应用程序包)应用该补丁 340,其产生应用程序的更新版本320的客户端侧再现360。
[0038]图4是示出了更新应用程序包中的内容的示例的说明图。在一些情况下,与图3的示例相比,这可以允许小得多的下载大小。在本示例中,将应用程序包文件解包为组件文件,针对每个文件对来生成二进制数据增量,然后创建包含各个二进制数据增量在内的补丁档案Zip文件(本文中有时将其称为差异更新包)。
[0039]在本示例中,在服务器侧(例如补丁生成器170)上存在应用程序的原始版本410和更新版本420。原始版本410和更新版本420中每一个可以是应用程序包文件。对原始版本410和更新版本420中每一个执行unzip过程430。作为结果生成原始资源文件415和更新资源文件425。对原始资源文件415与更新资源文件425的每个对应用差异补丁生成过程440,得到与每个文件对相对应的二进制数据增量。输出结果(增量)并将其并入补丁 450,从一个或多个服务器计算机向计算设备110发送该补丁 450。
[0040]计算设备110对应用程序的原始版本的客户端侧拷贝460进行解包(解压缩),得到客户端侧原始资源文件465。在打补丁操作470中对客户端侧原始资源文件应用来自补丁 450的增量,得到客户端侧已更新资源文件480,将客户端侧已更新资源文件480打包(压缩)为应用程序包文件,该应用程序包文件是应用程序的更新版本420的客户端侧再现485。
[0041]图5是示出了在计算设备和一个或多个服务器计算机之间的通信的说明图。
[0042]首先,在计算设备110处生成针对应用程序的请求。该请求可以通过执行应用程序,响应于接收到信号或数据,或响应于用户输入来生成。该请求指示应用程序的所需版本。计算设备确定当前是否安装了应用程序的之前版本。在传输510中,计算设备向更新管理器130发送标识应用程序的当前安装版本(如果可用)以及应用程序的所需版本的信肩、O
[0043]在一些实现中,更新管理器130确定与应用程序的安装版本和所需版本相对应的补丁是否存在(例如,用于从Vl更新到v3的补丁)。更新管理器130可以在传输520中以补丁(如果可用)的任何或所有URL、与应用程序的所需版本相对应的整个应用程序包的URL、以及与补丁相关的元数据来进行响应。在其他实现中,更新管理器不确定与应用程序的安装版本和所需版本相对应的补丁是否存在,而是代之以生成和/或向计算设备110发送可以用于请求补丁(如果其存在)的URL。在这种实现中,当请求补丁时,如果其存在,则可以对其进行传递,或者当请求补丁但其不存在时,使用服务器侧重定向来传递完整的应用程序包文件。
[0044]基于从更新管理器130接收到的信息,计算设备110基于例如补丁是否可用和/或与补丁相关的元数据,来确定是否可以对应用程序的当前安装版本打补丁。确定不能对应用程序打补丁的情况的其它示例包括:在计算设备110处的软件不具有足够的功能来支持二进制数据增量,计算设备110缺少用于存储和处理二进制数据增量的充足可用的存储器,不能读取当前安装的应用程序包(例如是受保护的)以应用二进制数据增量,在当前安装的应用程序包与在仓库150处存储的包不匹配(基于包签名)的情况下,以及在打过补丁的包与期望的包不匹配(基于包签名)的情况下。
[0045]如果不能对应用程序打补丁,计算设备110可以请求与应用程序的更新版本相对应的完整应用程序包文件,且可以通过安装该完整的应用程序包文件来更新应用程序。如果可以对应用程序打补丁,可以使用例如从更新管理器接收到的补丁 URL来从计算设备110向更新传递服务发送传输530。更新传递服务可以验证请求,并向计算设备110发送重定向传输540。重定向传输540使得计算设备110尝试经由从计算设备110到高速缓存服务160的传输550来从高速缓存服务160检索补丁。传输550可以例如使用由更新传递服务140提供的URL。
[0046]响应于传输550,高速缓存服务160尝试定位补丁。如果补丁被定位(“高速缓存命中”),将其经由传输560向计算设备发送。否则,经由传输570向仓库150请求补丁,并在高速缓存服务160处经由传输580从仓库接收补丁。然后在高速缓存服务160处存储该补丁,并经由传输560向计算设备110发送。如果不能对补丁进行定位,向计算设备发送错误传输590。在其他实现中,可以省略高速缓存服务160,且可以从计算设备110直接请求补丁,并由仓库150直接向计算设备110发送补丁。
[0047]响应于接收到补丁,在计算设备110处以例如结合图3或图4描述的方式来应用该补丁。
[0048]图6是示出了用于更新应用程序的过程600的示例的流程图。可以在计算设备110处执行结合过程600描述的操作。可以用在存储介质或存储设备(例如,计算设备110的存储器222)上存储的计算机可执行程序指令的形式来体现过程600,在一些示例中,存储器222可以是非瞬时计算机可读存储介质或存储设备。当由处理器(例如,计算设备110的CPU 220)执行时,指令使得CPU 220执行本文中将要参照过程600来描述的操作。
[0049]如关于图5所讨论的,可以响应于针对应用程序安装的请求,在计算设备110处执行过程600。
[0050]在操作602,进行与在计算设备110处是否安装了所请求应用程序的在先版本相关的确定。如果未安装在先版本,则在操作604处请求传递应用程序包的完整版本。在操作606处下载该完整版本,然后在操作608处安装。
[0051]如果在操作602处确定安装了应用程序的在先版本,过程前进至操作610,在操作610中,请求更新包。这可以通过例如从计算设备110向一个或多个服务器计算机发送标识应用程序的安装版本和应用程序的请求版本的信息来进行。[0052]在操作612处,计算设备确定是否已接收到与更新包相关的信息。该信息可以包括例如更新包的URL和与更新包相关联的元数据。如果否,过程进行至操作606。如果接收到该信息(例如,补丁 URL和元数据),在操作614处进行与是否应当与该应用程序打补丁相关的确定。这可以基于元数据。例如,如果使用更新包来打补丁将要求比可用存储空间更多的存储空间,则将不执行打补丁。可以使用其他标准。如果计算设备确定不应当对应用程序打补丁,则过程进行至操作606。否则过程进行至操作616。
[0053]在操作616处下载补丁。如果下载失败,在操作618处中止打补丁,且在操作606处下载完整应用程序包。如果下载成功,则在操作620处应用更新包,且在操作622处作为安装补丁的结果而生成已更新应用程序包。
[0054]图7是示出了用于生成差异补丁的过程700的示例的流程图。可以在一个或多个服务器计算机处执行结合过程700描述的操作,服务器计算机是例如更新管理器130、更新传递服务140、仓库150、高速缓存服务160、以及补丁生成器170中的任意或全部。在将操作描述为由一个或多个计算机执行的情况下,当其由一个计算机来执行时,将其完成。可以用在存储介质或存储设备(例如,计算设备110的存储器222)上存储的计算机可执行程序指令的形式来体现过程700,在一些示例中,存储器222可以是非瞬时计算机可读存储介质或存储设备。当由处理器(例如,CPU)执行时,指令使得处理器执行本文中将要参照过程700来描述的操作。
[0055]在操作702,在一个或多个服务器计算机处从计算设备110接收更新请求。该更新请求可以包括第一版本标识符和第二版本标识符。第一版本标识符对应于在计算设备110上安装的软件应用程序,且第二版本标识符对应于该软件应用程序的后续版本。
[0056]在操作704,在一个或多个服务器计算机处进行以下确定:与第一版本标识符和第二版本标识符相对应的更新包是否存在。如果补丁存在,过程进行至操作706,在操作706中,向计算设备110发送更新包。如果更新包不存在,在操作708处于生成针对更新包的请求。同时,一个或多个服务器计算机可以向计算设备110发送应用程序包的完整拷贝或用于下载应用程序包的完整拷贝的指令。
[0057]在操作710,进行与是否自动创建所请求的更新包相关的确定。如果确定下载次数和下载大小的减少使得创建更新包合理,则可以创建更新包,以服务于将来的用户对补丁的预期需求。例如,可以将下载次数和下载大小中的任一个或两个与阈值进行比较,以进行该确定。从而,是否生成更新包可以基于以下一项或多项:针对创建更新包的请求的次数和计算出的下载大小减少。如果确定要创建更新包,则可以在操作712处生成更新包。这可以由补丁生成器170来执行。
[0058]其它因素可以用于确定是否创建所请求的更新包。可以使用任何相关因素。例如,将创建基于请求的数目确保了针对很少请求的更新包不生成和存储增量。如果对特定增量的生成之前已失败,则可以对其进行跟踪,使得不再进行尝试。此外,与处理完全的应用程序包相对地,可以使用可微调的决定限制来确定是否应该针对特定升级场景来使用更新包。如果更新包的大小大于特定百分比,例如全包的大小的80%,则可以取代生成更新包,而发送应用程序包的完全版本。
[0059]出于可靠性,补丁生成器170可以包括多个数据中心中的多个服务器。可以使用中心化的统计系统来跟踪对增量生成的需要,且确保每个增量仅被补丁生成器170的可用分布式增量产生器之一仅生成一次。可以使用中心化的到期锁来避免对相同更新包的重复生成。
[0060]可以用硬件来实现计算设备和一个或多个服务器计算机130、140、150、160、和170 (和存储于其上和/或由此执行的算法、方法、指令等),硬件包括例如:知识产权(IP)核、专用集成电路(ASIC)、可编程逻辑阵列、光处理器、可编程逻辑控制器、微代码、固件、微控制器、服务器、微处理器、数字信号处理器或任何其他合适的电路。在权利要求中,术语“处理器”应当被理解为包含任意前述内容,不管是单独的还是组合的。术语“信号”和“数据”可相互交换使用。
[0061]在一些实现中,可以将计算设备110和一个或多个服务器计算机130、140、150、160、和170的操作组合到单一计算机中。在其他实现中,计算设备和一个或多个服务器计算机130、140、150、160、和170中每一个的功能可以分布在多个不同设备上。尽管为了简单起见说明为单一机器,应当理解:一个或多个服务器计算机130、140、150、160和170不一定使用单一处理器或单一物理机来实现。此外,尽管上面可以将特征描述或要求为在以特定组合来进行动作,在一些情况下,可以用组合来实现组合中的一个或多个特征,且可以将组合定向为子组合或子组合的变化。
[0062]在另一示例中,可以使用具有计算机程序的通用计算机/处理器来实现计算设备110和一个或多个服务器计算机130、140、150、160和170,当执行计算机程序时,计算机程序执行本文所述各个方法、算法和/或指令中的任意方法、算法和/或指令。附加地或备选地,例如可以采用专用计算机/处理器,其可以包含用于执行本文所述各个方法、算法和/或指令中的任意方法、算法和/或指令的专用硬件。
[0063]此外,本公开的全部或部分实施例可以采用计算机程序产品的形式,该计算机程序产品可以从例如存储设备或存储介质中访问,例如非瞬时计算机可使用或计算机可读介质。存储设备或存储介质可以是可以有形地包含、存储、通信、或传输供任何处理器使用或与任何处理器结合使用的程序的任何设备。存储设备或存储介质可以是例如电子设备、磁设备、光设备、电磁设备、或半导体设备。其它合适的设备和介质也是可用的。
[0064]尽管本公开包括当前被视为最实际和最优选的实施例的内容,应当理解:本公开不受限于所公开的实施例,而是相反地,其意在覆盖在所附权利要求的精神和范围中包括的各种修改和等价布置,所附权利要求的范围应当与最宽的解释一致,以包含在法律下被允许的所有这种修改和等价结构。
【权利要求】
1.一种方法,包括: 从计算设备向一个或多个服务器计算机发送与在所述计算设备处存储的客户端侧应用程序包相对应的更新请求,所述客户端侧应用程序包包含多个应用程序组件; 接收响应于所述请求的差异更新包,所述差异更新包包括多个增量,其中,每个增量对应于所述客户端侧应用程序包中包含的应用程序组件之一;以及 应用所述多个增量,以修改所述多个应用程序组件中的至少一些应用程序组件。
2.根据权利要求1所述的方法,还包括: 在应用所述多个增量之前,对所述客户端侧应用程序包解包,使得能够修改所述客户端侧应用程序包的所述多个应用组件。
3.根据权利要求2所述的方法,还包括: 通过在应用所述多个增量之后对所述多个应用程序组件重新打包,来生成已更新客户端侧应用程序包。
4.根据权利要求1所述的方法,其中,所述更新请求包括与所述客户端侧应用程序包相对应的签名。
5.根据权利要求4所述的方法,其中,由所述一个或多个服务器计算机使用所述签名来选择所述差异更新包。
6.根据权利要求5所述的方法,其中,所述签名是散列码。
7.根据权利要求1所述的方法,其中,所述客户端侧应用程序包等价于位于所述一个或多个服务器计算机处的第一服务器侧应用程序包,所述已更新客户端侧应用程序包等价于位于所述一个或多个服务器计算机处的第二服务器侧应用程序包,以及由所述一个或多个服务器计算机使用所述第一服务器侧应用程序包和所述第二服务器侧应用程序包来生成所述差异更新包。
8.一种装置,包括: 一个或多个处理器;以及 一个或多个存储器设备,用于存储由所述一个或多个处理器使用的程序指令,其中,当由所述一个或多个处理器执行所述程序指令时,所述程序指令使得所述一个或多个处理器: 从计算设备向一个或多个服务器计算机发送与在所述计算设备处存储的客户端侧应用程序包相对应的更新请求,所述客户端侧应用程序包包含多个应用程序组件; 接收响应于所述请求的差异更新包,所述差异更新包包括多个增量,其中,每个增量对应于所述客户端侧应用程序包中包含的应用程序组件之一;以及 应用所述多个增量,以修改所述多个应用程序组件中的至少一些应用程序组件。
9.根据权利要求8所述的装置,其中,所述程序指令还使得所述一个或多个处理器: 在应用所述多个增量之前,对所述客户端侧应用程序包解包,使得能够修改所述客户端侧应用程序包的所述多个应用组件。
10.根据权利要求9所述的装置,其中,所述程序指令还使得所述一个或多个处理器: 通过在应用所述多个增量之后对所述多个应用程序组件重新打包,来生成已更新客户端侧应用程序包。
11.根据权利要求8所述的装置,其中,所述更新请求包括与所述客户端侧应用程序包相对应的签名。
12.根据权利要求11所述的装置,其中,由所述一个或多个服务器计算机使用所述签名来选择所述差异更新包。
13.根据权利要求12所述的装置,其中,所述签名是散列码。
14.根据权利要求8所述的装置,其中,所述客户端侧应用程序包等价于位于所述一个或多个服务器计算机处的第一服务器侧应用程序包,所述已更新客户端侧应用程序包等价于位于所述一个或多个服务器计算机处的第二服务器侧应用程序包,以及由所述一个或多个服务器计算机使用所述第一服务器侧应用程序包和所述第二服务器侧应用程序包来生成所述差异更新包。
15.—种方法,包括: 从远程计算设备接收更新请求,所述更新请求包括与在所述远程计算设备处存储的客户端侧应用程序包相对应的第一签名; 使用所述第一签名来识别第一服务器侧应用程序包;以及 使用所述第一服务器侧应用程序包以及第二服务器侧应用程序包作为输入来生成差异更新包,其中,所述差异更新包在被应用到所述客户端侧应用程序包时,用于修改所述客户端侧应用程序包,使得其在功能上与所述第二服务器侧应用程序包等价。
16.根据权利要求15所述的方法,还包括: 在生成所述差异更新包之后,向所述远程计算设备发送所述差异更新包。
17.根据权利要求15 所述的方法,还包括: 响应于接收到所述更新请求,基于一个或多个预定标准来确定是否生成所述差异更新包,其中,如果满足所述一个或多个预定标准,则执行生成所述差异更新包。
18.根据权利要求17所述的方法,其中,所述一个或多个预定标准包括:多个存储的差异更新包之一是否对应于所述第一服务器侧应用程序包和所述第二服务器侧应用程序包。
19.根据权利要求17所述的方法,其中,所述一个或多个预定标准包括:与所述第一服务器侧应用程序包和所述第二服务器侧应用程序包相对应的之前接收到的更新请求的次数。
20.根据权利要求17所述的方法,其中,所述一个或多个预定标准包括:计算出的下载大小减少。
21.根据权利要求3所述的方法,其中,所述更新请求包括描述所述远程计算设备的一个或多个系统特性,以及所述一个或多个预定标准包括所述一个或多个系统特性。
22.根据权利要求15所述的方法,其中,使用所述第一签名来识别所述第一服务器侧应用程序包包括:将所述第一签名与对应于所述第一服务器侧应用程序包的第二签名进行比较。
23.根据权利要求15所述的方法,其中,所述第一签名是散列码。
24.—种装置,包括: 一个或多个处理器;以及 一个或多个存储器设备,用于存储由所述一个或多个处理器使用的程序指令,其中,当由所述一个或多个处理器执行所述程序指令时,所述程序指令使得所述一个或多个处理器:从远程计算设备接收更新请求,所述更新请求包括与在所述远程计算设备处存储的客户端侧应用程序包相对应的第一签名; 使用所述第一签名来识别第一服务器侧应用程序包;以及 使用所述第一服务器侧应用程序包以及第二服务器侧应用程序包作为输入来生成差异更新包,其中,所述差异更新包在被应用到所述客户端侧应用程序包时,用于修改所述客户端侧应用程序包,使得其在功能上与所述第二服务器侧应用程序包等价。
25.根据权利要求24所述的装置,所述程序指令还使得所述一个或多个处理器: 在生成所述差异更新包之后,向所述远程计算设备发送所述差异更新包。
26.根据权利要求24所述的装置,所述程序指令还使得所述一个或多个处理器: 响应于接收到所述更新请求,基于一个或多个预定标准来确定是否生成所述差异更新包,其中,如果满足所述一个或多个预定标准,则执行生成所述差异更新包。
27.根据权利要求26所述的装置,其中,所述一个或多个预定标准包括以下至少一项:多个存储的差异更新包之一是否对应于所述第一服务器侧应用程序包和所述第二服务器侧应用程序包,与所述第一服务器侧应用程序包和所述第二服务器侧应用程序包相对应的之前接收到的更新请求的次数,或计算出的下载大小减少。
28.根据权利要求26所述的装置,其中,所述更新请求包括描述所述远程计算设备的一个或多个系统特性, 以及所述一个或多个预定标准包括所述一个或多个系统特性。
29.根据权利要求24所述的装置,其中,使用所述第一签名来识别所述第一服务器侧应用程序包包括:将所述第一签名与对应于所述第一服务器侧应用程序包的第二签名进行比较。
30.根据权利要求24所述的装置,其中,所述第一签名是散列码。
【文档编号】G06F9/445GK103645910SQ201310261678
【公开日】2014年3月19日 申请日期:2013年6月27日 优先权日:2012年6月27日
【发明者】蒂尔曼·斯波科特, 安德鲁·迪夫隆·施塔德勒, 芬克斯·柯克帕特里克, 伊利亚·福曼, 克里斯汀·商塔格 申请人:谷歌公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1