CN106302592B - 终端应用的更新方法、服务器和终端 - Google Patents
终端应用的更新方法、服务器和终端 Download PDFInfo
- Publication number
- CN106302592B CN106302592B CN201510283629.6A CN201510283629A CN106302592B CN 106302592 B CN106302592 B CN 106302592B CN 201510283629 A CN201510283629 A CN 201510283629A CN 106302592 B CN106302592 B CN 106302592B
- Authority
- CN
- China
- Prior art keywords
- apk
- old
- subfile
- patch package
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
- H04L67/125—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种终端应用的更新方法、服务器及终端,包括:确定终端应用存在更新数据时,向终端推送用于描述更新数据的更新信息,所述更新信息包括服务器中APK的新版本号;接收终端根据更新信息发送的补丁包下载请求,补丁包下载请求包括终端应用的旧版本号;根据旧版本号对应的旧APK与新版本号对应的新APK生成差异补丁包,所述差异补丁包包括多个补丁包分片;发送补丁包分片给终端,以便终端根据所述补丁包分片对所述终端应用进行更新。本发明通过将新旧版本的APK进行解析,对所形成的子文件项进行逐一对比,产生差异补丁包,并以差异补丁包分片的方式进行更新,具有更新等待的时间短、且对内存占用小、且合成率高等优点。
Description
技术领域
本发明属于通信技术领域,尤其涉及一种终端应用的更新方法、服务器、和终端。
背景技术
软件系统在使用过程中,会暴露各种类型的问题,如功能不完善、安全漏洞等。一般会通过由服务器发布补丁包、由终端进行更新的方式,对上述问题进行解决。
现有的更新方式如下:(1)终端发送查询更新的请求信息;(2)服务器返回更新信息;(3)终端补丁包请求信息;(4)服务器向服务器返回补丁包;(5)终端将本地原包与补丁包合成产生新包。
然而,现有的更新方式存在更新等待的时间长、且对内存占用较大、且合成的失败率较高等技术问题,进而导致用户对于软件更新产生反感。
发明内容
有鉴于此,本发明的目的在于提供一种终端应用的更新方法、服务器和终端,可以解决现有技术中更新等待的时间长、且对内存占用较大、且合成的失败率较高等技术问题。
为解决上述技术问题,本发明实施例提供了一种终端应用的更新方法,包括:
确定终端应用存在更新数据时,向终端推送用于描述更新数据的更新信息,所述更新信息包括服务器中APK的新版本号;
接收所述终端根据所述更新信息发送的补丁包下载请求,所述补丁包下载请求中包括终端应用的旧版本号;
根据所述旧版本号对应的旧APK与所述新版本号对应的新APK生成差异补丁包,所述差异补丁包包括多个补丁包分片;以及
发送所述多个补丁包分片给所述终端,以便所述终端根据所述多个补丁包分片对所述终端应用进行更新。
为解决上述技术问题,本发明实施例提供了一种服务器,包括:
推送模块,用于确定终端应用存在更新数据时,向终端推送用于描述更新数据的更新信息,所述更新信息包括服务器中APK的新版本号;
存储模块,连接于所述推送模块,用于将所述更新数据存储为所述终端应用的不同版本的APK;
接收模块,用于接收所述终端根据所述更新信息发送的补丁包下载请求,所述补丁包下载请求中包括终端应用的旧版本号;
补丁包模块,连接于所述接收模块与所述存储模块,用于根据所述旧版本号读取对应的旧APK与根据所述新版本号读取对应的新APK,并对比后生成差异补丁包,所述差异补丁包包括多个补丁包分片;以及
所述推送模块,连接于所述补丁包模块,还用于发送所述多个补丁包分片给所述终端,以便终端根据所述多个补丁包分片对所述终端应用进行更新。
为解决上述技术问题,本发明实施例提供了一种终端应用的更新方法,包括:
向服务器发送查询更新信息;
从所述服务器获取终端应用的更新信息,所述更新信息包括差异补丁包的新版本号;
根据所述更新信息生成触发控件,并通过所述触发控件向所述服务器发送补丁包下载请求,所述补丁包下载请求中包括终端应用的旧版本号;
从所述服务器下载补丁包分片,所述补丁包分片是根据旧版本号与新版本号所对应的子文件项通过差异包算法进行计算生成的;以及
根据下载的补丁包分片对所述终端应用进行更新。
为解决上述技术问题,本发明实施例提供了一种终端,用于通过差异补丁包对终端应用进行更新,其中,包括:
存储器,用于存储旧版本的APK;
查询模块,用于向服务器发送查询更新信息;
获取模块,用于从所述服务器获取终端应用的更新信息,所述更新信息包括差异补丁包的新版本号;
请求模块,连接于所述存储器,用于根据所述更新信息生成触发控件,并通过所述触发控件向所述服务器发送补丁包下载请求,所述补丁包下载请求中包括终端应用的旧版本号;以及
补丁模块,用于从所述服务器下载补丁包分片并通过所述补丁包分片对所述终端应用进行更新,所述补丁包分片是根据旧版本号与新版本号所对应的子文件项通过差异包算法进行计算生成的。
本发明通过将新旧版本的APK进行解析,对所形成的子文件项进行逐一对比,产生差异补丁包,并以差异补丁包分片的方式进行更新,具有更新等待的时间短、且对内存占用小、且合成率高等优点。
附图说明
图1是本发明实施例提供的终端应用的更新方法、服务器、及终端的应用环境示意图;
图2是本发明实施例一提供的终端应用的更新方法的工作流程示意图;
图3是本发明实施例一提供的差异补丁包的生成步骤的细化示意图;
图4是本发明实施例二提供的服务器的模块示意图;
图5是本发明实施例三提供的终端应用的更新方法的工作流程示意图;
图6是本发明实施例三提供的终端的模块示意图;
图7是本发明实施例四提供的差异补丁包的更新步骤的细化示意图;
图8是本发明实施例五提供的终端应用的更新方法、服务器、及终端的时序示意图。
具体实施方式
请参照附图中的图式,其中相同的组件符号代表相同的组件,本发明的原理是以实施在一适当的运算环境中来举例说明。以下的说明是基于所示例的本发明的具体实施例,其不应被视为一种限制,本领域技术人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。
请参阅图1,为本发明中提供的终端应用的更新方法、服务器、及终端的应用环境示意图。应用环境中包括终端10、服务器20、以及通信网络30。
所述终端应用,可以下载并安装于各种类型的终端10中,以APK(ApplicationPacKage file,终端应用的安装程序包)形式存在。所述APK可以被解析成若干个子文件项,每个子文件项构成终端应用的不同模块或执行不同的功能。
终端10,比如笔记本01、苹果电脑02、触控电脑03、或智能手机04。可以理解的是:不同的终端10上,可能会存在不同版本的终端应用。所述终端10通过下载专属的差异补丁包对终端应用进行更新,包括:向服务器20发送包括旧版本号的查询更新信息;从服务器20获取包含新版本号的终端应用的更新信息;从服务器20下载补丁包分片,所述补丁包分片是根据旧版本号与新版本号所对应的子文件项通过差异包算法进行计算生成的;并根据下载的补丁包分片对终端应用进行更新。
服务器20,用于通过差异补丁包对终端应用进行更新,包括:产生更新数据,所述更新数据包括更新信息用于描述所述更新数据;向终端10发送包含新版本号的终端应用的更新信息;接收终端10根据更新信息发送的包含旧版本号的补丁包下载请求;根据旧APK与新APK生成差异补丁包,包括多个补丁包分片;并发送补丁包分片给所述终端,以供终端更新所述终端应用。
通信网络30,包括无线网络及有线网络等,在此不再赘述。
本案可基于BSDIFF(Binary Diff,二进制差异包)比较工具对不同版本的APK进行计算,产生增量的补丁包分片,使终端应用的更新过程无需等待、且合成的准确率高。请参照以下实施例,实施例一侧重于应用于服务器测的终端应用的更新方法,实施例二侧重于服务器,实施例三侧重于终端侧的终端应用的更新方法;实施例四侧重于终端;而实施例五侧重于服务器与终端之间的工作时序。虽然各实施例的侧重不同,但其设计思想是一致的。且,在某个实施例中没有详述的部分,可以参见说明书全文的详细描述,不再赘述。
实施例一
请参阅图2,所示为终端应用的更新方法的工作流程示意图。其应用于服务器一侧,用于产生及提供所述终端应用的差异补丁包。
在步骤S20中,接收终端发送的查询更新信息。
可以理解的是,在接收之后的步骤还可以细化为:
(1)判断是否存在更新数据;
(2)确定若不存在更新数据时,向终端推送无更新信息或不进行推送;以及
(3)确定终端应用存在更新数据时,执行步骤S21。
在步骤S21中,向终端推送用于描述更新数据的更新信息,所述更新信息包括服务器中APK的新版本号。
可以理解的是,所述更新数据是用于更新所述终端应用的代码、插件、补丁程序或其他可执行文件,更新信息是文本类文件。
在步骤S22中,接收所述终端根据所述更新信息发送的补丁包下载请求,所述补丁包下载请求中包括终端应用的旧版本号。
在步骤S23中,根据所述旧版本号对应的旧APK与所述新版本号对应的新APK生成差异补丁包,所述差异补丁包包括多个补丁包分片。
可以理解的是,通过所述旧APK与所述新APK进行对比,可以生成专属于某一版本的差异补丁包,比如当前终端应用的旧版本是V1.0,而服务器的更新信息的版本是V3.0,那么可以生成专属的V3.0-1.0的差异补丁包,而无需升级2次,更加个性化和便捷。
在步骤S24中,发送所述补丁包分片给所述终端,以便所述终端根据所述补丁包分片对所述终端应用进行更新。
可以理解的是,每一补丁包分片可与所述终端应用的旧APK的子文件项进行结合,进行某一模块或功能的单独更新。分片的好处是更易与旧版本结合,且缓冲了更新过程对终端应用的影响,时间短且成功率高。
请参阅图3,所示为其中生成差异补丁包的步骤的细化,即对步骤S23根据所述旧版本号对应的旧APK与所述新版本号对应的新APK生成差异补丁包进行进一步阐述。
在步骤S230中,根据所述旧版本号与所述新版本号读取对应的旧APK与新APK,并分别进行解析,以生成旧APK子文件项和新APK子文件项。
其中,每一子文件项可能代表着APK的不同的功能或者模块,即按照某一特定方式,将所述APK解析成若干个子文件项。
在步骤S231中,定义所述新APK定义子文件项的格式,包括描述部分和数据部分。
可以理解的是,描述部分包括:新版本号、文件类型、以及还包括下列中的一项或多项的组合:旧版本号、MD5(信息-摘要算法)信息、文件内容、压缩方法、修改时间、效验码、磁盘起始号、文件属性、对应本地文件头相对地址的偏移、和/或评论内容。具体格式设置可详见实施例六,此处不再赘述。
在步骤S232中,遍历新APK的子文件项的描述部分,并判断是否遍历完成。其中若没有完成遍历,则执行步骤S233,若完成遍历则执行步骤S2313。
在步骤S233中,通过新APK的子文件项的文件名,读取旧APK中对应的子文件项。
在步骤S234中,判断所述文件名是否是路径。
其中,若是路径,则判断为文件类型为目录文件,并执行步骤S235;若不是路径,则判断为非目录文件,继续执行步骤S236。
在步骤S235中,当文件类型为目录文件时,从新APK的子文件项中读取描述部分写入差异补丁包,并标记文件类型为目录文件(FileDataType_DIR)。
在步骤S236中,判断所述子文件项在所述新APK中与所述旧APK中是否名称相同。其中,若名称不相同,则执行步骤S237;若名称相同,则执行步骤S238。
在步骤S237中,当名称不相同时,从新APK的子文件项中读取描述部分和数据部分写入差异补丁包,并标记文件类型为新APK子文件(FileDataType_NewApkData)。
在步骤S238中,当名称相同时,继续判断是否内容相同。其中,若内容相同,则执行步骤S239;若内容不相同,则执行步骤S2310。
可以理解的是,判断内容相同的方式很多,通常选择两个参数即可对内容是否相同进行验证,如:子文件项的检验码与原始大小。其中,
(1)若所述检验码与所述原始大小皆相同,则判断为内容相同;或
(2)若所述检验码与所述原始大小之一不相同,则判断为实质不相同。
在步骤S239中,从新APK子文件项中读取描述部分,写入差异补丁包,并标记文件类型为旧APK子文件(FileDataType_OldApkData)。
在步骤S2310中,从所述旧APK与所述新APK中分别提取出来旧子文件项和新子文件项。
在步骤S2311中,通过差异包比较算法,对旧子文件项与新子文件项进行对比,产生增量补丁数据。
在步骤S2312中,将所述增量补丁数据与从所述新APK中读取所述子文件项的描述部分一并存储在差异补丁包中,并标记所述文件类型为补丁包分片(FileDataType_RawDiffDataNocompress)。
在步骤S2313中,当遍历完成时,即形成差异补丁包,并将所述新APK子文件、所述旧APK子文件、以及所述各补丁包分片共同生成新的目录内容,写入所述差异补丁包的目录文件中。
本发明通过将新旧版本的APK进行解析,对所形成的子文件项进行逐一对比,产生差异补丁包,并以差异补丁包分片的方式进行更新,具有更新等待的时间短、且对内存占用小、且合成率高等优点。
实施例二
请参阅图4,所示为服务器的模块示意图。所述服务器20包括:存储模块21、接收模块22、判断模块23、推送模块24、以及补丁包模块25。
其中,存储模块21,用于将所述更新数据根据更新时间存储为终端应用的不同版本的APK。
接收模块22,用于接收终端发送的查询更新信息。
判断模块23,连接于所述接收模块22与所述存储模块21,用于判断是否存在更新数据,以响应所述查询更新信息。
推送模块24,连接于所示判断模块23与存储模块21,用于确定若不存在更新数据时,向终端推送无更新信息或不进行推送;以及确定终端应用存在更新数据时,向终端推送用于描述更新数据的更新信息,所述更新信息包括服务器中APK的新版本号。
可以理解的是,所述新版本号,是指服务器中所述APK的当前版本号。
接收模块22,还用于接收终端根据更新信息发送的补丁包下载请求,所述补丁包下载请求中包括终端应用的旧版本号。可以理解的是,所述旧版本号,是指终端中所应用的APK的当前版本号。
补丁包模块25,连接于所述接收模块22与所述存储模块21,用于根据所述旧版本号从存储模块21中读取对应的旧APK与根据所述新版本号从接收模块22中读取对应的新APK,并对比后生成差异补丁包,所述差异补丁包包括多个补丁包分片。
推送模块24,还用于推送所述多个补丁包分片给所述终端,以便终端根据所述多个补丁包分片对所述终端应用进行更新。
具体而言,所述补丁包模块25,还包括:第一解析子模块251、定义子模块252、第一遍历子模块253、目录判断子模块254、版本判断子模块255、写入子模块256、提取子模块257、以及第一补丁子模块258。
第一解析子模块251,用于对所述旧APK与所述新APK进行解析,以生成多个旧APK子文件项与多个新APK子文件项。
定义子模块252,用于定义所述新APK的子文件项的格式,所述子文件项包括描述部分和数据部分。
第一遍历子模块253,用于遍历新APK的子文件项的描述部分,以及判断对所述新APK的子文件项的描述部分是否遍历完成。
目录判断子模块254,连接于所述第一遍历子模块253用于在遍历时根据子文件项的文件名是否路径来判断其是否是目录文件。
版本判断子模块255,用于在遍历时判断每一子文件项在所述新APK中与所述旧APK中是否相同。所述版本判断子模块255包括名称判断子模块、内容判断子模块。名称判断子模块用于判断旧APK中是否有相同名称的子文件项;内容判断子模块用于当所述名称判断子模块的判断结果为有相同名称的子文件项时,继续判断所述子文件项在所述新APK中与所述旧APK中是否内容相同。
写入子模块256,用于根据子文件项的类型,从新APK中读取描述部分、或/和数据部分写入所述差异包,并标记对应的文件类型。
具体而言,所述写入子模块256,用于当子文件项是目录文件时,读取描述部分写入差异补丁包,并标记文件类型为目录文件;当没有相同名称的子文件项时,读取描述部分和数据部分写入差异补丁包,并标记文件类型为新APK子文件;当内容相同时,读取描述部分写入差异补丁包,并标记文件类型为旧APK子文件。
提取子模块257,用于当所述版本判断子模块的判断结果为内容不相同时,从所述旧APK与所述新APK中分别提取出来旧子文件项和新子文件项。
第一补丁子模块258,用于通过差异包比较算法对旧子文件项与新子文件项进行对比产生增量补丁数据,并将增量补丁数据与从所述新APK中读取的子文件项的描述部分一并存储在差异补丁包中,标记文件类型为所述补丁包分片。
写入子模块255,还用于将所述新APK子文件、所述旧APK子文件、以及所述各补丁包分片共同生成新的目录内容,写入所述目录文件中。
本发明通过将新旧版本的APK进行解析,对所形成的子文件项进行逐一对比,产生差异补丁包,并以差异补丁包分片的方式进行更新,具有更新等待的时间短、且对内存占用小、且合成率高等优点。
实施例三
请参阅图5,所示为终端应用的更新方法的工作流程示意图。其应用于终端一侧,用于接收与安装终端应用的差异补丁包。
在步骤S51中,向服务器发送查询更新信息。
在步骤S52中,从所述服务器获取终端应用的更新信息,所述更新信息包括差异补丁包的新版本号。其中,差异补丁包的新版本号与服务器中的APK新版本号具有对应关系。
在步骤S53中,根据所述更新信息生成触发控件,并通过所述触发控件向所述服务器发送补丁包下载请求,所述补丁包下载请求中包括终端应用的旧版本号。
在步骤S54中,从所述服务器下载补丁包分片,所述补丁包分片是根据旧版本号与新版本号所对应的子文件项通过差异包算法进行计算生成的;以及
在步骤S55中,根据下载的补丁包分片对所述终端应用进行更新。
可以理解的是,每一补丁包分片可与所述终端应用的旧APK的子文件项进行结合,进行某一模块或功能的单独更新。分片的好处是更易与旧版本结合,且缓冲了更新过程对终端应用的影响,时间短且成功率高。
请参阅图6,所示为从所述服务器下载补丁包分片的步骤的细化,即对步骤S54进行进一步阐述。
在步骤S540中,根据所述旧版本号与所述新版本号读取对应的旧APK与差异补丁包,并分别进行解析,生成旧APK的子文件项与新APK的子文件项。
在步骤S541中,读取所述差异补丁包的子文件,所述子文件项包括描述部分和数据部分。
在步骤S542中,遍历差异补丁包的子文件项,并判断是否遍历完成。
在步骤S543中,读取每一子文件项的文件类型。
在步骤S544中,判断文件类型是否是目录文件。其中,若是目录文件则执行步骤S545,若不是目录文件则执行步骤S546。
在步骤S545中,从所述差异补丁包中读取目录文件进行下载,供所述终端应用进行更新。
在步骤S546中,判断文件类型是否是新APK文件。其中,若是新APK文件,则执行步骤S547;若不是新APK文件,则执行步骤S548。
在步骤S547中,下载所述新APK子文件,其中,所述新APK子文件包括描述部分和数据部分。
在步骤S548中,继续判断文件类型是否是旧APK子文件,其中,若是旧APK子文件,则执行步骤S549,若不是旧APK子文件,则执行步骤S5410。
在步骤S549中,下载所述旧APK子文件,其中,所述旧APK子文件包括描述部分。
在步骤S5410中,下载所述补丁包分片,并从差异补丁包和旧APK中分别提取出对应的子文件项。
可以理解的是,在本步骤之前,还可以包括判断所述文件类型是否是补丁包分片,在图中忽略该判断的步骤是因为经过上述步骤S544、S546、以及S548的排除之后,所剩的文件类型即为补丁包分片。
在上述步骤中,通过将差异补丁包内的子文件项分成不同的类型,如目录文件、新APK文件、旧APK文件以及补丁包分片,每种不同的文件类型,其对应的格式不同,如仅需下载描述部分,使需下载的内容降低到最少。进而使更新的时间缩短,且不重复下载也有利于减少更新失败的风险。
在步骤S5411中,通过差异包比较算法,将旧APK中对应的子文件项与所述补丁包分片进行合并,产生合并补丁数据。
在步骤S5412中,将所述补丁数据与从所述差异补丁包中读取描述部分一并形成合成子文件项。
在步骤S5413中,若判断遍历完成,则若所有补丁包分片下载完成,则更新所述终端应用的目录信息。
本发明通过将新旧版本的APK进行解析,对所形成的子文件项进行逐一对比,产生差异补丁包,并以差异补丁包分片的方式进行更新,具有更新等待的时间短、且对内存占用小、且合成率高等优点。
实施例四
请参阅图7,所示为终端的模块示意图。所述终端10中存储一旧版本的APK,并通过获取服务器的差异补丁包进行更新,生成适合所述终端的新APK。所述终端10包括:存储器11、查询模块12、获取模块13、请求模块14、以及补丁模块15。
存储器11,用于存储所述终端应用的旧版本APK。可以理解的是,所述“旧”是相对于更新之前而言,即当前版本。为了对比更清楚,全文皆用旧版本来指代终端的当前版本。
查询模块12,用于向服务器发送查询更新信息。
获取模块13,用于从所述服务器获取终端应用的更新信息,所述更新信息包括差异补丁包的新版本号。
请求模块14,用于根据所述更新信息产生触发控件,并通过所述触发控件向所述服务器发送补丁包下载请求,所述补丁包下载请求中包括终端应用的旧版本号。
可以理解的是,服务器会根据新旧版本号对应的APK生成差异补丁包,并提供给所述服务器进行下载和更新。
补丁模块15,用于从所述服务器下载补丁包分片并通过所述补丁包分片对所述终端应用进行更新,所述补丁包分片是根据旧版本号与新版本号所对应的子文件项通过差异包算法进行计算生成的。
具体而言,所述补丁模块15,包括:第二解析子模块151、第二遍历子模块152、类型判断子模块153、下载子模块154、第二补丁子模块155、以及目录更新子模块156。
第二解析子模块151,用于根据所述旧版本号与所述新版本号读取对应的旧APK与差异补丁包,并分别进行解析,生成旧APK的子文件项与差异补丁包的子文件项所述。
其中,所述子文件项包括描述部分和数据部分。
第二遍历子模块152,用于读取所述差异补丁包的子文件项进行遍历。
类型判断子模块153,用于读取每一子文件项的文件类型,并判断所述文件类型是否是补丁包分片、目录文件、新APK子文件、或旧APK子文件。可以理解的是,所述文件类型被定义于所述子文件项的描述部分中。
下载子模块154,用于当所述文件类型是补丁包分片时,下载所述补丁包分片;当所述文件类型是目录文件时,下载所述目录文件;当所述文件类型是新APK子文件,下载所述新APK子文件,其中,所述新APK子文件包括描述部分和数据部分;以及当所述文件类型是旧APK子文件时,下载所述旧APK子文件,其中,所述旧APK子文件包括描述部分。
第二补丁子模块155,用于通过差异包比较算法将旧APK中对应的子文件项与补丁包分片进行合并产生合并补丁数据,并将所述补丁数据与从所述差异补丁包中读取描述部分一并形成合成子文件项作为补丁包,供旧APK更新。
目录更新子模块156,用于根据所述更新信息判断是否差异补丁包包中的所有的补丁包分片下载完成;并当所有补丁包分片下载完成后,更新所述终端应用的目录信息。
本发明通过将新旧版本的APK进行解析,对所形成的子文件项进行逐一对比,产生差异补丁包,并以差异补丁包分片的方式进行更新,具有更新等待的时间短、且对内存占用小、且合成率高等优点。
实施例五
请参阅图8,所示为终端应用的更新方法、服务器、及终端的时序示意图。
A、服务器中生成新版本的APK。
B、终端向服务器发送查询更新的请求。
C、服务器向终端发送更新信息。
D、终端向服务器发送补丁包下载请求。
其中,可以理解的是,终端在步骤B和D中所发送的请求包含其当前的APK版本信息,即APK的旧版本号。
E、服务器根据旧APK与新APK生成差异补丁包,所述差异补丁包包括多个补丁包分片。
F、终端接收补丁包分片,并通过遍历差异补丁包的子文件项,匹配到对应的旧APK子文件中使用TMADIFF算法进行合并。
G、终端判断是否完成接收,并更新旧APK的目录。
本发明通过将新旧版本的APK进行解析,对所形成的子文件项进行逐一对比,产生差异补丁包,并以差异补丁包分片的方式进行更新,具有更新等待的时间短、且对内存占用小、且合成率高等优点。
实施例六
本发明为了形成差异补丁包,并支持差异补丁包分片进行发送、以及分片进行接收与更新,还设计了一组差异补丁包的文件格式、以及差异补丁包子文件项的文件格式,以更好的支持本发明的终端应用的更新方法、服务器、及终端。
可以理解的是,本实施例所提供的格式定义,并不是唯一的格式也不是所有数据均是必选项,仅用于理解本发明之精髓,而不应视为对文件格式的限制。
差异补丁包的格式是补丁算法产生数据的封装,便于传输和保存。该文件格式是一个容器,目前支持由BSDIFF和TMADIFF算法产生的补丁包。
表1 差异补丁包格式定义定义:
数据部分定义:
当Alorithms=Bsdiff(0x01)该部分是BSDIFF算法产生的补丁包
当Alorithms=Tmadiff(0x02)该部分是TMADIFF算法产生的补丁包,此时Content中重复补丁片,每一个分片由FileHeadDesc和FileData组成。
表2数据部分定义
名称 | 占用字节 | 描述 |
FileHeadDesc | N | 文件项的文件头描述,参考表3-FileHeadDesc定义 |
FileData | N | 若FileDataLen是0,该项为空。 |
表3描述部分定义
表4目录定义
名称 | 占用字节 | 描述 |
Signature | 4 | 固定0x504b0506,参考ZIP标准 |
numberOfDisk | 2 | 磁盘号 |
startsDisk | 2 | 中央目录段所在磁盘号 |
numberOfCentralDirOnThisDisk | 2 | 当前磁盘中央目录段的个数 |
totalNumberOfCentralDir | 2 | 中央目录段的总数 |
sizeOfCentralDir | 4 | 中央目录段的总长度(Bytes) |
offsetOfStartOfCentralDir | 4 | 中央目录段的偏移位置 |
commentLen | 2 | 评论长度 |
Comment | 4 | 评论内容 |
本发明实施例提供的终端应用的更新方法、服务器、及终端属于同一构思,其具体实现过程详见说明书全文,此处不再赘述。
综上所述,虽然本发明已以优选实施例揭露如上,但上述优选实施例并非用以限制本发明,本领域的普通测试人员,在不脱离本发明的精神和范围内,均可作各种更动与润饰,因此本发明的保护范围以权利要求界定的范围为准。
Claims (16)
1.一种终端应用的更新方法,其特征在于,包括:
确定终端应用存在更新数据时,向终端推送用于描述更新数据的更新信息,所述更新信息包括服务器中APK的新版本号;
接收所述终端根据所述更新信息发送的补丁包下载请求,所述补丁包下载请求中包括终端应用的旧版本号;
根据所述旧版本号对应的旧APK与所述新版本号对应的新APK生成差异补丁包,所述差异补丁包包括多个补丁包分片,所述差异补丁包的文件格式是一个容器;以及
发送所述多个补丁包分片给所述终端,以便所述终端根据所述多个补丁包分片对所述终端应用进行更新,每一补丁包分片可与所述终端应用的旧APK的子文件项进行结合,进行模块或功能的单独更新;
根据所述旧版本号对应的旧APK与所述新版本号对应的新APK生成差异补丁包,具体包括:
根据所述旧版本号与所述新版本号读取对应的旧APK与新APK,并分别进行解析,以生成旧APK子文件项和新APK子文件项;
遍历新APK的子文件项,其中:
遍历时,判断每一子文件项在所述新APK中与所述旧APK中是否相同;
当所述子文件项不相同时,从所述旧APK与所述新APK中分别提取出来旧子文件项和新子文件项;
通过差异包比较算法对旧子文件项与新子文件项进行对比产生增量补丁数据,并存储在差异补丁包中,标记文件类型为所述补丁包分片;以及
完成遍历后,将各补丁包分片写入所述差异补丁包中;
根据所述旧版本号与所述新版本号读取对应的旧APK与新APK,并分别进行解析,以生成旧APK子文件项和新APK子文件项,之后还包括:
定义所述新APK的子文件项的格式,包括描述部分和数据部分;
遍历新APK的子文件项,具体为:遍历新APK的子文件项的描述部分、以及判断是否遍历完成;
通过差异包比较算法对旧子文件项与新子文件项进行对比产生增量补丁数据,并存储在差异补丁包中,标记文件类型为所述补丁包分片,具体为:通过差异包比较算法对旧子文件项与新子文件项进行对比产生增量补丁数据,并将所述增量补丁数据与从所述新APK中读取所述子文件项的描述部分一并存储在差异补丁包中,标记文件类型为所述补丁包分片。
2.如权利要求1所述的更新方法,其特征在于,在确定终端应用存在更新数据,之前还包括:
接收终端发送的查询更新信息;
判断是否存在更新数据;
确定若不存在更新数据时,向终端推送无更新信息或不进行推送;以及
确定终端应用存在更新数据时,向终端推送用于描述更新数据的更新信息,所述更新信息包括服务器中APK的新版本号。
3.如权利要求1所述的更新方法,其特征在于,判断每一子文件项在所述新APK中与所述旧APK中是否相同,之前还包括:
判断子文件项的文件名是否是路径;
当所述文件名是路径时,从新APK的子文件项中读取描述部分,写入所述差异补丁包,并标记文件类型为目录文件。
4.如权利要求3所述的更新方法,其特征在于,判断每一子文件项在所述新APK中与所述旧APK中是否相同,具体包括:
判断所述旧APK中是否有相同名称的子文件项;
若没有相同名称的子文件项,则从新APK的子文件项中读取描述部分和数据部分,写入所述差异补丁包,并标记文件类型为新APK子文件;
若有相同名称的子文件项,则继续判断所述子文件项在所述新APK中与所述旧APK中是否内容相同;若内容相同,则从新APK的子文件项中读取描述部分,写入差异补丁包,并标记文件类型为旧APK子文件;或若内容不相同,则确定为当前子文件项在所述新APK中与所述旧版本中不相同。
5.如权利要求4所述的更新方法,其特征在于,继续判断所述子文件项在所述新APK中与所述旧APK中是否内容相同,具体包括:
判断子文件项的检验码与原始大小是否皆相同;其中,
若所述检验码与所述原始大小皆相同,则判断为内容相同;或
若所述检验码与所述原始大小之一不相同,则判断为内容不相同。
6.如权利要求4或5所述的更新方法,其特征在于,在当完成遍历时,将各补丁包分片写入所述差异补丁包中的步骤之后,还包括步骤:
将所述新APK子文件、所述旧APK子文件、以及所述各补丁包分片共同生成新的目录内容,写入所述目录文件中。
7.一种服务器,其特征在于,包括:
推送模块,用于确定终端应用存在更新数据时,向终端推送用于描述更新数据的更新信息,所述更新信息包括服务器中APK的新版本号;
存储模块,连接于所述推送模块,用于将所述更新数据存储为所述终端应用的不同版本的APK;
接收模块,用于接收所述终端根据所述更新信息发送的补丁包下载请求,所述补丁包下载请求中包括终端应用的旧版本号;
补丁包模块,连接于所述接收模块与所述存储模块,用于根据所述旧版本号读取对应的旧APK与根据所述新版本号读取对应的新APK,并对比后生成差异补丁包,所述差异补丁包包括多个补丁包分片,所述差异补丁包的文件格式是一个容器;以及
所述推送模块,连接于所述补丁包模块,还用于发送所述多个补丁包分片给所述终端,以便终端根据所述多个补丁包分片对所述终端应用进行更新,每一补丁包分片可与所述终端应用的旧APK的子文件项进行结合,进行模块或功能的单独更新;
所述补丁包模块,包括:
第一解析子模块,用于对所述旧APK与所述新APK进行解析,以生成多个旧APK子文件项与多个新APK子文件项;
第一遍历子模块,用于遍历新APK的子文件项;
版本判断子模块,用于在遍历时判断每一子文件项在所述新APK中与所述旧APK中是否相同;
提取子模块,用于当所述版本判断子模块的判断结果为不相同时,从所述旧APK与所述新APK中分别提取出来旧子文件项和新子文件项;
第一补丁子模块,用于通过差异包比较算法对所述旧子文件项与所述新子文件项进行对比产生增量补丁数据,并存储在差异补丁包中,标记文件类型为所述补丁包分片;以及
写入子模块,用于当完成遍历时,将各补丁包分片写入所述差异补丁包中;
所述补丁包模块,还包括:
定义子模块,用于根据所述旧版本号与所述新版本号读取对应的旧APK与新APK,并分别进行解析,以生成旧APK子文件项和新APK子文件项,之后,定义所述新APK的子文件项的格式,所述子文件项包括描述部分和数据部分;
所述第一遍历子模块,具体用于:遍历新APK的子文件项的描述部分、以及判断是否遍历完成;
所述第一补丁子模块,具体用于:通过差异包比较算法对所述旧子文件项与所述新子文件项进行对比产生增量补丁数据,并将所述增量补丁数据与从所述新APK中读取所述子文件项的描述部分一并存储在差异补丁包中,标记文件类型为所述补丁包分片。
8.如权利要求7所述的服务器,其特征在于,还包括判断模块,其中:
所述接收模块,还用于接收终端发送的查询更新信息;
所述判断模块,用于判断是否存在更新数据;
所述推送模块,还用于确定若不存在更新数据时,向终端推送无更新信息或不进行推送;以及确定终端应用存在更新数据时,向终端推送用于描述更新数据的更新信息,所述更新信息包括服务器中APK的新版本号。
9.如权利要求7所述的服务器,其特征在于,所述补丁包模块,还包括:
目录判断子模块,用于判断子文件项的文件名是否是路径;
所述写入子模块,还用于当所述文件名是路径时,从新APK的子文件项中读取描述部分,写入所述差异补丁包,并标记文件类型为目录文件。
10.如权利要求9所述的服务器,其特征在于,所述版本判断子模块,包括名称判断子模块、内容判断子模块,其中:
所述名称判断子模块,用于判断旧APK中是否有相同名称的子文件项;
所述内容判断子模块,用于当所述名称判断子模块的判断结果为有相同名称的子文件项时,继续判断所述子文件项在所述新APK中与所述旧APK中是否内容相同;
所述写入子模块,还用于当所述名称判断子模块判断为没有相同名称的子文件项时,从新APK的子文件项中读取描述部分和数据部分写入所述差异补丁包,并标记文件类型为新APK子文件;以及当所述内容判断子模块判断为内容相同时,从新APK的子文件项中读取描述部分,写入差异补丁包,并标记文件类型为旧APK子文件。
11.如权利要求10所述的服务器,其特征在于,所述写入子模块,还用于将所述新APK子文件、所述旧APK子文件、以及所述各补丁包分片共同生成新的目录内容,写入所述目录文件中。
12.一种终端应用的更新方法,其特征在于,包括:
向服务器发送查询更新信息;
从所述服务器获取终端应用的更新信息,所述更新信息包括差异补丁包的新版本号;
根据所述更新信息生成触发控件,并通过所述触发控件向所述服务器发送补丁包下载请求,所述补丁包下载请求中包括终端应用的旧版本号;
从所述服务器下载补丁包分片,所述补丁包分片是根据旧版本号与新版本号所对应的子文件项通过差异包算法进行计算生成的;以及
根据下载的补丁包分片对所述终端应用进行更新,每一补丁包分片可与所述终端应用的旧APK的子文件项进行结合,进行模块或功能的单独更新;
从所述服务器下载补丁包分片,所述补丁包分片是根据旧版本号与新版本号所对应的子文件项通过差异包算法进行计算生成的,之后还包括:
根据所述旧版本号与所述新版本号读取对应的旧APK与差异补丁包,并分别进行解析,生成旧APK的子文件项与差异补丁包的子文件项,所述子文件项包括描述部分和数据部分,所述差异补丁包的文件格式是一个容器;
读取所述差异补丁包的子文件,所述子文件项包括描述部分和数据部分;
遍历差异补丁包的子文件项,并判断是否遍历完成;
读取每一子文件项的文件类型,并当所述文件类型是补丁包分片时,下载所述补丁包分片;以及
通过差异包比较算法,将旧APK中对应的子文件项与所述补丁包分片进行合并产生合并补丁数据,并将所述补丁数据与从所述差异补丁包中读取描述部分一并形成合成子文件项,供所述终端应用进行更新;
读取每一子文件项的文件类型,之后还包括:
判断所述文件类型是否是新APK子文件;
若所述文件类型是新APK子文件,则下载所述新APK子文件,其中,所述新APK子文件包括描述部分和数据部分;
若所述文件类型不是新APK子文件,则判断所述文件类型是否是旧APK子文件;并当所述文件类型是旧APK子文件时,下载所述旧APK子文件,其中,所述旧APK子文件包括描述部分。
13.如权利要求12所述的更新方法,其特征在于,读取每一子文件项的文件类型,之后还包括:
判断所述文件类型是否是目录文件;
当所述文件类型是目录文件时,下载所述目录文件,供所述终端应用进行更新。
14.如权利要求12至13中任一项所述的更新方法,其特征在于,根据下载的补丁包分片对所述终端应用进行更新的步骤之后,还包括:
根据所述更新信息判断是否差异补丁包包中的所有的补丁包分片下载完成;以及
当所有补丁包分片下载完成时,更新所述终端应用的目录信息。
15.一种终端,用于通过差异补丁包对终端应用进行更新,其特征在于,所述终端包括:
存储器,用于存储旧版本的APK;
查询模块,用于向服务器发送查询更新信息;
获取模块,用于从所述服务器获取终端应用的更新信息,所述更新信息包括差异补丁包的新版本号;
请求模块,连接于所述存储器,用于根据所述更新信息生成触发控件,并通过所述触发控件向所述服务器发送补丁包下载请求,所述补丁包下载请求中包括终端应用的旧版本号;以及
补丁模块,用于从所述服务器下载补丁包分片并通过所述补丁包分片对所述终端应用进行更新,所述补丁包分片是根据旧版本号与新版本号所对应的子文件项通过差异包算法进行计算生成的,每一补丁包分片可与所述终端应用的旧APK的子文件项进行结合,进行模块或功能的单独更新;
所述补丁模块包括:
第二解析子模块,用于根据所述旧版本号与所述新版本号读取对应旧APK与差异补丁包,并分别进行解析生成旧APK的子文件项与差异补丁包的子文件项,所述子文件项包括描述部分和数据部分,所述差异补丁包的文件格式是一个容器;
第二遍历子模块,用于读取所述差异补丁包的子文件,所述子文件项包括描述部分和数据部分;遍历差异补丁包的子文件项,并判断是否遍历完成;
类型判断子模块,用于读取每一子文件项的文件类型,并判断所述文件类型是否是补丁包分片;
下载子模块,用于当所述文件类型是补丁包分片时,下载所述补丁包分片;以及
第二补丁子模块,用于通过差异包比较算法,将旧APK中对应的子文件项与所述补丁包分片进行合并产生合并补丁数据,并将所述补丁数据与从所述差异补丁包中读取描述部分一并形成合成子文件项,用以对所述旧APK进行更新;
所述类型判断子模块,还用于判断所述文件类型是否是目录文件、新APK子文件、或旧APK子文件;以及
所述下载子模块,还用于当所述文件类型是目录文件时,下载所述目录文件;当所述文件类型是新APK子文件,下载所述新APK子文件,其中,所述新APK子文件包括描述部分和数据部分;以及当所述文件类型是旧APK子文件时,下载所述旧APK子文件,其中,所述旧APK子文件包括描述部分。
16.如权利要求15所述的终端,其特征在于:所述补丁模块还包括:
目录更新子模块,用于根据所述更新信息判断是否差异补丁包包中的所有的补丁包分片下载完成;并当所有补丁包分片下载完成后,更新所述终端应用的目录信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510283629.6A CN106302592B (zh) | 2015-05-28 | 2015-05-28 | 终端应用的更新方法、服务器和终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510283629.6A CN106302592B (zh) | 2015-05-28 | 2015-05-28 | 终端应用的更新方法、服务器和终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106302592A CN106302592A (zh) | 2017-01-04 |
CN106302592B true CN106302592B (zh) | 2021-01-01 |
Family
ID=57635470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510283629.6A Active CN106302592B (zh) | 2015-05-28 | 2015-05-28 | 终端应用的更新方法、服务器和终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106302592B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106850800B (zh) * | 2017-01-24 | 2020-05-05 | 腾讯科技(深圳)有限公司 | 一种下载路径确定的方法以及客户端 |
CN107124713B (zh) * | 2017-05-26 | 2021-01-08 | 维沃移动通信有限公司 | 一种定制更新方法及移动终端 |
CN107835206A (zh) * | 2017-09-19 | 2018-03-23 | 平安普惠企业管理有限公司 | 数据更新方法、服务器以及计算机可读存储介质 |
CN107682436A (zh) * | 2017-10-09 | 2018-02-09 | 武汉斗鱼网络科技有限公司 | 一种更新文件的方法、装置和设备 |
CN109697071B (zh) * | 2017-10-24 | 2022-02-08 | 腾讯科技(深圳)有限公司 | 安装包合成方法、装置、终端及存储介质 |
CN108958752B (zh) * | 2018-07-09 | 2023-01-24 | 迈普通信技术股份有限公司 | 单片机在线升级系统及方法 |
CN111381848A (zh) * | 2018-12-29 | 2020-07-07 | 华为技术有限公司 | 资源文件的更新方法、装置、设备及存储介质 |
CN110333892B (zh) * | 2019-06-28 | 2022-12-13 | 百度在线网络技术(北京)有限公司 | 应用程序的补丁的生成方法、装置、设备和存储介质 |
KR102574280B1 (ko) * | 2019-10-31 | 2023-09-04 | 구글 엘엘씨 | 컴퓨팅 디바이스에서 애플리케이션 업데이트를 위한 메모리 효율적인 소프트웨어 패치하기 |
CN113157305B (zh) * | 2020-01-23 | 2022-04-05 | 华为技术有限公司 | 一种软件升级方法及设备 |
CN114356245B (zh) * | 2022-01-12 | 2023-09-22 | 济南点量软件有限公司 | 一种海量文件快速比对更新的方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101188507B1 (ko) * | 2011-06-15 | 2012-10-05 | 한국과학기술원 | 웹 플랫폼을 이용한 아이피 기반 IoT 사물 브라우징 기술 및 네트워크 중계 기술 기반 이기종 네트워크 중계 장치 및 방법과 이를 이용한 사용자 단말 |
CN103428188A (zh) * | 2012-05-25 | 2013-12-04 | 北京小米科技有限责任公司 | 一种文件更新方法、装置及相关设备 |
CN104539696A (zh) * | 2014-12-26 | 2015-04-22 | 北京像素软件科技股份有限公司 | 一种客户端增量更新的方法及系统 |
-
2015
- 2015-05-28 CN CN201510283629.6A patent/CN106302592B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101188507B1 (ko) * | 2011-06-15 | 2012-10-05 | 한국과학기술원 | 웹 플랫폼을 이용한 아이피 기반 IoT 사물 브라우징 기술 및 네트워크 중계 기술 기반 이기종 네트워크 중계 장치 및 방법과 이를 이용한 사용자 단말 |
CN103428188A (zh) * | 2012-05-25 | 2013-12-04 | 北京小米科技有限责任公司 | 一种文件更新方法、装置及相关设备 |
CN104539696A (zh) * | 2014-12-26 | 2015-04-22 | 北京像素软件科技股份有限公司 | 一种客户端增量更新的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106302592A (zh) | 2017-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106302592B (zh) | 终端应用的更新方法、服务器和终端 | |
US7644111B2 (en) | Framework for content representation and delivery | |
CN100447740C (zh) | 数据的包内增量压缩的系统和方法 | |
US20080120351A1 (en) | Efficient migration of binary XML across databases | |
US10171608B2 (en) | Method, apparatus and computer program for modifying messages in a communications network | |
US20180364999A1 (en) | Method and Device for Identifying File | |
KR101690587B1 (ko) | 전자 문서의 데이터 업데이트 방법, 장치, 프로그램 및 기록매체 | |
US11314852B2 (en) | Method for the generation of personalized profile package data in integrated circuit cards | |
US20070112810A1 (en) | Method for compressing markup languages files, by replacing a long word with a shorter word | |
CN113138781B (zh) | Csv配置更新方法、存储介质 | |
US20080244355A1 (en) | Comparing data sets through identification of matching blocks | |
CN115391439A (zh) | 文档数据导出方法、装置、电子设备和存储介质 | |
CN106407288B (zh) | 一种信息同步更新的方法及系统 | |
CN103778188A (zh) | 用于在库文件中查询和/或维护数据的方法和设备 | |
US9201838B2 (en) | Systems and methods for the efficient exchange of hierarchical data | |
US20190095418A1 (en) | Processing of 3d printing files | |
US11789708B2 (en) | Compression of firmware updates | |
CN101425079B (zh) | Nv数据处理方法和装置 | |
CN111651531B (zh) | 数据导入方法、装置、设备及计算机存储介质 | |
JP6178119B2 (ja) | データ移行システム、及びデータ移行方法 | |
US20040015780A1 (en) | Position-independent access to data elements in an electronic document | |
CN112035146A (zh) | 固件更新方法、安全设备和计算机可读存储介质 | |
CN107229746B (zh) | 终端及多派生项目的数据处理方法和存储介质 | |
CN111444194A (zh) | 一种块链式账本中索引的清除方法、装置及设备 | |
CN113434343B (zh) | 一种基于Windows的WPS Mail数据还原方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |