数据打包方法及装置制造方法

文档序号:6637562阅读:413来源:国知局
数据打包方法及装置制造方法
【专利摘要】本发明公开了一种数据打包方法及装置,该数据打包方法包括:获取目标动态链接库的元数据信息;根据元数据信息创建依赖关系树,其中,依赖关系树的节点包括父节点和子节点,子节点为父节点的依赖项,父节点包括根节点,根节点为目标动态链接库;以及根据依赖关系树对目标动态链接库进行打包。通过本发明,解决了相关技术中没有工程文件的动态链接库文件打包效率低的问题,进而达到了提高没有工程文件的动态链接库文件打包效率的效果。
【专利说明】数据打包方法及装置

【技术领域】
[0001]本发明涉及数据处理领域,具体而言,涉及一种数据打包方法及装置。

【背景技术】
[0002]数据包开发工具,例如,是免费、开源的包管理开发工具,专注于在.肥I'应用开发过程中,简单地合并第三方的组件库。如阴丨组件库基于.肥I工程文件进行打包时具有依赖项分析功能,在利用如阴丨组件库打包时需要配置目标文件的依赖项,其中,依赖项是指目标文件所引用的文件或是程序等,例如,当某个程序或动态链接库11^11匕虹7,简称为01)使用其他动态链接库中的函数时,就会创建依赖项。现有技术中,由于.肥I工程文件中包含的程序间有所引用时可以方便的知道依赖关系,得到依赖项,但是在没有.工程文件只有动态链接库文件时,无法直接找到该动态链接库文件的依赖项,因此需要人工的进行动态链接库文件的依赖项分析,处理过程十分繁琐,打包效率较低。
[0003]针对相关技术中没有工程文件的动态链接库文件打包效率低的问题,目前尚未提出有效的解决方案。


【发明内容】

[0004]本发明的主要目的在于提供一种数据打包方法及装置,以解决相关技术中没有工程文件的动态链接库文件打包效率低的问题。
[0005]为了实现上述目的,根据本发明的一个方面,提供了一种数据打包方法。
[0006]根据本发明的数据打包方法包括:获取目标动态链接库的元数据信息;根据元数据信息创建依赖关系树,其中,依赖关系树的节点包括父节点和子节点,子节点为父节点的依赖项,父节点包括根节点,根节点为目标动态链接库;以及根据依赖关系树对目标动态链接库进行打包。
[0007]进一步地,根据元数据信息创建依赖关系树包括:根据元数据信息查找目标动态链接库的依赖项,得到第一依赖项,其中,第一依赖项作为依赖关系树的第一级子节点;获取第一依赖项的元数据信息;以及根据第一依赖项的元数据信息查找第二依赖项,其中,第二依赖项为第一依赖项的依赖项,并且第二依赖项为第一依赖项的子节点。
[0008]进一步地,子节点包括叶节点,根据依赖关系树对目标动态链接库进行打包包括:从根节点遍历依赖关系树,得到依赖关系树的所有节点;以及依次从依赖关系树的叶节点至依赖关系树的根节点对依赖关系树的每个节点进行打包。
[0009]进一步地,子节点包括叶节点,根据依赖关系树对目标动态链接库进行打包包括:从根节点遍历依赖关系树,依次判断依赖关系树的每一个节点是否已经打包过;如果判断出依赖关系树存在已经打包过的节点,则不再遍历已经打包过的节点的子节点,得到遍历结果;以及根据遍历结果依次从依赖关系树的叶节点至依赖关系树的根节点对依赖关系树的每个节点进行打包,其中,对于已经打包过的节点不再进行打包。
[0010]进一步地,在根据元数据信息查找目标动态链接库的依赖项之后,该方法还包括:从目标动态链接库的依赖项中获取自定义的动态链接库;以及将自定义的动态链接库的作为依赖关系树的第一级子节点。
[0011]为了实现上述目的,根据本发明的另一方面,提供了一种数据打包装置。
[0012]根据本发明的数据打包装置包括:第一获取单元,用于获取目标动态链接库的元数据信息;创建单元,用于根据元数据信息创建依赖关系树,其中,依赖关系树的节点包括父节点和子节点,子节点为父节点的依赖项,父节点包括根节点,根节点为目标动态链接库;以及打包单元,用于根据依赖关系树对目标动态链接库进行打包。
[0013]进一步地,创建单元包括:根据元数据信息查找目标动态链接库的依赖项,得到第一依赖项,其中,第一依赖项作为依赖关系树的第一级子节点;获取第一依赖项的元数据信息;以及根据第一依赖项的元数据信息查找第二依赖项,其中,第二依赖项为第一依赖项的依赖项,并且第二依赖项为第一依赖项的子节点。
[0014]进一步地,子节点包括叶节点,打包单元包括:遍历单元,用于从根节点遍历依赖关系树,得到依赖关系树的所有节点;以及打包单元,用于依次从依赖关系树的叶节点至依赖关系树的根节点对依赖关系树的每个节点进行打包。
[0015]进一步地,子节点包括叶节点,打包单元包括:判断模块,用于从根节点遍历依赖关系树,依次判断依赖关系树的每一个节点是否已经打包过;如果判断出依赖关系树存在已经打包过的节点,则不再遍历已经打包过的节点的子节点,得到遍历结果;以及根据遍历结果依次从依赖关系树的叶节点至依赖关系树的根节点对依赖关系树的每个节点进行打包,其中,对于已经打包过的节点不再进行打包。
[0016]进一步地,该装置还包括:第二获取单元,用于从目标动态链接库的依赖项中获取自定义的动态链接库;以及确定单元,用于将自定义的动态链接库的作为依赖关系树的第一级子节点。
[0017]通过本发明,采用自动分析动态链接库的依赖关系树,并根据依赖关系树对依赖关系树的每个节点进行打包,解决了相关技术中没有工程文件的动态链接库文件打包效率低的问题,进而达到了提高没有工程文件的动态链接库文件打包效率的效果。

【专利附图】

【附图说明】
[0018]构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0019]图1是根据本发明实施例的数据打包方法的流程图;
[0020]图2是根据本发明实施例的依赖关系树的示意图;以及
[0021]图3是根据本发明实施例的数据打包装置的示意图。

【具体实施方式】
[0022]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
[0023]为了使本【技术领域】的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0024]需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0025]根据本发明实施例,提供了一种数据打包方法,图1是根据本发明实施例的数据打包方法的流程图。
[0026]如图1所示,该方法包括如下的步骤3102至步骤3106:
[0027]步骤3102:获取目标动态链接库的元数据信息。
[0028]动态链接库((071131111(3 1111^ 11131^1*7,简称为01)是一个包含可由多个程序同时使用的代码和数据的库。动态链接库包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。动态链接库的使用有助于共享数据和资源,多个应用程序可同时访问内存中单个动态链接库副本的内容。目标动态链接库是指需要打包的动态链接库,可以是一个动态链接库,也可以是多个动态链接库。元数据(16仏也仏)是描述信息资源或数据等对象的数据,其使用目的在于识别资源、评价资源、追踪资源在使用过程中的变化等。在目标动态链接库的元数据信息中描述了该动态链接库引用的对象,即该动态链接库的依赖项。依赖项是指目标文件所引用的文件或是程序等,例如,当动态链接库使用其他动态链接库中的函数时,就会创建依赖项。具体地,元数据信息具有固定的格式,在目标动态链接库中的文件头中描述了该目标动态链接库中的元数据信息的位置信息,通过该位置信息可以获取到该目标动态链接库中的元数据信息。
[0029]步骤3104:根据元数据信息创建依赖关系树,其中,依赖关系树的节点包括父节点和子节点,子节点为父节点的依赖项,父节点包括根节点,根节点为目标动态链接库。
[0030]如上所述,在目标动态链接库中的元数据信息中包含该目标动态链接库的依赖项。依赖关系树用于描述目标动态链接库与其依赖项的依赖关系,以及该目标动态链接库的依赖项与该目标动态链接库的依赖项的依赖性的依赖关系,依次类推。在依赖关系树中,子节点为父节点的依赖项,如图2所示的依赖关系树中,根节点为该目标动态链接库,与该根节点连接的子节点1为目标动态链接库的依赖项,子节点2、子节点3和叶子节点1是子节点1的依赖项,叶子节点3是子节点3的依赖项,叶子节点2、子节点4和子节点5是子节点2的依赖项,叶子节点4既是子节点4的依赖项,也是子节点5的依赖项。具体地,根据元数据信息创建依赖关系树包括:根据元数据信息查找目标动态链接库的依赖项,得到第一依赖项,其中,第一依赖项作为依赖关系树的第一级子节点;获取第一依赖项的元数据信息;以及根据第一依赖项的元数据信息查找第二依赖项,其中,第二依赖项为第一依赖项的依赖项,并且第二依赖项为第一依赖项的子节点。
[0031]第一依赖项为根据元数据信息查找到的目标动态链接库的依赖项,第一依赖项可能不存在,也可能是一个,也可能是多个。本发明实施例以第一依赖项的个数大于零为例进行说明。在得到第一依赖项后,获取第一依赖项的元数据信息,根据第一依赖项的元数据信息查找第二依赖项,其中,第二依赖项为第一依赖项的依赖项,在得到第二依赖项后,继续获取第二依赖项的依赖项,依次类推,直到最后得到的依赖项不存在依赖项为止。优选地,为了提高对目标动态链接库打包的效率,在根据元数据信息查找目标动态链接库的依赖项之后,该方法还包括:从目标动态链接库的依赖项中获取自定义的动态链接库;以及将自定义的动态链接库的作为依赖关系树的第一级子节点。
[0032]本发明实施例对目标动态链接库进行打包是基于如8的组件进行打包的,如86七组件是基于.肥I开发平台进行包管理开发。通常,.肥I开发平台会自带许多的动态链接库,对于.肥I开发平台自带的动态链接库无需进行打包在开发过程中即可调用,因此,本发明实施例可以从目标动态链接库的依赖项中获取自定义的动态链接库,即非.肥I开发平台自带的动态链接库,具体地,可以通过判断目标动态链接库的依赖项的存储路径进行判断,对于.肥I开发平台自带的动态链接库通常存储于.肥I开发平台软件安装包的一个文件夹下,自定义的动态链接库则存储于用户自定义的存储位置。对于依赖关系树中其他节点的依赖项的查找,同样采用上述方法查找出自定义的动态链接项作为依赖关系树的节点。
[0033]步骤3106:根据依赖关系树对目标动态链接库进行打包。
[0034]通过上述方法得到依赖关系树后,对依赖关系树的每一个节点进行打包并上传至如阴丨组件的服务器中,实现自动的对没有工程文件的动态链接库进行打包。可选地,子节点包括叶节点,根据依赖关系树对目标动态链接库进行打包包括:从根节点遍历依赖关系树,得到依赖关系树的所有节点;以及依次从依赖关系树的叶节点至依赖关系树的根节点对依赖关系树的每个节点进行打包。
[0035]从根节点开始遍历整个依赖关系树,得到该依赖关系树的所有节点,依次从该依赖关系树的叶子节点至根节点进行打包,并上传至如阴丨组件的服务器中。
[0036]优选地,为了提高打包的效率,子节点包括叶节点,根据依赖关系树对目标动态链接库进行打包包括:从根节点遍历依赖关系树,依次判断依赖关系树的每一个节点是否已经打包过;如果判断出依赖关系树存在已经打包过的节点,则不再遍历已经打包过的节点的子节点,得到遍历结果;以及根据遍历结果依次从依赖关系树的叶节点至依赖关系树的根节点对依赖关系树的每个节点进行打包,其中,对于已经打包过的节点不再进行打包。
[0037]在从根节点遍历依赖关系树时,依次判断每个节点是否已经打包过,在遇到某个节点已经打包过时,则不再遍历该节点的子节点。如图2所示,如果判断出子节点3已经打包过,此时可以不再遍历叶子节点3。在完成整个依赖关系树的遍历后,根据遍历结果,对那些没有打包过的节点从叶子节点至根节点依次进行打包,并上传至如阴丨组件的服务器中。优选地,对于多个节点公用一个子节点的依赖关系项进行打包时,该子节点只需打包依次,如图2所示的依赖关系树,叶子节点4既是子节点4的依赖项,也是子节点5的依赖项,如果先对依赖关系树中叶子节点4至子节点4分支进行打包,此时,在对依赖关系树中叶子节点4至子节点5分支进行打包时,由于叶子节点4已经打包,此时可以直接调用叶子节点4对应的包,无需再次对叶子节点4进行打包。通过上述方式可以减少依赖关系树中需要打包的节点的数量,从而可以提高打包效率。
[0038]从以上的描述中,可以看出,本发明实现了如下技术效果:
[0039]本发明实施例通过获取目标动态链接库的元数据信息,根据元数据信息创建依赖关系树,以及根据依赖关系树对目标动态链接库进行打包,实现自动分析目标动态链接库的依赖项,并创建依赖关系树,通过依赖关系树描述的依赖关系对依赖关系树的每个节点进行打包并上传至如阴丨组件的服务器,实现自动对没有工程文件的动态链接库进行打包,解决了没有工程文件的动态链接库文件打包效率低的问题。
[0040]需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0041]根据本发明实施例的另一方面,提供了一种数据打包装置,该数据打包装置可以用于执行本发明实施例的数据打包方法,本发明实施例的数据打包方法也可以通过本发明实施例的数据打包装置来执行。
[0042]图3是根据本发明实施例的数据打包装置的示意图,如图3所示,该数据打包装置包括:第一获取单元10、创建单元20和打包单元30。
[0043]第一获取单元10,用于获取目标动态链接库的元数据信息。
[0044]动态链接库((071131111(3 1111^ 11131^1*7,简称为01)是一个包含可由多个程序同时使用的代码和数据的库。目标动态链接库是指需要打包的动态链接库,可以是一个动态链接库,也可以是多个动态链接库。元数据(16仏也仏)是描述信息资源或数据等对象的数据,其使用目的在于识别资源、评价资源、追踪资源在使用过程中的变化等。在目标动态链接库的元数据信息中描述了该动态链接库引用的对象,即该动态链接库的依赖项。
[0045]创建单元20,用于根据元数据信息创建依赖关系树,其中,依赖关系树的节点包括父节点和子节点,子节点为父节点的依赖项,父节点包括根节点,根节点为目标动态链接库。
[0046]如上所述,在目标动态链接库中的元数据信息中包含该目标动态链接库的依赖项。依赖关系树用于描述目标动态链接库与其依赖项的依赖关系,以及该目标动态链接库的依赖项与该目标动态链接库的依赖项的依赖性的依赖关系,依次类推。
[0047]打包单元30,用于根据依赖关系树对目标动态链接库进行打包。
[0048]通过上述方法得到依赖关系树后,对依赖关系树的每一个节点进行打包并上传至如阴丨组件的服务器中,实现自动的对没有工程文件的动态链接库进行打包。
[0049]本发明实施例通过第一获取单元30获取目标动态链接库的元数据信息,创建单元20根据元数据信息创建依赖关系树,其中,依赖关系树的节点包括父节点和子节点,子节点为父节点的依赖项,父节点包括根节点,根节点为目标动态链接库,以及打包单元30根据依赖关系树对目标动态链接库进行打包并上传至如阴丨组件的服务器,实现自动对没有工程文件的动态链接库进行打包,解决了没有工程文件的动态链接库文件打包效率低的问题。
[0050]可选地,创建单元20包括:根据元数据信息查找目标动态链接库的依赖项,得到第一依赖项,其中,第一依赖项作为依赖关系树的第一级子节点;获取第一依赖项的元数据信息;以及根据第一依赖项的元数据信息查找第二依赖项,其中,第二依赖项为第一依赖项的依赖项,并且第二依赖项为第一依赖项的子节点。
[0051]第一依赖项为根据元数据信息查找到的目标动态链接库的依赖项,第一依赖项可能不存在,也可能是一个,也可能是多个。本发明实施例以第一依赖项的个数大于零为例进行说明。在得到第一依赖项后,获取第一依赖项的元数据信息,根据第一依赖项的元数据信息查找第二依赖项,其中,第二依赖项为第一依赖项的依赖项,在得到第二依赖项后,继续获取第二依赖项的依赖项,依次类推,直到最后得到的依赖项不存在依赖项为止。
[0052]可选地,子节点包括叶节点,打包单元30包括:遍历单元,用于从根节点遍历依赖关系树,得到依赖关系树的所有节点;以及打包单元,用于依次从依赖关系树的叶节点至依赖关系树的根节点对依赖关系树的每个节点进行打包。
[0053]优选地,子节点包括叶节点,打包单元30包括:判断模块,用于从根节点遍历依赖关系树,依次判断依赖关系树的每一个节点是否已经打包过;如果判断出依赖关系树存在已经打包过的节点,则不再遍历已经打包过的节点的子节点,得到遍历结果;以及根据遍历结果依次从依赖关系树的叶节点至依赖关系树的根节点对依赖关系树的每个节点进行打包,其中,对于已经打包过的节点不再进行打包。
[0054]优选地,该2装置还包括:第二获取单元,用于从目标动态链接库的依赖项中获取自定义的动态链接库;以及确定单元,用于将自定义的动态链接库的作为依赖关系树的第一级子节点。
[0055]显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0056]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种数据打包方法,其特征在于,包括: 获取目标动态链接库的元数据信息; 根据所述元数据信息创建依赖关系树,其中,所述依赖关系树的节点包括父节点和子节点,所述子节点为所述父节点的依赖项,所述父节点包括根节点,所述根节点为所述目标动态链接库;以及 根据所述依赖关系树对所述目标动态链接库进行打包。
2.根据权利要求1所述的数据打包方法,其特征在于,根据所述元数据信息创建依赖关系树包括: 根据所述元数据信息查找所述目标动态链接库的依赖项,得到第一依赖项,其中,所述第一依赖项作为所述依赖关系树的第一级子节点; 获取所述第一依赖项的元数据信息;以及 根据所述第一依赖项的元数据信息查找第二依赖项,其中,所述第二依赖项为所述第一依赖项的依赖项,并且所述第二依赖项为所述第一依赖项的子节点。
3.根据权利要求1所述的数据打包方法,其特征在于,所述子节点包括叶节点,根据所述依赖关系树对所述目标动态链接库进行打包包括: 从所述根节点遍历所述依赖关系树,得到所述依赖关系树的所有节点;以及依次从所述依赖关系树的叶节点至所述依赖关系树的根节点对所述依赖关系树的每个节点进行打包。
4.根据权利要求1所述的数据打包方法,其特征在于,所述子节点包括叶节点,根据所述依赖关系树对所述目标动态链接库进行打包包括: 从所述根节点遍历所述依赖关系树,依次判断所述依赖关系树的每一个节点是否已经打包过; 如果判断出所述依赖关系树存在已经打包过的节点,则不再遍历所述已经打包过的节点的子节点,得到遍历结果;以及 根据所述遍历结果依次从所述依赖关系树的叶节点至所述依赖关系树的根节点对所述依赖关系树的每个节点进行打包,其中,对于所述已经打包过的节点不再进行打包。
5.根据权利要求2所述的数据打包方法,其特征在于,在根据所述元数据信息查找所述目标动态链接库的依赖项之后,所述方法还包括: 从所述目标动态链接库的依赖项中获取自定义的动态链接库;以及 将所述自定义的动态链接库的作为所述依赖关系树的第一级子节点。
6.一种数据打包装置,其特征在于,包括: 第一获取单元,用于获取目标动态链接库的元数据信息; 创建单元,用于根据所述元数据信息创建依赖关系树,其中,所述依赖关系树的节点包括父节点和子节点,所述子节点为所述父节点的依赖项,所述父节点包括根节点,所述根节点为所述目标动态链接库;以及 打包单元,用于根据所述依赖关系树对所述目标动态链接库进行打包。
7.根据权利要求6所述的数据打包装置,其特征在于,所述创建单元包括: 根据所述元数据信息查找所述目标动态链接库的依赖项,得到第一依赖项,其中,所述第一依赖项作为所述依赖关系树的第一级子节点; 获取所述第一依赖项的元数据信息;以及 根据所述第一依赖项的元数据信息查找第二依赖项,其中,所述第二依赖项为所述第一依赖项的依赖项,并且所述第二依赖项为所述第一依赖项的子节点。
8.根据权利要求6所述的数据打包装置,其特征在于,所述子节点包括叶节点,所述打包单元包括: 遍历单元,用于从所述根节点遍历所述依赖关系树,得到所述依赖关系树的所有节点;以及 打包单元,用于依次从所述依赖关系树的叶节点至所述依赖关系树的根节点对所述依赖关系树的每个节点进行打包。
9.根据权利要求6所述的数据打包装置,其特征在于,所述子节点包括叶节点,所述打包单元包括: 判断模块,用于从所述根节点遍历所述依赖关系树,依次判断所述依赖关系树的每一个节点是否已经打包过; 如果判断出所述依赖关系树存在已经打包过的节点,则不再遍历所述已经打包过的节点的子节点,得到遍历结果;以及 根据所述遍历结果依次从所述依赖关系树的叶节点至所述依赖关系树的根节点对所述依赖关系树的每个节点进行打包,其中,对于所述已经打包过的节点不再进行打包。
10.根据权利要求7所述的数据打包装置,其特征在于,所述装置还包括: 第二获取单元,用于从所述目标动态链接库的依赖项中获取自定义的动态链接库;以及 确定单元,用于将所述自定义的动态链接库的作为所述依赖关系树的第一级子节点。
【文档编号】G06F17/30GK104462352SQ201410738626
【公开日】2015年3月25日 申请日期:2014年12月4日 优先权日:2014年12月4日
【发明者】崔维福, 张娜 申请人:北京国双科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1