一种基于Android平台的应用升级方法及系统的制作方法

文档序号:7894798阅读:146来源:国知局
专利名称:一种基于Android平台的应用升级方法及系统的制作方法
技术领域
本发明属于移动互联网领域,主要涉及Android平台下应用的APK差量包生成和升级方法及系统。
背景技术
Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2012年2月数据,Android占据全球智能手机操作系统市场52. 5%的份额,中国市场占有率为68. 4%。 随着移动互联网产业的井喷式发展,象会说话的汤姆猫、愤怒的小鸟、植物大战僵尸以及水果忍者等好的移动智能终端应用不断的涌现,深受智能手机用户欢迎。这些好的应用不断有新版本出现,用户需要进行应用升级。在Android平台的应用被打包为apk格式。APK是AndroidPackage的缩写,即Android安装包(apk)。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件、其他资源文件、签名以及XML格式的程序全局配置文件AndroidManifest. xml。Android平台下的应用以往的升级方式必须下载整个APK包,而新旧版本APK之间的差异不大,下载整个新版本APK包的方式产生了大量的无效流量。如果用户下载的只是一个可以将旧版本软件修改为新版本软件的小的“差量包”,那么这将减少网络流量,加快下载速度。而其目前移动智能终端上网费用跟流量有密切关系的,因此APK差量升级方法有很好的应用前景。该方法的难点在于APK差量包生成。产生两个序列的差异信息的算法称之为“差异算法(Differencing Algorithm) ”。除了用于产生更新包,也有其他多方面应用。早期用于产生更新数据,更新信息只需包含前后两份数据的差异信息,而无需传送整份新数据。UNIX的算法diff用于寻找并产生文件的变化内容。还有文件的版本管理、系统备份及恢复等应用。此外,差异算法也可以找出两个序列的公共子序列,并且当两个序列越相似,算法找出的公共子序列长度越接近最长公共子序列(LCS)算法找出的最优长度。所以差异算法可作为相似序列的LCS近似算法,也能用于文本相似度检测。早期的差异算法使用最长公共子序列(LCS)算法,Miller及Myers指出了 LCS算法用于寻找文件差异的缺陷。编辑距离是另一个用来衡量序列差异信息的尺度。编辑距离定义为一个序列变化为另一个序列所需的最少的编辑次数,相比LCS,编辑距离能更好刻画出序列间的差异,从而也能得到更小的差异信息文件。Tichy提出块移动(block move)的做法,对编辑距离算法进行改进,使得算法可以对字符成块的进行操作,而不是每次只操作一个字符。这样相比原编辑距离算法,该算法能更好的用于寻找序列间的差异。90年代初Christoph Reichenberger给出了时间复杂度为0(m n)的贪心算法。虽然算法相比Tichy的算法更适用于寻找序列间的差异,但时间复杂度仍然太过于高。后来Randal C. Bums和Darrell D. E. Long给出了性能较差,但时间复杂度为O (m+n)的线性算法。

发明内容
本发明提出一种基于Android平台的应用升级方法,并实现了采用该应用升级方法的系统,该系统分为服务器端差量包管理系统和Android应用升级客户端。本发明改变了现有Android平台下升级应用必须下载完整apk包的模式,大大节省了应用升级过程产生的流量,为用户节约了流量费。本升级方法主要包括以下步骤1)在服务器端,通过比较Android应用的不同版本的apk包之间差异,生成差量包;2)在服务器端,对应用不同版本的之间的差量包进行管理、存储和部署;3) Android应用升级客户端,可以将系统所安装应用的信息列表,与服务器端的差量包信息进行匹配,如果有可用的升级,将提示用户可以下载差量包进行升级;4)升级过程中,首先下载服务器端的差量包,接着解压手机中原有版本软件的apk包和差量包,然后整合生成新版本软件,并签名打包生成新的apk包,随后用户可以安装新的apk包,完成升级过程。本发明的重点在于APK升级差量包生成方法,在应用升级系统服务器端包含了APK差量包生成模块,该模块先将新旧版本APK包分别解压,接着对解压后的新旧版本文件夹进行比较,找出新增文件、删除的文件以及有修改的文件,然后比较修改的文件之间的二进制差异,生成差异文件。在服务器端比较Android应用的不同版本的apk包之间差异,生成差量包,其主要流程如下
①先将apk包分别解压;
②对解压后的新旧版本文件夹进行比较,找出新增文件、删除的文件以及有修改的文
件;
③比较修改的文件之间的二进制差异,生成差异文件;
④将新旧版本之间的差异信息(包括新版本相对旧版本需新增的文件、删除的文件以及有修改的文件等信息)写入xml格式文档;
⑤将新增文件、有修改文件的差异文件以及差异信息xml文档打包成apk包。APK升级差量包生成方法的主要难点在于服务器端差量包生成方法中的步骤③,如何高效地比较修改的文件之间的二进制差异,生成差异文件。本发明提出寻找序列的变化内容的算法。寻找两个序列X、Y的差异内容,产生Y相对X的差异信息Z,使得X能够根据Z变化为Y。如果X、Y是同一种文件的不同版本,Z往往比Y小得多,这样存储或传送Z将比直接存储或传送Y更节约资源。本发明提出一种基于序列结构因素的启发式算法,对两个序列进行划分,再进行相同内容的匹配。算法时间复杂度为0((n + m) log (min(n,m))),空间复杂度为0(n+m),其中n、m分别为X、Y的长度。在实际应用中该算法的执行速度是接近线性的,相比已有的算法,该算法更符合实际应用需求。由于算法主要是解决相似序列的相关问题,算法设计针对相似序列提出。如

图1,设S2为SI修改而来的序列。Ml与为两个序列相同的内容,如果|#2|很大,SI中在其他地方出现于一样内容的子串的概率将非常小。于是可以认为由分修改为泣时,#7未经修改而对应于,那么可以推出S是由J修改而来4由C修改而来,这样通过#2,#之可以将序列进行划分。如图2,在分,泣中搜索#7,麗 。分,泣下标从0开始,长度分别为nl、n2。Pl为分的前Ien个字符'P2为泣前Ien个字符。设两个指针i,j,分别为Pl、P2第一个字符的下标,开始时有i 二 J' = O。PU P2的关系有以下4种情况 il)P2未经修改,与W —样;
⑵P2为S2中新增的内容
(3)W在泣中被删除了 (A、P1、P2同时符合情况(2)、(3)
以W为模式串在泣中搜索匹配,设在处获得匹配,如图3。若找不到匹配则令off2 =⑴。同样,以没为模式串在分中搜索匹配,可得o//7。如果有of/7 = off2 = 0,则W、没属于情况(I) -Moffl = off2 =⑴,则属于情况(4);然而,当0〈 offl,off2 <⑴时,判断其属于后三种情况的哪一种却是困难的。采用贪心策略来做判断。苯offl/nl <认为是情况(2),否则认为是情况(3)。为了处理/^,没属于情况(4)而0 toffl, off2< ^的情况,在泣{SI、中搜索产2 {P2)时根据7m长度适当减小搜索长度,即并不一定在整个泣(分)中搜索W (Z^)0除非o//7 二 off2 = 否则都可以找到一对匹配,即#2,麗 。当o//7 二 off2 二①时,将指针i,J分别右移一段距离,继续以上过程。以上已经讨论,\M1 I必须很大,划分是正确的概率才大。但7m设置大了,很多匹配的小片段就无法搜索出来,从而使找出来的不同的序列内容比实际多很多。算法采用多次搜索的方法来解决这个问题。首先,设置仏/7的值比较大,先搜索出相同的大片段,对分,泣进行划分。再将7m逐渐变小,找出相同小片段。设弘忍的长度分别为/ 7,/^,设置参数skipCoe ,Aoffl = off2 =⑵时,将PU P2 的起始指针 i,J 分别右移二 nl*skipCoe,skipLen2 = n2*skopCoe 个单位。设置函,根据i (J')右移的长度返回搜索模式串时最大搜索长度searcAZefli {searchLen2)。searchLen为skipLen的单调递增函数。只在泣
中搜索模式串Pl,如果泣
中没有与Pl匹配的串,认为Pl在S2中没有匹配。若searchLen2 ^ n2,则在整个S2中搜索Pl。开始时,先搜索大片相同的内容,将分,泣划分,再逐渐寻找小段相同的子串。所以开始时7m值设得较大,需要在较大范围内搜索匹配,seardZm需要设置得较大。算法中,模式串的长度Ien是searchLen的一个单调递增的函数。算法中searchLen为skipLen的函数,可以采用一个简单的倍数关系,即searchLen= a ^skipLen。当很大时,很小,就很大了 ;当很小时,Ct则需要比较大,搜索距离才不会太短。以下为定义的函数
权利要求
1.一种Android平台的应用软件升级方法,其特征在于 Android平台的应用升级方法,依次有以下步骤 1)在服务器端,通过比较Android应用的不同版本的apk包之间差异,生成差量包; 2)在服务器端,对应用不同版本的之间的差量包进行管理、存储和部署; 3)Android应用升级客户端,可以将系统所安装应用的信息列表,与服务器端的差量包信息进行匹配,如果有可用的升级,将提示用户可以下载差量包进行升级; 4)升级过程中,首先下载服务器端的差量包,接着解压手机中原有版本软件的apk包和差量包,然后整合生成新版本软件,并签名打包生成新的apk包,随后用户可以安装新的apk 包。
2.根据权利要求I所述的一种Android平台的应用软件升级方法,其特征在于 所述步骤I)的APK升级差量包生成方法,依次有以下步骤 ①先将apk包分别解压; ②对解压后的新旧版本文件夹进行比较,找出新增文件、删除的文件以及有修改的文件; ③比较修改的文件之间的二进制差异,生成差异文件; ④将新旧版本之间的差异信息(包括新版本相对旧版本需新增的文件、删除的文件以及有修改的文件等信息)写入xml格式文档; ⑤将新增文件、有修改文件的差异文件以及差异信息xml文档打包成apk包。
3.根据权利要求2所述的一种Android平台的应用软件升级方法,其特征在于 所述步骤③中的比较修改的文件之间的二进制差异,生成差异文件的基于序列结构因素的启发式算法,通过对两个序列X、Y进行划分,再进行相同内容的匹配,寻找两个序列的差异内容,产生Y相对X的差异信息Z,使得X能够根据Z变化为Y(算法时间复杂度为0 ((n+ m) log (min (n, m))),空间复杂度为0 (n+m),其中n、m分别为X、Y的长度)。
4.实现Android平台的应用软件升级方法的系统,其特征在于 服务器端主要包括两个模块,即差量包生成模块和差量包管理模块; 差量包生成模块即采用如权利要求2所述的APK升级差量包生成方法和如权利要求3所述的基于序列结构因素的启发式算法来为各种应用的不同版本之间生成差量包; 差量包管理模块主要功能是管理各种应用的不同版本APK包、调用差量包生成模块来生成不同版本的差量包,并管理和存储这些差量包,同时为应用升级客户端提供了查询、下载差量包的服务。
5.根据权利要求4所述的实现Android平台的应用软件升级方法的系统,其特征在于 Android应用升级客户端(需安装到基于Android平台的移动智能终端)主要功能是通过调用应用升级系统服务器端查询升级服务,列出有可用更新的应用,并提示手机用户可以下载差量包进行升级;当用户选择特定应用升级后,首先下载服务器端的差量包,接着解压手机中原有版本软件的apk包和差量包,然后整合生成新版本软件,并签名打包生成新的apk包,随后用户可以安装新的apk包,完成升级过程。
全文摘要
本发明提出一种基于Android平台的应用升级方法,并实现了采用该方法的系统。应用升级方法包括以下步骤1)服务器端通过比较应用的不同版本apk包之间差异,生成差量包;2)在服务器端对应用不同版本之间的差量包进行管理、存储和部署;3)应用升级客户端将所安装应用的信息列表,与服务器端差量包信息进行匹配,如有可用的升级,将可以下载差量包进行升级;4)升级过程中,先下载差量包,接着解压原有版本软件的apk包和差量包,然后整合、签名并打包生成新apk包,随后安装,完成升级过程。本发明改变了现有Android平台下升级应用必须下载完整apk包的模式,大大节省了应用升级过程产生的流量,为用户节约了流量费。
文档编号H04L29/08GK102799445SQ20121013324
公开日2012年11月28日 申请日期2012年5月3日 优先权日2012年5月3日
发明者陈昊, 张晓敏, 明仲 申请人:陈昊
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1