CN109814913A - 一种应用包拆分重组和运行的方法和装置 - Google Patents
一种应用包拆分重组和运行的方法和装置 Download PDFInfo
- Publication number
- CN109814913A CN109814913A CN201811595300.3A CN201811595300A CN109814913A CN 109814913 A CN109814913 A CN 109814913A CN 201811595300 A CN201811595300 A CN 201811595300A CN 109814913 A CN109814913 A CN 109814913A
- Authority
- CN
- China
- Prior art keywords
- subpackage
- packet
- application
- main
- file
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请提供了一种应用包拆分重组和运行的方法和装置,其中所述应用包拆分和重组的方法包括:将第一应用包拆分为主包和至少一个分包;将所述主包和所述至少一个分包保存在第一文件中,并且确定所述主包和所述至少一个分包在所述第一文件中的偏移量和大小;生成所述应用对应的第二应用包;其中所述第二应用包包括包头和所述第一文件。服务器接收到原应用包后,自动对原应用包进行拆分和重组,生成一个完整的新应用包,这样就不需要开发者进行分包和对分包后的分包进行维护,降低了开发者的开发成本。且在重组过程中,将拆分出的主包和多个分包组成一个文件,客户端在进行下载时,只需要发送一次下载请求,即可下载完整的应用包。
Description
技术领域
本发明涉及移动应用下载技术领域,尤其涉及一种应用包拆分重组和运行的方法和装置。
背景技术
目前以微信小程序为代表出现了一种新的应用形态,这类应用形态类似于Android安装包:有一个应用包,可以做到免安装,即点即用。为了保证用户以最快的速度能够使用到应用包,通常会做一些拆包方案,这样可以确保不用把整个应用包下载下去后才能使用,只需要加载应用包的一部分即可运行。
现有的拆包方案是将应用包拆分出一个主包和多个分包,但是这种应用包是由开发者进行拆分,这样会增加开发者的开发成本。并且,开发者需要自己维护拆分出的分包,假如开发者拆分不合理,分包仍然会比较大,无法达到即点即用的用户预期。
另外,现在服务器将应用包拆分出主包和多个分包后,客户端在进行下载时,先发送一个下载请求,然后客户端下载一个主包或分包,如果再下载一个分包,则再发送一个下载请求。也就是说如果要将整个应用包下载下来,则需要发送多次下载请求,这大大降低了客户端下载应用包的速度,严重影响用户的体验。
发明内容
为了克服上述问题,本申请的实施例提供了一种应用包拆分重组和运行的方法和装置。
为了达到上述目的,本申请的实施例采用如下技术方案:
第一方面,本申请提供一种应用包拆分和重组的方法,所述方法由服务器实施,包括:接收应用对应的第一应用包;将所述第一应用包拆分为主包和至少一个分包;所述主包和所述至少一个分包各自包括至少一个所述应用的页面;将所述主包和所述至少一个分包保存在第一文件中,并且确定所述主包和所述至少一个分包在所述第一文件中的偏移量和大小;生成所述应用对应的第二应用包;其中所述第二应用包包括包头和所述第一文件,所述包头包括所述主包与所述主包中的至少一个所述应用的页面的映射关系、所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系、以及所述主包和所述至少一个分包在所述第一文件中的偏移量和大小。服务器接收到原应用包后,自动对原应用包进行拆分和重组,生成一个完整的新应用包,这样就不需要开发者进行分包和对分包后的分包进行维护,降低了开发者的开发成本。且在重组过程中,将拆分出的主包和多个分包组成一个文件,客户端在进行下载时,只需要发送一次下载请求,即可下载完整的应用包。
在另一个可能的实现中,所述方法包括:对所述主包和所述至少一个分包分别生成所述主包的摘要列表和所述至少一个分包的摘要列表;其中,所述主包的摘要列表和所述至少一个分包的摘要列表分别用于对与之对应的主包或分包进行校验;所述生成所述应用对应的第二应用包包括:在所述包头写入所述主包的摘要列表、所述至少一个分包的摘要列表。以便于在客户端下载主包或分包后,依据这些摘要列表对下载的主包或分包进行校验,判断其是否被第三方篡改。
在另一个可能的实现中,所述对所述主包和所述至少一个分包分别生成所述主包摘要列表和所述至少一个分包摘要列表包括:运用hash算法对所述主包和所述至少一个分包分别生成所述主包摘要列表和所述至少一个分包摘要列表。
在另一个可能的实现中,所述方法包括:对所述包头进行签名得到签名信息,所述签名信息用于对所述包头进行校验;在所述第二应用包中写入所述签名信息。以便在客户端下载完包头后,对包头进行校验,判断其是否被第三方篡改。
在另一个可能的实现中,所述主包包括元信息文件,用于运行所述主包和所述至少一个分包。
在另一个可能的实现中,所述至少一个分包中的第一分包包括配置属性,用于声明所述第一分包是否依赖于所述主包运行。
在另一个可能的实现中,所述主包包括能力开放集,用于所述依赖于所述主包的分包获取元信息文件。
在另一个可能的实现中,所述方法包括:将由所述主包与所述主包中的至少一个所述应用的页面的映射关系、所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系、以及所述主包和所述至少一个分包在所述第一文件中的偏移量和大小信息构成包信息和所述第二应用包的下载地址同步到发送端口,用于客户端对所述第二应用包进行查询和下载。以便于客户端查询和下载新应用包。
第二方面,本申请提供一种应用包拆分和重组的装置,包括:收发器、处理器和存储器;所述存储器存储有一个或多个程序,所述一个或多个程序包括指令,当所述指令被所述装置执行时,使得所述装置执行第一方面中涉及的方法。
第三方面,本申请提供一种运行应用包的方法,所述方法由客户端实施,包括:向服务器发送下载请求,所述下载请求用于请求下载应用对应的第二应用包;其中,所述第二应用包包括包头和第一文件;所述第一文件中保存有主包和至少一个分包,所述包头包括所述主包与所述主包中的至少一个所述应用的页面的映射关系、所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系、以及所述主包和所述至少一个分包在所述第一文件中的偏移量和大小;下载所述包头;下载所述第一文件中的所述主包;根据所述包头中所述主包在所述第一文件中的偏移量和大小确定所述主包下载完成后,运行所述主包,并根据所述包头中的所述主包与所述主包的至少一个所述应用的页面的映射关系加载所述主包的至少一个所述应用的页面。在新应用包下载过程中,进行一次网络连接,客户端下载包头和主包后,运行主包,由于服务器将拆分的主包和多个分包组成一个文件,所以在主包下载完成后,后续分包的下载不需要与服务器再进行网络连接,即可进行下载,从而实现客户端只需要一次网络连接就可以下载完成整个新应用包,有效的减少下载时间。
在另一个可能的实现中,还包括:下载所述第一文件中的所述第一分包;其中,所述第一分包包括配置属性,声明所述第一分包依赖于所述主包运行;根据所述包头中的所述至少一个分包在所述第一文件中的偏移量和大小,确定所述第一分包下载完成后,根据所述配置属性,通过所述主包中能力开放集获取元信息文件;根据所述元信息文件,运行所述第一分包,并且根据所述第一分包与所述第一分包的至少一个所述应用的页面的映射关系加载所述第一分包的至少一个所述应用的页面。
在另一个可能的实现中,还包括:下载所述第一文件中的所述第二分包;其中,所述第二分包包括配置属性,声明所述第二分包不依赖于所述主包运行;根据所述包头中的所述至少一个分包在所述第一文件中的偏移量和大小,确定所述第二分包下载完成后,运行所述第二分包,并且根据所述第二分包与所述第二分包的至少一个所述应用的页面的映射关系加载所述第二分包的至少一个所述应用的页面。
在另一个可能的实现中,包括根据所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系,确定当前访问页面对应的第三分包,并且在所述第三分包不在本地文件中时,启动另一个线程下载所述第三分包。通过增加线程优先下载第三分包,并在下载完成后启动加载和运行,可以缩减用户等待时间,提高用户体验。
在另一个可能的实现中,所述包头还包括所述主包的摘要列表和所述至少一个分包的摘要列表;所述方法包括,获取所述主包摘要列表和所述至少一个分包摘要列表;利用所述主包摘要列表和所述至少一个分包摘要列表对所述主包或所述至少一个分包进行校验。客户端需要对主包和分包进行验证,以验证主包和分包是否被篡改,保证客户端下载的主包和分包是合法的。
在另一个可能的实现中,下载签名信息,所述签名信息是对所述包头签名而得到的;所述方法包括,利用所述签名信息对所述包头进行校验。客户端需要对包头进行签名验证,以保证包头的合法性。
第四方面,本申请提供一种运行应用包的装置,包括:收发器、处理器和存储器;所述存储器存储有一个或多个程序,所述一个或多个程序包括指令,当所述指令被所述装置执行时,使得所述装置执行第三方面涉及的方法。
第五方面,本申请提供一种运行应用包的方法,所述方法由客户端实施,包括:响应于加载应用的目标页面的请求,获取所述应用的名称;根据所述应用的名称,向服务器发送查询请求,所述查询请求用于请求服务器下载所述应用对应的第二应用包的下载地址和包信息;其中所述第二应用包包括包头和第一文件,所述第一文件中保存有主包和至少一个分包,所述包头包括所述主包与所述主包中的至少一个所述应用的页面的映射关系、所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系、以及所述主包和所述至少一个分包在所述第一文件中的偏移量和大小;接收所述下载地址和所述包信息;根据所述包信息确定所述目标页面对应的目标分包后,根据所述下载地址在服务器中下载所述目标分包;并且在下载所述目标分包的同时,下载所述包头和所述第一文件中的所述主包;根据所述主包,运行所述目标分包,并根据所述包头中的所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系加载所述目标页面。客户端访问的目标页面在分包中时,客户端需通过获取服务器发送端口中页面与分包的映射关系、分包在文件中偏移量和大小信息后,即可查询到目标页面对应的目标分包,在下载目标分包、包头和主包后即可运行目标分包和加载目标页面,这样可以最小化目标页面的下载和运行时间,保证用户的体验。
在另一个可能的实现中,所述包信息包括所述主包与所述主包中的至少一个所述应用的页面的映射关系、所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系、以及所述主包和所述至少一个分包在所述第一文件中的偏移量和大小;所述根据所述包信息确定所述目标页面对应的目标分包,包括:根据所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系,确定所述目标页面所对应的目标分包;确定所述目标分包的偏移量和大小。
在另一个可能的实现中,所述在下载所述目标分包的同时,下载所述包头和所述第一文件中的所述主包,具体包括:启动第一线程和第二线程,所述第一线程用于根据所述目标分包的偏移量和大小从下载地址下载所述目标分包,所述第二线程用于下载所述包头和所述第一文件中的所述主包。通过两条线程下载,有效减少应用包的下载时间,提高用户的体验。
在另一个可能的实现中,所述目标分包包括配置属性,声明所述目标分包依赖于所述主包运行;所述方法包括,在所述运行所述目标分包,并根据所述包头中的所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系加载所述目标页面之前,根据所述主包在所述第一文件中的偏移量和大小确定所述第一文件中的所述主包下载完成后,所述目标分包通过所述主包中的公共开放能力集获取元信息文件,运行所述目标分包。
在另一个可能的实现中,所述包头还包括所述主包的摘要列表和所述至少一个分包的摘要列表;所述方法包括,获取所述主包摘要列表和所述至少一个分包摘要列表;利用所述主包摘要列表和所述至少一个分包摘要列表对所述主包或所述至少一个分包进行校验。客户端需要对目标分包进行验证,以验证目标分包是否被篡改,保证客户端下载的目标分包是合法的。
在另一个可能的实现中,下载签名信息,所述签名信息是对所述包头签名而得到的;所述方法包括,利用所述签名信息对所述包头进行校验。客户端需要对包头进行签名验证,以保证包头的合法性。
第六方面,本申请提供一种运行应用包的装置,包括:收发器、处理器和存储器;所述存储器存储有一个或多个程序,所述一个或多个程序包括指令,当所述指令被所述装置执行时,使得所述装置执行第五方面涉及的方法。
附图说明
下面对实施例或现有技术描述中所需使用的附图作简单地介绍。
图1为本申请实施例提供的一种应用包拆分重组和下载的系统的结构示意图;
图2为本申请实施例提供的包进程服务器PPS对原应用包进行拆包和重组的过程的示意图;
图3为本申请实施例提供的一种应用包拆分和重组的方法流程图;
图4为本申请实施例提供的一种应用包运行的方法流程图;
图5为本申请实施例提供的另一种应用包运行的方法流程图;
图6示意了根据本说明书实施例的可用于服务器上实现上述各种技术的各设备的详细结构图。
图7为本申请实施例提供的一种应用包拆分和重组的装置的结构框图;
图8示意了根据本说明书实施例的可用于客户端上实现上述各种技术的各设备的详细结构图。
图9为本申请实施例提供的一种应用包运行的装置的结构框图;
图10为本申请实施例提供的另一种应用包运行的装置的结构框图;
图11为本申请实施例提供的一种服务器对应用包进行拆包和重组的流程图;
图12为本申请实施例提供的一种客户端对应用包进行运行的流程图;
图13为本申请实施例提供的另一种客户端对应用包进行运行的流程图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的单元或具有相同或类似功能的单元。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。
图1为本申请实施例提供的一种应用包拆分重组和下载的系统的结构示意图。如图1所示,系统包括服务器,系统可以由服务器自动进行拆包和重新组包。
服务器可包括内容管理系统(Content Management System,CMS)、包进程服务器(Package Process Server,PPS)和内容分发网络(Content Delivery Network,CDN)。
内容管理系统CMS用于接收终端上传的原应用包,对原应用包进行处理,然后将原应用包放到自身内容库中。在一个实施例中,内容管理系统CMS需要对原应用包的合法性进行验证。如果原应用包合法,内容管理系统CMS将原应用包保存在自身内容库中,如果不合法,就不保存该应用包。
包进程服务器PPS用于对原应用包进行拆分和重新组合,生成新应用包。
在一个实施例中,包进程服务器PPS对原应用包进行拆分和重组,生成一个新应用包。
图2为本申请实施例提供的包进程服务器PPS对原应用包进行拆包和重组的过程的示意图。如图2所示,包进程服务器PPS首先对原应用包进行解压;根据解压出的应用列表,自动分成一个主包和多个分包;然后将主包和分包生成一个文件,当然可以预先压缩主包和分包;接着,将页面与主包的映射关系、页面与分包的映射关系、主包与分包在文件中的偏移量和大小信息组成包头,并且可以对包头进行服务器平台签名;最后,包进程服务器PPS将服务器平台签名的签名值、包头、文件拼凑成新应用包。
其中,在重组过程中,将拆分出的主包和多个分包组成一个文件的好处是:客户端在进行下载时,只需要发送一次下载请求,即可下载完整的应用包。
同时,包进程服务器PPS将页面与主(分)包的映射关系、主(分)包在文件中的偏移量和大小信息组成的包信息同步到内容分发网络CDN。
内容分发网络CDN存储有新应用包的下载地址和包信息,用于客户端对新应用包进行查询和下载。
该系统还包括客户端,其包括应用市场端和快应用中心。
应用市场端用于向用户展示新应用包。当用户需要下载新应用包时,用户通过对应用市场端进行操作,启动快应用中心进行下载。
快应用中心用于下载新应用包,并对新应用包的合法性进行验证、解压和运行。
在一个实施例中,快应用中心发送一个具有新应用包链接地址的下载请求给内容分发网络CDN,根据该请求内容分发网络CDN向快应用中心发送新应用包。在一个例子中,快应用中心采用流式下载新应用包。快应用中心下载由主包和多个分包组成的文件,待主包下载完成后后,运行主包并加载首页;接着,继续下载文件中的分包,并运行分包和加载分包对应的页面。如此,可以保证客户端只需要一次网络连接即可下载完成整个新应用包,有效的减少下载时间。
在另一个实施例中,如果用户要访问的页面不是首页,而该页面在某个分包内时,快应用中心根据新应用包的名称,到内容分发网络CDN获取新应用包的下载地址和包信息。然后,快应用中心在根据包信息查询到待访问页面对应的目标分包后,启动两条下载线程,一条线程下载目标分包,另一条直接下载新应用包中的包头和文件中的主包。待两条线程下载完毕后,快应用中心通过主包运行目标分包和加载目标分包对应的目标页面。如此,可以最小化目标页面的下载和运行时间,保证用户的体验。
图3为本申请实施例提供的一种应用包拆分和重组的方法流程图。该方法例如在服务器上实施。如图3所示的应用包拆分和重组的方法,具体步骤如下:
步骤S302,接收应用对应的第一应用包。
第一应用包是指开发者开发的原应用包,原应用包是未经过拆包的应用包,开发者可以将其直接上传到服务器,由服务器进行拆包。或者,开发者对原应用包拆分为包括有一个主包和多个分包的应用包,但是这种拆分后的应用包可能不合理,在客户端下载过程中,需要发送多次下载请求才能下载完整的应用包,所以需要服务器重新进行拆包和重组。
在一个实施例中,在接收第一应用包之前,开发者可以对第一应用包进行签名,用终端自身的私钥对第一应用包进行签名,并把签名后的签名值打包到第一应用包中,然后由终端上传到服务器中。其中,签名值中包括有公钥。
服务器在接收到终端上传的第一应用包后,首先需要验证第一应用包是否合法,只有在第一应用包合法情况下,服务器才对第一应用包进行拆分和重组。服务器根据接收到签名值中的公钥对第一应用包进行签名,如果生成的签名值和服务器接收到的签名值相同,则说明第一应用包是合法的。如果生成的签名值和服务器接收到的签名值不相同,则第一应用包不合法,服务器不会对第一应用包进行拆分和重组。
步骤S304,将第一应用包拆分为主包和至少一个分包。
服务器接收到第一应用包后,对第一应用包进行解压,根据解压出的应用列表,自动分成主包和多个分包。主包中包括有至少一个页面,其中至少一个页面包括页面首页。多个分包各自包括有至少一个页面。
优选地,主包还包括元信息文件,其中元信息文件为manifest文件。以安卓为例,对于每个安卓应用程序必须有一个manifest文件,其在Android系统的应用中提供了重要的信息,可以运行任何应用程序的代码。本申请在客户端下载主包后,可以基于元信息文件运行主包。在客户端下载分包后,可以基于元信息文件运行分包。
优选地,分包包括有配置属性,用于声明分包是否依赖于主包运行。当分包中配置属性声明分包不依赖主包可以独立运行工作,则该分包为独立分包;当分包中配置属性声明分包需要依赖主包运行工作,则该分包为依赖分包。
优选地,主包还包括能力开放集,能力开放集是这个应用中大家都会用到的一些公共能力,分包依赖于他,但是他不依赖于分包。本申请依赖分包通过能力开放集获取主包中的元信息文件。
步骤S306,将主包和至少一个分包保存在第一文件中,并且确定主包和至少一个分包在第一文件中的偏移量和大小。
服务器根据生成的主包和至少一个分包,重新组合成一个文件,同时确定主包和各个分包在文件中的偏移量和各个分包的大小。
其中,可以根据主包和各个分包在文件中的偏移量和各个分包的大小信息,确定主包和分包在文件中存储位置,以便于客户端进行下载。在一个实施例中,应用包下载时,文件有1500个字节,分两个包,一个主包,一个分包,主包占用了800个字节,那么分包在文件中的偏移量为800,分包大小为700个字节。
步骤S308,生成应用对应的第二应用包。
服务器生成文件后,将主包与主包中的至少一个应用的页面的映射关系、至少一个分包与至少一个分包中的至少一个应用的页面的映射关系、以及主包和至少一个分包在第一文件中的偏移量和大小信息拼凑成一个包头;最后,将包头和文件组合成第二应用包。
优选地,服务器分别对主包和各个分包进行hash运算,生成主包的摘要列表和各个分包的摘要列表,然后将这些摘要列表写入到包头中,以便于在客户端下载主包或分包后,依据这些摘要列表对下载的主包或分包进行校验,判断其是否被第三方篡改。
优选地,服务器还需要对包头进行签名,生成的签名值打包到第二应用包中,用于在客户端下载完包头后,对包头进行校验,判断其是否被第三方篡改。
在步骤S308之后,服务器还将主包与主包中的至少一个应用的页面的映射关系、至少一个分包与至少一个分包中的至少一个应用的页面的映射关系、以及主包和至少一个分包在第一文件中的偏移量和大小信息构成包信息和第二应用包的下载地址同步到发送端口,用于客户端对第二应用包进行查询和下载。
本发明实施例提供了在服务器进行拆包和重新组包的方法。服务器接收到原应用包后,自动对原应用包进行拆分和重组,生成一个完整的新应用包,这样就不需要开发者进行分包和对分包后的分包进行维护,降低了开发者的开发成本。在重组过程中,将拆分出的主包和多个分包组成一个文件,这样客户端在进行下载时,只需要发送一次下载请求,即可下载完整的应用包。同时服务器将页面与主(分)包的映射关系、主(分)包在文件中偏移量和大小信息同步到发送端口,方便客户端查询和下载新应用包。
图4为本申请实施例提供的一种应用包运行的方法流程图。该方法例如在客户端上实施。如图4所示应用包下载和运行的方法,具体步骤如下:
步骤S402,向服务器发送下载请求,下载请求用于请求下载应用对应的第二应用包。
具体地,客户端向服务器发送下载第二应用包请求,服务器发送端口接收到下载请求,根据第二应用包的下载地址下载第二应用包。
其中,第二应用包包括包头和第一文件,第一文件中保存有主包和至少一个分包,包头包括主包与主包中的至少一个应用的页面的映射关系、至少一个分包与至少一个分包中的至少一个应用的页面的映射关系、以及主包和至少一个分包在第一文件中的偏移量和大小。
步骤S404,下载包头。
步骤S406,下载第一文件中的主包。
优选地,本申请中下载方式采用流式下载,即为边下载边运行的下载方式,在本申请中,客户端下载完成主包后,边运行主包边下载分包。客户端下载第二应用包中组成部分的顺序依次为:签名值、包头和文件。客户端发送下载第二应用包的请求给服务端,服务器将第二应用包中各组成部分逐步发送给客户端。
主包中包括有元信息文件和页面首页。其中,元信息文件用于在客户端下载主包后,可以运行主包。也可以在客户端下载分包后,运行分包。不管主包还是各个分包都至少包括有至少一个页面。
优选地,如果客户端接收到服务器发送的签名值时,客户端需要对包头进行签名验证,以保证包头的合法性。在一个实施例中,客户端根据签名值中公钥对包头进行签名,如果生成的签名值和客户端接受的签名值相同,则说明包头合法,并没有被篡改;如果不相同,则说明包头出现异常,客户端终止第二应用包下载。
步骤S408,根据包头中主包在第一文件中的偏移量和大小确定主包下载完成后,运行主包,并根据包头中的主包与主包的至少一个应用的页面的映射关系加载主包的至少一个应用的页面。
优选地,如果包头中包括有主包的摘要列表,客户端需要对主包进行验证,以验证主包是否被篡改。在一个实施例中,客户端对下载后的主包进行hash,如果生成主包的摘要列表与包头中主包的摘要列表相同,则说明主包没有被篡改,解压主包,并根据主包中的元信息文件运行和加载首页;如果不相同,则说明主包出现异常,客户端停止对主包的处理,并终止第二应用包的下载。
优选地,分包包括有配置属性,用于声明分包是否依赖于主包运行。当分包中配置属性声明分包不依赖主包可以独立运行工作,则该分包为独立分包;当分包中配置属性声明分包需要依赖主包运行工作,则该分包为依赖分包。
在一个实施例中,根据至少一个分包在文件中的偏移量和大小,确定要下载的分包。如果要下载的分包为依赖分包,根据配置属性,从主包中通过能力开放集获取元信息文件,运行依赖分包并且根据依赖分包与依赖分包的至少一个页面之间的映射关系加载依赖分包的至少一个页面。
在一个实施例中,根据至少一个分包在文件中的偏移量和大小,确定要下载的分包如果要下载的分包为独立分包,运行独立分包,并且根据独立分包与独立分包的至少一个页面之间的映射关系加载独立分包的至少一个页面。
另外,如果用户在使用的过程中点击了某个跳转链接,目标页面不在本地文件中,则会再启动一个线程,根据分包与分包的页面之间的映射关系,优先下载目标页面所属的分包并启动加载和运行。
需要说明的是,每下载一个分包,都会进行一次合法性校验,校验通过才会安装到本地作为整个应用程序的一部分。
本发明客户端在下载第二应用包过程中,进行一次网络连接,客户端下载包头和主包后,运行主包,由于服务器将拆分的主包和多个分包组成一个文件,所以在主包下载完成后,后续分包的下载不需要与服务器再进行网络连接,即可进行下载,从而实现客户端只需要一次网络连接就可以下载完成整个新应用包,有效的减少下载时间。
图5为本申请实施例提供的另一种应用包运行的方法流程图。该方法例如在客户端上实施。如图5所示应用包下载和运行的方法,具体步骤如下:
步骤S502,响应于加载应用的目标页面的请求,获取应用的名称。
在一个实施例中,客户端根据用户发送的访问淘宝购买某个产品页面的请求时,客户端根据请求,获取应用包的名称淘宝。其中目标页面在应用对应的第二应用包的分包中。
步骤S504,根据应用的名称,向服务器发送查询请求,查询请求用于请求服务器下载应用对应的第二应用包的下载地址和包信息。
具体地,第二应用包的下载地址和包信息从服务器发送端口获取。
其中,第二应用包包括包头和第一文件,第一文件中保存有主包和至少一个分包,包头包括主包与主包中的至少一个应用的页面的映射关系、至少一个分包与至少一个分包中的至少一个应用的页面的映射关系、以及主包和至少一个分包在第一文件中的偏移量和大小。
包信息包括主包与主包中的至少一个应用的页面的映射关系、至少一个分包与至少一个分包中的至少一个应用的页面的映射关系、以及主包和至少一个分包在第一文件中的偏移量和大小。
步骤S506,接收下载地址和包信息。
步骤S508,根据包信息确定目标页面对应的目标分包后,根据下载地址在服务器中下载所述目标分包;并且在下载目标分包的同时,下载包头和第一文件中的主包。
具体地,客户端接收下载地址和包信息后,根据包信息中分包与页面的映射关系,确定访问页面对应的目标分包;然后根据分包在文件中的偏移量和大小信息,确定目标分包的偏移量和目标分包的大小。
优选地,客户端在下载目标分包、包头和第一文件中的包头过程为:启动两条线程,第一线程用于根据目标分包的偏移量和大小从下载地址下载目标分包,第二线程用于下载包头和第一文件中的主包。
步骤S510,根据主包运行目标分包,并根据包头中的至少一个分包与至少一个分包中的至少一个应用的页面的映射关系加载目标页面。
优选地,如果客户端接收到服务器发送的签名值,客户端可以利用该签名值对包头进行签名验证,以保证包头的合法性。在一个实施例中,客户端根据签名值中公钥对包头进行签名,如果生成的签名值和客户端接受的签名值相同,则说明包头合法,并没有被篡改;如果不相同,则说明包头出现异常,客户端终止第二应用包下载。
优选地,如果包头中包括有主包的摘要列表和分包的摘要列表,客户端可以利用它对主包和目标分包进行验证,以验证主包和目标分包是否被篡改。在一个实施例中,客户端对下载后的主包进行hash,如果生成主包的摘要列表与包头中主包的摘要列表相同,则说明主包没有被篡改,解压主包,并根据主包中的元信息文件运行和加载首页;如果不相同,则说明主包出现异常,客户端停止对主包的处理,并终止第二应用包的下载。
优选地,分包包括有配置属性,用于声明分包是否依赖于主包运行。当分包中配置属性声明分包不依赖主包可以独立运行工作,则该分包为独立分包;当分包中配置属性声明分包需要依赖主包运行工作,则该分包为依赖分包。
如果要下载的分包为依赖分包,在运行目标分包并且根据目标分包与目标分包的至少一个页面之间的映射关系加载目标分包的至少一个页面之前,根据分包在文件中的偏移量和大小确定主包,并且根据主包中的元信息文件加载目标分包。
如果要下载的分包为独立分包,则不需要等待主包加载完毕就可以直接运行。
本发明在客户端访问的目标页面在分包中时,客户端需通过获取服务器发送端口中页面与分包的映射关系、分包在文件中偏移量和大小信息后,即可查询到目标页面对应的目标分包,在下载目标分包、包头和主包后即可运行目标分包和加载目标页面,这样可以最小化目标页面的下载和运行时间,保证用户的体验。
图6示意了根据本说明书实施例的可用于服务器上实现上述各种技术的各设备的详细结构图。该结构图示意了可实现图3所示方法流程的硬件基础。如图6所示,设备可包括处理器602,该处理器表示用于控制服务器的总体操作的微处理器或控制器604。数据总线611可利于在存储设备608、处理器602和控制器604之间进行数据传输。控制器604可用于通过设备控制总线613与不同设备进行交互并对其进行控制。设备还可包括耦接至数据链路615的网络/总线接口606。在无线连接的情况下,网络/总线接口606可包括无线收发器。
设备还包括存储设备608。在一个实施例中,存储设备608用于存储网络/总线接口606接收的应用包或文件,用于在运行时,处理器602获取存储设备608中应用包或文件,并进行处理,包括对应用包进行验证、对应用包进行拆包重组和生成新应用包;也可以存储由处理器602进行处理的应用包或文件,用于根据网络/总线接口606接收的指令将存储设备608中应用包或文件发送给其它客户端或运行程序。
应当理解,这里描述的设备在很多方面可以利用前面描述的方法实施例或与之结合。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书各实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图3所描述的方法。
图7为本申请实施例提供的一种应用包拆分和重组的装置的结构框图。如图7所示该装置包括:第一接收单元701、拆分单元702、第一生成单元703、第二生成单元704和第一发送单元705。
第一接收单元701用于接收应用对应的第一应用包。
其中,第一应用包是指开发者开发的原应用包,原应用包是未经过拆包的应用包,开发者可以将其直接上传到服务器,由服务器进行拆包。或者,开发者对原应用包拆分为包括有一个主包和多个分包的应用包,但是这种拆包可能不合理,需要服务器重新拆包和重组。
在一个实施例中,在接收第一接收单元701第一应用包之前,开发者可以对第一应用包进行签名,用终端自身的私钥对第一应用包进行签名,并把签名后的签名值打包到第一应用包中,然后由终端上传到服务器中。其中,签名值中包括有公钥。
拆分单元702用于将第一应用包拆分为主包和至少一个分包。
其中,拆分单元702对第一应用包进行解压,根据解压出的应用列表,自动分成主包和多个分包。主包中包括有至少一个页面,其中至少一个页面包括页面首页。多个分包各自包括有至少一个页面。
在一个实施例中,主包还包括元信息文件,其中元信息文件为manifest文件。对于每个安卓应用程序必须有一个manifest文件,其在Android系统的应用中提供了重要的信息,可以运行任何应用程序的代码。本申请在客户端下载主包后,可以基于元信息文件运行主包。在客户端下载分包后,可以基于元信息文件运行分包。
在一个实施例中,分包包括有配置属性,用于声明分包是否依赖于主包运行。当分包中配置属性声明分包不依赖主包可以独立运行工作,则该分包为独立分包;当分包中配置属性声明分包需要依赖主包运行工作,则该分包为依赖分包。
在一个实施例中,主包还包括能力开放集,能力开放集是这个应用中大家都会用到的一些公共能力,分包依赖于他,但是他不依赖于分包。本申请依赖分包通过能力开放集获取主包中的元信息文件。
第一接收单元701在接收到终端上传的第一应用包后,首先需要验证第一应用包是否合法,只有在第一应用包合法情况下,拆分单元702才对第一应用包进行拆分和重组。第一接收单元701根据接收到签名值中的公钥对第一应用包进行签名,如果生成的签名值和第一接收单元701接收到的签名值相同,则说明第一应用包是合法的。如果生成的签名值和第一接收单元701接收到的签名值不相同,则第一应用包不合法,拆分单元702不会对第一应用包进行拆分和重组。
第一生成单元703用于将主包和至少一个分包保存在第一文件中,并且确定主包和至少一个分包在第一文件中的偏移量和大小。。
第一生成单元703根据拆分单元702拆出的主包和至少一个分包,重新组合成一个文件,同时确定各个分包在文件中的偏移量和各个分包的大小。
其中,可以根据各个分包在文件中的偏移量和各个分包的大小信息,确定分包在文件中存储位置,以便于客户端进行下载。在一个实施例中,应用包下载时,文件有1500个字节,分两个包,一个主包,一个分包,主包占用了800个字节,那么分包在文件中的偏移量为800,分包大小为700个字节。
第二生成单元704用于生成应用对应的第二应用包。
第一生成单元703生成文件后,将主包与主包中的至少一个应用的页面的映射关系、至少一个分包与至少一个分包中的至少一个应用的页面的映射关系、以及主包和至少一个分包在第一文件中的偏移量和大小信息拼凑成一个包头;最后,将包头和文件组合成第二应用包。
在一个实施例中,第二生成单元704还用于分别对主包和各个分包进行hash运算,生成主包的摘要列表和各个分包的摘要列表,然后将这些摘要列表写入到包头中,以便于在客户端下载主包或分包后,依据这些摘要列表对下载的主包或分包进行校验,判断其是否被第三方篡改。
在一个实施例中,第二生成单元704还用于还需要对包头进行签名,生成的签名值打包到第二应用包中,用于在客户端下载完包头后,对包头进行校验,判断其是否被第三方篡改。
第一发送单元705用于接收第二生成单元704发送的由主包与主包中的至少一个应用的页面的映射关系、至少一个分包与至少一个分包中的至少一个应用的页面的映射关系、以及主包和至少一个分包在第一文件中的偏移量和大小信息构成包信息和第二应用包的下载地址,以用于客户端对第二应用包进行查询和下载。
图8示意了根据本说明书实施例的可用于客户端上实现上述各种技术的各设备的详细结构图。该结构图示意了可实现图4-5所示方法流程的硬件基础。如图8所示,设备可包括处理器802,该处理器表示用于控制客户端的总体操作的微处理器或控制器804。数据总线811可利于在存储设备808、处理器802和控制器804之间进行数据传输。控制器804可用于通过设备控制总线8013与不同设备进行交互并对其进行控制。设备还可包括耦接至数据链路815的网络/总线接口806。在无线连接的情况下,网络/总线接口806可包括无线收发器。
设备还包括存储设备808。在一个例子中,存储设备808用于存储网络/总线接口806接收的应用包和文件,用于在运行时处理器802获取存储设备808中应用包或文件,并进行处理,包括对应用包进行验证、对应用包进行运行和加载。
在另一个例子中,该存储设备还存储有客户端程序或其它应用程序;在操作中,客户端或其它应用程序自RAM810中加载于RAM812中,并且由此控制处理器802执行相应操作,由此来自服务器的应用包和文件能够运行并加载页面。在一个例子中,客户端程序和其它应用程序能够对应用包和文件进行加密运算。
在再一个例子中,该存储设备还存储有应用程序;在操作中,应用程序自RAM810中加载于RAM812中,并且由此控制处理器802执行相应操作,由此来自服务器的应用包和文件能够运行并加载页面。在一个例子中,应用程序能够对文件或数据进行解密和hash签名运算。
应当理解,这里描述的设备在很多方面可以利用前面描述的方法实施例或与之结合。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书各实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图4-5所描述的方法。
图9为本申请实施例提供的一种应用包运行的装置的结构框图。如图9所示该装置包括:第二发送单元901、第二接收单元902、第一运行单元903和第一校验单元904。
第二发送单元901用于向服务器发送下载请求,下载请求用于请求下载应用对应的第二应用包。
具体地,第二发送单元901向服务器发送下载第二应用包请求,第一发送单元705接收到下载请求,根据第二应用包的下载地址下载第二应用包。
其中,第二应用包包括包头和第一文件,第一文件中保存有主包和至少一个分包,包头包括主包与主包中的至少一个应用的页面的映射关系、至少一个分包与至少一个分包中的至少一个应用的页面的映射关系、以及主包和至少一个分包在第一文件中的偏移量和大小。
第二接收单元902用于下载所述包头;以及下载第一文件中的主包。
本申请中下载方式流式下载,即为边下载边运行的下载方式。通过采用流式下载方式,客户端下载第二应用包中组成部分的顺序依次为:签名值、包头和文件。客户端发送下载第二应用包的请求给服务端,服务器将第二应用包中各组成部分逐步发送给客户端。
主包中包括有元信息文件和页面首页。其中,元信息文件用于在客户端下载主包后,可以运行主包。也可以在客户端下载分包后,运行分包。不管主包还是各个分包都至少包括有至少一个页面。
在一个实施例中,第二接收单元902还用于接收到服务器发送的签名值时,客户端需要对包头进行签名验证,以保证包头的合法性。第一校验单元904用于根据签名值中公钥对包头进行签名,如果生成的签名值和第二接收单元902接受的签名值相同,则说明包头合法,并没有被篡改;如果不相同,则说明包头出现异常,第二接收单元902终止第二应用包下载。
在一个实施例中,第二接收单元902还用于接收包头中主包的摘要列表,客户端需要对主包进行验证,以保证主包是否被篡改。第一校验单元904用于对下载后的主包进行hash,如果生成主包的摘要列表与包头中主包的摘要列表相同,则说明主包没有被篡改;如果不相同,则说明主包出现异常,第二接收单元902停止对主包的处理,并终止第二应用包的下载。
第一运行单元903用于根据包头中主包在第一文件中的偏移量和大小确定主包下载完成后,运行主包,并根据包头中的主包与主包的至少一个应用的页面的映射关系加载主包的至少一个应用的页面。
在第一运行单元903运行主包后,还要继续下载分包。
其中,分包包括有配置属性,用于声明分包是否依赖于主包运行。当分包中配置属性声明分包不依赖主包可以独立运行工作,则该分包为独立分包;当分包中配置属性声明分包需要依赖主包运行工作,则该分包为依赖分包。
在一个实施例中,第二接收单元902还用于根据至少一个分包在文件中的偏移量和大小,确定要下载的分包。如果要下载的分包为依赖分包,第一运行单元903根据配置属性,从主包中通过能力开放集获取元信息文件,运行依赖分包并且根据依赖分包与依赖分包的至少一个页面之间的映射关系加载依赖分包的至少一个页面。
在一个实施例中,第二接收单元902还用于根据至少一个分包在文件中的偏移量和大小,确定要下载的分包如果要下载的分包为独立分包,第一运行单元903运行独立分包,并且根据独立分包与独立分包的至少一个页面之间的映射关系加载独立分包的至少一个页面。
在一个实施例中,第二接收单元902还用于确定如果用户在使用的过程中点击了某个跳转链接,目标页面不在本地文件中,则会再启动一个线程,根据分包与分包的页面之间的映射关系,优先下载目标页面所属的分包,第一运行单元903还用于并启动加载和运行分包。
需要说明的是,每下载一个分包,都会进行一次合法性校验,校验通过才会安装到本地作为整个应用程序的一部分。
图10为本申请实施例提供的另一种应用包运行的装置的结构框图。如图10所示该装置包括:第一响应单元1001、第三发送单元1002、第三接收单元1003、第二运行单元1004和第二校验单元1005。
第一响应单元1001用于响应于加载应用的目标页面的请求,获取应用的名称。
第三发送单元1001用于根据应用的名称,向服务器发送查询请求,查询请求用于请求服务器下载应用对应的第二应用包的下载地址和包信息。
具体地,第二应用包的下载地址和包信息从第一发送单元705处获取。
其中,第二应用包包括包头和第一文件,第一文件中保存有主包和至少一个分包,包头包括主包与主包中的至少一个应用的页面的映射关系、至少一个分包与至少一个分包中的至少一个应用的页面的映射关系、以及主包和至少一个分包在第一文件中的偏移量和大小。
包信息包括主包与主包中的至少一个应用的页面的映射关系、至少一个分包与至少一个分包中的至少一个应用的页面的映射关系、以及主包和至少一个分包在第一文件中的偏移量和大小。
第三接收单元1002用于接收下载地址和包信息,以及根据包信息确定目标页面对应的目标分包后,根据下载地址在服务器中下载所述目标分包;并且在下载目标分包的同时,下载包头和第一文件中的主包。
第三接收单元1002接收下载地址和包信息后,根据包信息中分包与页面的映射关系,确定访问页面对应的目标分包;然后根据分包在文件中的偏移量和大小信息,确定目标分包的偏移量和目标分包的大小。
第二运行单元1004用于根据主包,运行目标分包,并根据包头中的至少一个分包与至少一个分包中的至少一个应用的页面的映射关系加载目标页面。
在一个实施例中,第三接收单元1002还用于接收签名值,可以利用该签名值对包头进行签名验证,以保证包头的合法性。第二校验单元1005用于根据签名值中公钥对包头进行签名,如果生成的签名值和第三接收单元1002接受的签名值相同,则说明包头合法,并没有被篡改;如果不相同,则说明包头出现异常,第三接收单元1002终止第二应用包下载。
在一个实施例中,第三接收单元1002还用于接收主包的摘要列表或分包的摘要列表,可以利用它对主包或分包进行验证,以验证主包或分包是否被篡改。第二校验单元1005用于对下载后的主包或分包进行hash,如果生成主包或分包的摘要列表与包头中主包或分包的摘要列表相同,则说明主包或分包没有被篡改,解压主包或分包,并根据主包中的元信息文件运行主包或分包;如果不相同,则说明主包或分包出现异常,第三接收单元1002停止对主包或分包的处理,并终止第二应用包的下载。
分包包括有配置属性,用于声明分包是否依赖于主包运行。当分包中配置属性声明分包不依赖主包可以独立运行工作,则该分包为独立分包;当分包中配置属性声明分包需要依赖主包运行工作,则该分包为依赖分包。
如果要下载的分包为依赖分包,第二运行单元1004还用于在运行目标分包,并根据包头中的至少一个分包与至少一个分包中的至少一个应用的页面的映射关系加载目标页面之前,根据分包在文件中的偏移量和大小确定主包,并且根据主包中的元信息文件加载目标分包。
如果要下载的分包为独立分包,第二运行单元1004则不需要等待主包加载完毕就可以直接运行。
图11为本申请实施例提供的一种服务器对应用包进行拆包和重组的流程图。如图11所示,服务器对应用包进行拆包和重组的具体过程如下:
步骤S1101,服务器接收终端上传的应用的第一应用包。
步骤S1102,对第一应用包中第一签名值进行签名验签,判断第一应用包是否合法,如果第一应用包合法,执行步骤S1103;如果第一应用包不合法,则说明第一应用包异常,服务器将放弃对第一应用包进行处理。
步骤S1103,对第一应用包进行解压,自动拆分出主包和至少一个分包。
步骤S1104,服务器对拆分出的主包和分包进行压缩,生成第一文件。
步骤S1105,服务器对主包和至少一个分包进行hash,生成主包的摘要列表和至少一个分包的摘要列表。
步骤S1106,将主包的摘要列表、至少一个分包的摘要列表、第一签名值、主包与主包中的至少一个应用的页面的映射关系、至少一个分包与至少一个分包中的至少一个应用的页面的映射关系、以及主包和至少一个分包在第一文件中的偏移量和大小信息拼凑成包头,并对包头进行第二次签名。
步骤S1107,将第二次签名的第二签名值、包头和第一文件进行拼凑,生成应用的第二应用包。
步骤S1108,将主包与主包中的至少一个应用的页面的映射关系、至少一个分包与至少一个分包中的至少一个应用的页面的映射关系、以及主包和至少一个分包在第一文件中的偏移量和大小信息构成包信息和第二应用包的下载地址同步到发送端口,用于客户端对第二应用包进行查询和下载。
图12为本申请实施例提供的一种客户端对应用包进行运行的方法的流程图。如图12所示,客户端对应用包进行下载和运行的具体过程如下:
步骤S1201,向服务器发送下载请求,请求下载应用对应的第二应用包。
步骤S1202,采用流式下载方式下载第二应用包,等待第二签名值和包头下载完成。
步骤S1203,当第二签名值和包头下载完成后,对第二签名值进行签名验签,判断包头是否合法,当包头合法时,执行步骤S1204;当包头不合法时,则该第二应用包异常,客户端不再进行处理。
步骤S1204,下载第一文件中的主包,待主包下载完成后,对主包进行hash,生成主包的摘要列表。
步骤S1205,将步骤S1204中生成的主包的摘要列表和包头中的主包的摘要列表进行比较,判断步骤S1204中生成的主包的摘要列表和包头中的主包的摘要列表是否相同,如果相同,执行步骤S1206;如果不相同,则该主包异常,客户端不再进行处理。
步骤S1206,解压主包,并根据主包中的元信息文件运行和加载首页。
步骤S1207,继续下载、验证和解压分包,并加载分包对应的页面。
需要说明的是,每下载完成一个分包后均需要进行一次hash,然后将结果与包头中的hash值进行比较作合法性校验,只有校验通过才会安装到本地作为整个应用程序的一部分。假如用户在使用的过程中点击了某个跳转链接,目标页面不在本地文件中,则会再启动一个线程,优先下载目标页面所属的分包并启动加载和运行。
图13为本申请实施例提供的另一种客户端对应用包进行运行的流程图。如图13所示,在另一个具体实施例中,用户访问的目标页面不是首页,而是在某个分包内的场景,客户端对应用包进行下载和运行的具体过程如下:
步骤S1301,根据加载应用的目标页面的请求,获取应用的名称。
步骤S1302,客户端根据第二应用包名称,在服务器查询并下载第二应用包的下载地址和包信息。
步骤S1303,通过包信息中页面和分包的映射关系,查询到目标页面所属的目标分包的偏移量和大小信息。
步骤S1304,启动两条线程同时下载,第一条线程下载第二应用包的第二签名值、包头和第一文件中的主包,第二条线程下载目标分包。
步骤S1305,待两条线程下载完毕后,对第二签名值进行签名验签,判断包头是否合法,如果包头合法,执行步骤S1306;当包头不合法时,则该第二应用包异常,客户端不再进行处理。
步骤S1306,对目标分包进行hash,生成目标分包的摘要列表。
步骤S1307,将步骤S1306中生成的目标分包的摘要列表和包头中的目标分包对应的分包的摘要列表进行比较,判断步骤S1306中生成的目标分包的摘要列表和包头中的目标分包对应的分包的摘要列表是否相同;如果相同,执行步骤S1308;如果不相同,则该目标分包异常,客户端不再进行处理。
步骤S1308,解压目标分包,并根据主包中的元信息文件运行和加载目标首页。
本发明实施例提供了在服务器进行拆包和重新组包的方法。服务器接收到原应用包后,自动对原应用包进行拆分和重组,生成一个完整的新应用包,这样就不需要开发者进行分包和对分包后的分包进行维护,降低了开发者的开发成本。且在重组过程中,将拆分出的主包和多个分包组成一个文件,客户端在进行下载时,只需要发送一次下载请求,即可下载完整的应用包。
在新应用包下载过程中,进行一次网络连接,客户端下载包头和主包后,运行主包,由于服务器将拆分的主包和多个分包组成一个文件,所以在主包下载完成后,后续分包的下载不需要与服务器再进行网络连接,即可进行下载,从而实现客户端只需要一次网络连接就可以下载完成整个新应用包,有效的减少下载时间。
如果客户端访问的目标页面在分包中时,客户端需通过获取服务器发送端口中页面与分包的映射关系、分包在文件中偏移量和大小信息后,即可查询到目标页面对应的目标分包,在下载目标分包、包头和主包后即可运行目标分包和加载目标页面,这样可以最小化目标页面的下载和运行时间,保证用户的体验。
最后说明的是:以上实施例仅用以说明本申请的技术方案,而对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (23)
1.一种应用包拆分和重组的方法,所述方法由服务器实施,其特征在于,包括:
接收应用对应的第一应用包;
将所述第一应用包拆分为主包和至少一个分包;所述主包和所述至少一个分包各自包括至少一个所述应用的页面;
将所述主包和所述至少一个分包保存在第一文件中,并且确定所述主包和所述至少一个分包在所述第一文件中的偏移量和大小;
生成所述应用对应的第二应用包;其中所述第二应用包包括包头和所述第一文件,所述包头包括所述主包与所述主包中的至少一个所述应用的页面的映射关系、所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系、以及所述主包和所述至少一个分包在所述第一文件中的偏移量和大小。
2.根据权利要求1所述的方法,其特征在于,所述方法包括:
对所述主包和所述至少一个分包分别生成所述主包的摘要列表和所述至少一个分包的摘要列表;其中,所述主包的摘要列表和所述至少一个分包的摘要列表分别用于对与之对应的主包或分包进行校验;
所述生成所述应用对应的第二应用包包括:在所述包头写入所述主包的摘要列表、所述至少一个分包的摘要列表。
3.根据权利要求2所述的方法,其特征在于,所述对所述主包和所述至少一个分包分别生成所述主包摘要列表和所述至少一个分包摘要列表包括:运用hash算法对所述主包和所述至少一个分包分别生成所述主包摘要列表和所述至少一个分包摘要列表。
4.根据权利要求1所述的方法,其特征在于,所述方法包括:对所述包头进行签名得到签名信息,所述签名信息用于对所述包头进行校验;在所述第二应用包中写入所述签名信息。
5.根据权利要求1所述的方法,其特征在于,所述主包包括元信息文件,用于运行所述主包和所述至少一个分包。
6.根据权利要求1所述的方法,其特征在于,所述至少一个分包中的第一分包包括配置属性,用于声明所述第一分包是否依赖于所述主包运行。
7.根据权利要求6所述的方法,其特征在于,所述主包包括能力开放集,用于所述依赖于所述主包的分包获取元信息文件。
8.根据权利要求1所述的方法,其特征在于,所述方法包括:将由所述主包与所述主包中的至少一个所述应用的页面的映射关系、所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系、以及所述主包和所述至少一个分包在所述第一文件中的偏移量和大小信息构成包信息和所述第二应用包的下载地址同步到发送端口,用于客户端对所述第二应用包进行查询和下载。
9.一种应用包拆分和重组的装置,其特征在于,包括:收发器、处理器和存储器;所述存储器存储有一个或多个程序,所述一个或多个程序包括指令,当所述指令被所述装置执行时,使得所述装置执行根据权利要求1-8中的任意项所述的方法。
10.一种运行应用包的方法,所述方法由客户端实施,其特征在于,包括:
向服务器发送下载请求,所述下载请求用于请求下载应用对应的第二应用包;其中,所述第二应用包包括包头和第一文件;所述第一文件中保存有主包和至少一个分包,所述包头包括所述主包与所述主包中的至少一个所述应用的页面的映射关系、所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系、以及所述主包和所述至少一个分包在所述第一文件中的偏移量和大小;
下载所述包头;
下载所述第一文件中的所述主包;
根据所述包头中所述主包在所述第一文件中的偏移量和大小确定所述主包下载完成后,运行所述主包,并根据所述包头中的所述主包与所述主包的至少一个所述应用的页面的映射关系加载所述主包的至少一个所述应用的页面。
11.根据权利要求10所述的方法,其特征在于,还包括:
下载所述第一文件中的所述第一分包;其中,所述第一分包包括配置属性,声明所述第一分包依赖于所述主包运行;
根据所述包头中的所述至少一个分包在所述第一文件中的偏移量和大小,确定所述第一分包下载完成后,根据所述配置属性,通过所述主包中能力开放集获取元信息文件;
根据所述元信息文件,运行所述第一分包,并且根据所述第一分包与所述第一分包的至少一个所述应用的页面的映射关系加载所述第一分包的至少一个所述应用的页面。
12.根据权利要求10所述的方法,其特征在于,还包括:
下载所述第一文件中的所述第二分包;其中,所述第二分包包括配置属性,声明所述第二分包不依赖于所述主包运行;
根据所述包头中的所述至少一个分包在所述第一文件中的偏移量和大小,确定所述第二分包下载完成后,运行所述第二分包,并且根据所述第二分包与所述第二分包的至少一个所述应用的页面的映射关系加载所述第二分包的至少一个所述应用的页面。
13.根据权利要求10所述的方法,其特征在于,包括根据所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系,确定当前访问页面对应的第三分包,并且在所述第三分包不在本地文件中时,启动另一个线程下载所述第三分包。
14.根据权利要求10所述的方法,其特征在于,所述包头还包括所述主包的摘要列表和所述至少一个分包的摘要列表;
所述方法包括,获取所述主包摘要列表和所述至少一个分包摘要列表;
利用所述主包摘要列表和所述至少一个分包摘要列表对所述主包或所述至少一个分包进行校验。
15.根据权利要求14所述的方法,其特征在于,下载签名信息,所述签名信息是对所述包头签名而得到的;
所述方法包括,利用所述签名信息对所述包头进行校验。
16.一种运行应用包的装置,其特征在于,包括:收发器、处理器和存储器;所述存储器存储有一个或多个程序,所述一个或多个程序包括指令,当所述指令被所述装置执行时,使得所述装置执行根据权利要求10-15中的任意项所述的方法。
17.一种运行应用包的方法,所述方法由客户端实施,其特征在于,包括:
响应于加载应用的目标页面的请求,获取所述应用的名称;
根据所述应用的名称,向服务器发送查询请求,所述查询请求用于请求服务器下载所述应用对应的第二应用包的下载地址和包信息;其中所述第二应用包包括包头和第一文件,所述第一文件中保存有主包和至少一个分包,所述包头包括所述主包与所述主包中的至少一个所述应用的页面的映射关系、所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系、以及所述主包和所述至少一个分包在所述第一文件中的偏移量和大小;
接收所述下载地址和所述包信息;
根据所述包信息确定所述目标页面对应的目标分包后,根据所述下载地址在服务器中下载所述目标分包;并且在下载所述目标分包的同时,下载所述包头和所述第一文件中的所述主包;
根据所述主包,运行所述目标分包,并根据所述包头中的所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系加载所述目标页面。
18.根据权利要求17所述的方法,其特征在于,所述包信息包括所述主包与所述主包中的至少一个所述应用的页面的映射关系、所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系、以及所述主包和所述至少一个分包在所述第一文件中的偏移量和大小;
所述根据所述包信息确定所述目标页面对应的目标分包,包括:根据所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系,确定所述目标页面所对应的目标分包;确定所述目标分包的偏移量和大小。
19.根据权利要求18所述的方法,其特征在于,所述在下载所述目标分包的同时,下载所述包头和所述第一文件中的所述主包,具体包括:
启动第一线程和第二线程,所述第一线程用于根据所述目标分包的偏移量和大小从下载地址下载所述目标分包,所述第二线程用于下载所述包头和所述第一文件中的所述主包。
20.根据权利要求18所述的方法,其特征在于,所述目标分包包括配置属性,声明所述目标分包依赖于所述主包运行;
所述方法包括,在所述运行所述目标分包,并根据所述包头中的所述至少一个分包与所述至少一个分包中的至少一个所述应用的页面的映射关系加载所述目标页面之前,根据所述主包在所述第一文件中的偏移量和大小确定所述第一文件中的所述主包下载完成后,所述目标分包通过所述主包中的公共开放能力集获取元信息文件,运行所述目标分包。
21.根据权利要求17所述的方法,其特征在于,所述包头还包括所述主包的摘要列表和所述至少一个分包的摘要列表;
所述方法包括,获取所述主包摘要列表和所述至少一个分包摘要列表;
利用所述主包摘要列表和所述至少一个分包摘要列表对所述主包或所述至少一个分包进行校验。
22.根据权利要求21所述的方法,其特征在于,下载签名信息,所述签名信息是对所述包头签名而得到的;
所述方法包括,利用所述签名信息对所述包头进行校验。
23.一种运行应用包的装置,其特征在于,包括:收发器、处理器和存储器;所述存储器存储有一个或多个程序,所述一个或多个程序包括指令,当所述指令被所述装置执行时,使得所述装置执行根据权利要求17-22中的任意项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811595300.3A CN109814913B (zh) | 2018-12-25 | 2018-12-25 | 一种应用包拆分重组和运行的方法和装置 |
US17/418,115 US12001824B2 (en) | 2018-12-25 | 2019-12-03 | Application package splitting and reassembly method and apparatus, and application package running method and apparatus |
PCT/CN2019/122519 WO2020134893A1 (zh) | 2018-12-25 | 2019-12-03 | 一种应用包拆分重组和运行的方法和装置 |
EP19902930.7A EP3879398A4 (en) | 2018-12-25 | 2019-12-03 | METHOD FOR DIVISION AND RECOMBINATION OF APPLICATION SOFTWARE, METHOD FOR EXECUTING APPLICATION SOFTWARE, AND DEVICE |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811595300.3A CN109814913B (zh) | 2018-12-25 | 2018-12-25 | 一种应用包拆分重组和运行的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109814913A true CN109814913A (zh) | 2019-05-28 |
CN109814913B CN109814913B (zh) | 2020-09-18 |
Family
ID=66602385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811595300.3A Active CN109814913B (zh) | 2018-12-25 | 2018-12-25 | 一种应用包拆分重组和运行的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US12001824B2 (zh) |
EP (1) | EP3879398A4 (zh) |
CN (1) | CN109814913B (zh) |
WO (1) | WO2020134893A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110224841A (zh) * | 2019-06-26 | 2019-09-10 | 北京小米移动软件有限公司 | 应用包的下载方法、装置、设备及可读存储介质 |
CN110224842A (zh) * | 2019-06-26 | 2019-09-10 | 北京小米移动软件有限公司 | 应用包的下载方法、装置、设备及可读存储介质 |
WO2020134893A1 (zh) * | 2018-12-25 | 2020-07-02 | 华为技术有限公司 | 一种应用包拆分重组和运行的方法和装置 |
CN111399863A (zh) * | 2020-03-13 | 2020-07-10 | 深圳前海微众银行股份有限公司 | 依赖文件打包方法、装置、设备与计算机可读存储介质 |
CN111708990A (zh) * | 2020-05-15 | 2020-09-25 | 支付宝(杭州)信息技术有限公司 | 小程序启动方法、签名方法、装置、服务器及介质 |
CN113377424A (zh) * | 2021-06-23 | 2021-09-10 | 支付宝(杭州)信息技术有限公司 | 一种安装包处理方法、装置以及设备 |
CN113821252A (zh) * | 2021-09-24 | 2021-12-21 | 深圳市明源云采购科技有限公司 | 小程序的构建方法、装置、终端设备以及存储介质 |
CN111399863B (zh) * | 2020-03-13 | 2024-07-02 | 深圳前海微众银行股份有限公司 | 依赖文件打包方法、装置、设备与计算机可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102281325A (zh) * | 2011-06-30 | 2011-12-14 | 杭州斯凯网络科技有限公司 | 一种移动应用分包下载方法 |
CN104166576A (zh) * | 2014-08-27 | 2014-11-26 | 厦门美图之家科技有限公司 | 一种提供应用程序安装包的系统平台 |
CN104991793A (zh) * | 2015-06-15 | 2015-10-21 | 上海海漾软件技术有限公司 | 一种用于应用程序分包的方法、装置以及系统 |
US20160337724A1 (en) * | 2015-05-14 | 2016-11-17 | Huawei Technologies Co., Ltd. | System and Method for Photonic Switching |
US20170206106A1 (en) * | 2008-10-17 | 2017-07-20 | Dispersive Networks, Inc. | Dispersive storage area networks |
CN108419006A (zh) * | 2017-12-13 | 2018-08-17 | 天津天地伟业机器人技术有限公司 | 一种基于网络摄像机的大包升级方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8954654B2 (en) * | 2008-06-18 | 2015-02-10 | Super Talent Technology, Corp. | Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance |
CN101398853A (zh) | 2008-10-14 | 2009-04-01 | 北京大学 | 一种文件打包的方法和装置 |
CN101833464A (zh) | 2010-04-16 | 2010-09-15 | 深圳市五巨科技有限公司 | 一种移动终端分段加载应用程序的方法及装置 |
CN102902687B (zh) * | 2011-07-27 | 2015-09-09 | 华为软件技术有限公司 | 资源文件的访问方法及装置 |
CN103186399A (zh) | 2011-12-31 | 2013-07-03 | 深圳市快播科技有限公司 | 大型游戏包的下载方法及装置 |
CN103220308B (zh) | 2012-01-19 | 2018-07-03 | 腾讯科技(深圳)有限公司 | 一种文件下载方法、装置及系统 |
KR101376322B1 (ko) | 2012-03-09 | 2014-03-21 | 주식회사 네오위즈인터넷 | 휴대 단말의 어플리케이션 설치 제어 방법, 이를 이용하는 휴대 단말 및 어플리케이션 제공 서버 |
US10684807B2 (en) * | 2013-05-13 | 2020-06-16 | Xerox Corporation | Client based splitting of PDF/VT Dpart catalog |
CN104035804B (zh) | 2014-06-26 | 2017-11-17 | 北京中电普华信息技术有限公司 | 一种应用集成方法及装置 |
WO2016023471A1 (zh) * | 2014-08-11 | 2016-02-18 | 张锐 | 手写输入字符的处理、数据拆分和合并及编解码处理方法 |
US9998434B2 (en) * | 2015-01-26 | 2018-06-12 | Listat Ltd. | Secure dynamic communication network and protocol |
KR102000266B1 (ko) | 2016-01-15 | 2019-07-15 | 구글 엘엘씨 | 애플리케이션 인스턴스들에 걸친 식별자들 |
CN107291486B (zh) * | 2016-04-11 | 2020-12-04 | 新华三信息技术有限公司 | 一种操作系统的安装方法和装置 |
US9886303B2 (en) | 2016-06-15 | 2018-02-06 | International Business Machines Corporation | Specialized micro-hypervisors for unikernels |
US10552140B2 (en) * | 2018-01-31 | 2020-02-04 | Oracle International Corporation | Automated identification of deployment data for distributing discrete software deliverables |
CN108509110A (zh) * | 2018-03-30 | 2018-09-07 | 广州视源电子科技股份有限公司 | 分屏显示和操作的方法、装置、终端设备及存储介质 |
US10698673B2 (en) * | 2018-04-20 | 2020-06-30 | Red Hat, Inc. | Managing software installation |
CN109814913B (zh) | 2018-12-25 | 2020-09-18 | 华为终端有限公司 | 一种应用包拆分重组和运行的方法和装置 |
-
2018
- 2018-12-25 CN CN201811595300.3A patent/CN109814913B/zh active Active
-
2019
- 2019-12-03 WO PCT/CN2019/122519 patent/WO2020134893A1/zh unknown
- 2019-12-03 US US17/418,115 patent/US12001824B2/en active Active
- 2019-12-03 EP EP19902930.7A patent/EP3879398A4/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170206106A1 (en) * | 2008-10-17 | 2017-07-20 | Dispersive Networks, Inc. | Dispersive storage area networks |
CN102281325A (zh) * | 2011-06-30 | 2011-12-14 | 杭州斯凯网络科技有限公司 | 一种移动应用分包下载方法 |
CN104166576A (zh) * | 2014-08-27 | 2014-11-26 | 厦门美图之家科技有限公司 | 一种提供应用程序安装包的系统平台 |
US20160337724A1 (en) * | 2015-05-14 | 2016-11-17 | Huawei Technologies Co., Ltd. | System and Method for Photonic Switching |
CN104991793A (zh) * | 2015-06-15 | 2015-10-21 | 上海海漾软件技术有限公司 | 一种用于应用程序分包的方法、装置以及系统 |
CN108419006A (zh) * | 2017-12-13 | 2018-08-17 | 天津天地伟业机器人技术有限公司 | 一种基于网络摄像机的大包升级方法 |
Non-Patent Citations (3)
Title |
---|
J. YASSKIN: "Web Packaging", 《HTTPS://TOOLS.IETF.ORG/ID/DRAFT-YASSKIN-DISPATCH-WEB-PACKAGING-00.HTML》 * |
图解前端: "小程序如何使用分包加载的实现方法", 《HTTPS://WWW.JB51.NET/ARTICLE/161742.HTM》 * |
灿儿哈察苏: "Java简单实现大文件分包上传服务器大致思路", 《HTTPS://BLOG.CSDN.NET/FRANSIS/ARTICLE/DETAILS/80340426》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020134893A1 (zh) * | 2018-12-25 | 2020-07-02 | 华为技术有限公司 | 一种应用包拆分重组和运行的方法和装置 |
US12001824B2 (en) | 2018-12-25 | 2024-06-04 | Petal Cloud Technology Co., Ltd. | Application package splitting and reassembly method and apparatus, and application package running method and apparatus |
CN110224841A (zh) * | 2019-06-26 | 2019-09-10 | 北京小米移动软件有限公司 | 应用包的下载方法、装置、设备及可读存储介质 |
CN110224842A (zh) * | 2019-06-26 | 2019-09-10 | 北京小米移动软件有限公司 | 应用包的下载方法、装置、设备及可读存储介质 |
CN111399863A (zh) * | 2020-03-13 | 2020-07-10 | 深圳前海微众银行股份有限公司 | 依赖文件打包方法、装置、设备与计算机可读存储介质 |
CN111399863B (zh) * | 2020-03-13 | 2024-07-02 | 深圳前海微众银行股份有限公司 | 依赖文件打包方法、装置、设备与计算机可读存储介质 |
CN111708990A (zh) * | 2020-05-15 | 2020-09-25 | 支付宝(杭州)信息技术有限公司 | 小程序启动方法、签名方法、装置、服务器及介质 |
WO2021228143A1 (zh) * | 2020-05-15 | 2021-11-18 | 支付宝(杭州)信息技术有限公司 | 小程序启动方法、签名方法、装置、服务器及介质 |
CN113377424A (zh) * | 2021-06-23 | 2021-09-10 | 支付宝(杭州)信息技术有限公司 | 一种安装包处理方法、装置以及设备 |
CN113821252A (zh) * | 2021-09-24 | 2021-12-21 | 深圳市明源云采购科技有限公司 | 小程序的构建方法、装置、终端设备以及存储介质 |
CN113821252B (zh) * | 2021-09-24 | 2024-05-14 | 深圳市明源云采购科技有限公司 | 小程序的构建方法、装置、终端设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20220107796A1 (en) | 2022-04-07 |
EP3879398A4 (en) | 2022-01-19 |
WO2020134893A1 (zh) | 2020-07-02 |
EP3879398A1 (en) | 2021-09-15 |
CN109814913B (zh) | 2020-09-18 |
US12001824B2 (en) | 2024-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109814913A (zh) | 一种应用包拆分重组和运行的方法和装置 | |
US7716306B2 (en) | Data caching based on data contents | |
US10411956B2 (en) | Enabling planned upgrade/downgrade of network devices without impacting network sessions | |
US10587544B2 (en) | Message processing method, processing server, terminal, and storage medium | |
US8850027B2 (en) | Hardware acceleration for remote desktop protocol | |
CN104349176B (zh) | 自适应流媒体系统、下载方法及流媒体服务器、用户终端 | |
KR101120796B1 (ko) | 세션 기술 메시지 확장 | |
US20170324846A1 (en) | Hardware-based packet editor | |
CN104602138B (zh) | 一种使流媒体服务器支持hls协议的方法及装置 | |
US8224981B2 (en) | Accelerated multimedia file download and playback | |
US10021195B2 (en) | Cross-device synchronization system for account-level information | |
WO2021056865A1 (zh) | 一种数据一致性校验方法及数据上传下载装置 | |
US20130007860A1 (en) | Streaming video to cellular phones | |
JP2023523242A (ja) | データ処理方法、データ処理装置、コンピュータ機器、及びコンピュータプログラム | |
WO2023103318A1 (zh) | 媒体流传输方法和系统 | |
KR20130086753A (ko) | 컨텐츠의 중복 여부를 확인할 수 있는 휴대용 단말기의 장치 및 방법 | |
CN102857547B (zh) | 分布式缓存的方法及设备 | |
US8224890B1 (en) | Reusing data in content files | |
CN113204721A (zh) | 请求处理方法、节点及存储介质 | |
JP2000222273A (ja) | ドキュメントダウンロードシステム | |
WO2024060874A1 (zh) | 设备升级方法、系统、装置及计算机可读存储介质 | |
CN115314490A (zh) | 一种资源更新方法、装置、设备及存储介质 | |
CN113111282A (zh) | 一种网页资源访问方法、装置、终端及存储介质 | |
KR20050020033A (ko) | 프로그램 목록 관리 방법 | |
WO2022167482A1 (en) | Identification of compressed net resources |
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: 20220517 Address after: 523799 Room 101, building 4, No. 15, Huanhu Road, Songshanhu Park, Dongguan City, Guangdong Province Patentee after: Petal cloud Technology Co.,Ltd. Address before: 523000 South factory building (phase I), No.2, Xincheng Avenue, Songshanhu high tech Industrial Development Zone, Dongguan City, Guangdong Province Patentee before: HUAWEI DEVICE Co.,Ltd. |
|
TR01 | Transfer of patent right |