冗余资源的确定方法、装置、终端设备与存储介质与流程

文档序号:14554454阅读:427来源:国知局
冗余资源的确定方法、装置、终端设备与存储介质与流程

本发明涉及计算机技术领域,尤其涉及一种冗余资源的确定方法、装置、终端设备与存储介质。



背景技术:

在软件开发过程中,为了让软件有更好的表现,经常会需要迭代已有的软件资源;在资源迭代过程中不可避免的会导致资源数量越来越多,客户端越来越大。但是原则上,被迭代后的资源,并不需要继续存在于游戏客户端中。所以如何准确的确定软件中的冗余资源,并且对冗余资源进行删除处理,减小客户端大小,是很需要解决的问题。

现有技术中确定冗余资源的方案主要有以下两种。

方案一:通过正则表达式在资源库中搜索资源名来确定资源是否有被引用,如果某一资源有被搜索到,则认为该资源有被其他资源引用,并将其排除于冗余资源;反之如果该资源没有被搜索到,则认为该资源没有被其他资源引用,判定其属于冗余资源。

方案一的缺点在于效率与准确性都很低。资源库中的资源数量是很庞大的,按照方案一的方法需要每个资源都进行正则表达式搜索,因此需要消耗很长的时间,效率低下;同时,正则表达式搜索的方式仅适合直接使用资源名进行搜索的方式,当引用方式比较复杂时,正则表达式搜索很可能会出现搜索不到有被引用的资源,从而出现错删资源,准确性较低。

方案二:利用引用规则来确定所有被引用的资源,这里的引用规则需要预先配置或者获取。各种软件都会以一定的规则加载各种资源。比如需要显示模型文件,那么一定需要预先加载至少一个纹理文件,一个材质文件,才可以显示正常的模型文件;比如需要在游戏中显示一个物品的图标,那么会通过物品id,获取策划表中定义的对应的图标文件名,来加载正确的图标文件;通过模型文件如何知道它依赖于哪个贴图文件,通过物品id如何获取正确的图标文件,就叫做引用规则。例如安卓软件对资源的引用规则最常见就只有两种,当然在不同的软件程序中所使用的引用规则可能不同。具体地,每条引用规则可以确定一个有被其他资源引用的集合,以下称为有效资源集合,那么所有引用规则的有效资源集合的并集即构成有效资源总集,将每个资源与所述有效资源总集进行对比,将不属于这个有效资源总集的资源都归为冗余资源。方案二由于基于引用规则来判断有被引用的资源所以准确性有所提高,减少了出现误删的情况。

本申请的发明人发现方案二虽然能够提高准确性,但是依然存在效率还是比较低的问题。原因在于,方案二是通过确定哪些资源没有被引用,哪些资源有被引用来确定冗余资源和非冗余资源的,但是方案二并没有进一步确定有被引用的资源实际上被哪些资源引用。本申请的发明人发现,当一个资源仅被已知的冗余资源所引用,那么该资源也没有被有效引用,也应该被纳入到冗余资源进行删除。而在方案二中,每次遍历所述资源库的资源都只能找出当前没有被引用的资源并从中确定冗余资源来删除,在删除之后再次遍历所述资源库的资源来确认是否还有冗余资源。例如,资源a仅被资源b引用,资源b没有被任何其他资源所引用,在第一次遍历时,资源b由于没有被任何其他资源所引用所以被认为是冗余资源,资源a由于被资源b引用,资源a被认为不是冗余资源。在将资源b删除后,再遍历一次所有剩下的资源,可以发现由于资源b被删除了,资源a也没有被任何其他资源所引用,资源a成为了新的冗余资源。

可见,这里的资源a和资源b都是属于冗余资源,但在方案二中一开始只能确定资源b是冗余资源,之后再进行删除当前的冗余资源(包括资源b)之后才能发现资源a也是冗余资源。因此按照方案二的方式并不能一次确定所有的冗余资源,在删除一遍冗余资源后,可能会出现新的冗余资源,还需要再次遍历剩下的所有资源来确定还有没有冗余资源,如果发现有再次删除。可见由于方案二在确定冗余资源时不够全面准确,影响了后续删除冗余资源的效率。



技术实现要素:

本发明的目的是提出一种冗余资源的确定方法、装置、终端设备与存储介质,可以全面准确地确定资源库中的所有的冗余资源,为后续一次过删除冗余资源做好准备,从而提高了删除冗余资源的效率。

为了达到上述的目的,本发明实施例一方面提供了一种冗余资源的确定方法,包括:

根据预先获取的资源引用规则确定资源库中每个资源与其他资源之间的引用关系;

根据所述资源库中每个资源与其他资源之间的引用关系构建所述资源库的双向资源引用图;

通过遍历所述双向资源引用图来获取所有无效资源作为所述资源库中的冗余资源;所述无效资源是指没有被有效引用的资源。

优选地,所述没有被有效引用的资源包括没有被其他资源引用并且属于特定资源类型的资源,以及仅被其他无效资源所引用的资源。

优选地,所述每个资源与其他资源之间的引用关系包括每个资源的父节点资源与子节点资源;所述父节点资源为所述资源库中引用所述资源的其他资源;所述子节点资源为所述资源库中被所述资源引用的其他资源。

优选地,所述通过遍历所述双向资源引用图来获取所有无效资源作为所述资源库中的冗余资源,包括:

通过遍历所述双向资源引用图来获取所述资源库中没有父节点资源的资源;

获取所述没有父节点资源的资源中的无效资源并根据获取到的无效资源更新无效资源集合;

当所述无效资源集合中存在新增的无效资源时,获取所述新增的无效资源的所有子节点资源中的无效资源并根据获取到的无效资源更新所述无效资源集合;其中,当所述新增的无效资源的第i个子节点资源的所有父节点资源均属于为无效资源时,判定所述i个子节点为无效资源;

当所述新增的无效资源的所有子节点资源中不存在无效资源时,将所述无效资源集合中的所有无效资源作为所述冗余资源。

优选地,所述获取没有父节点资源的资源中的无效资源并根据获取到的无效资源更新无效资源集合,包括:

确定所述没有父节点资源的资源的资源类型;

当所述资源类型为美术资源时,确定所述没有父节点资源的资源为无效资源;当所述资源类型为策划表或程序代码时,确定所述没有父节点资源的资源为有效资源;

根据所述没有父节点资源的资源中的无效资源更新所述无效资源集合。

优选地,所述方法还包括:

在确定资源库中每个资源与其他资源之间的引用关系之前,解析所述资源库中资源类型为美术资源的资源,得到美术资源对其他资源的引用规则;以及解析所述资源库中资源类型为策划表的资源,得到策划表对其他资源的引用规则;以及解析所述资源库中资源类型为程序代码的资源,得到程序代码对其他资源的引用规则;

根据所述美术资源对其他资源的引用规则、所述策划表对其他资源的引用规则以及所述程序代码对其他资源的引用规则,得到所述资源引用规则。

优选地,所述方法还包括:

遍历所述资源库中的每个资源,生成每个资源的res结构信息;所述res结构信息包括所述资源的资源类型以及用于标记所述资源是否有效的标记信息;其中,所述标记信息初始设置为有效;

当所述资源被确定为无效资源时,将所述资源的res结构信息中记载的标记信息修改为无效以供后续判断使用。

优选地,所述方法还包括:

在确定所述冗余资源之后,检查所述冗余资源以判断是否需要补充引用规则;

当需要补充引用规则时将待补充的引用规则更新到所述资源引用规则以重新确定所述冗余资源。

优选地,所述方法还包括:

当不需要补充引用规则时,删除所述冗余资源以释放所述冗余资源所占用的存储空间。

优选地,所述在获取到所述冗余资源之后,检查所述冗余资源以判断是否需要补充引用规则,包括:

在获取到所述冗余资源之后,通过正则表达式搜索所述冗余资源以确定所述冗余资源是否被引用;

当搜索到有被引用的冗余资源时,判定需要补充引用规则并根据所述被引用的冗余资源获取待补充的引用规则。

优选地,所述在获取到所述冗余资源之后,检查所述冗余资源以判断是否需要补充引用规则,包括:

在获取到所述冗余资源之后,检查所述资源库中的每个资源文件夹的冗余资源占比与冗余资源数量;所述冗余资源占比是指所述资源文件夹中冗余资源数量与所述资源文件夹内的总资源数量的比例;

当存在一个资源文件夹的冗余资源占比大于预设比例阈值或冗余资源数量大于预设的数量阈值时,判定需要补充引用规则并根据所述资源文件夹内的冗余资源获取待补充的引用规则。

优选地,所述方法还包括:

在程序运行过程中检查是否发生报错;

当发生报错时,根据报错的文件定位报错的原因;

根据报错的原因获取待补充的引用规则并将所述待补充的引用规则更新到所述资源引用规则。

为了达到相同的目的,本发明实施例第二方面提供了一种冗余资源删除装置,包括:

引用关系确定模块,用于根据预先获取的资源引用规则确定资源库中每个资源与其他资源之间的引用关系;

引用图构建模块,用于根据所述资源库中每个资源与其他资源之间的引用关系构建所述资源库的双向资源引用图;

冗余资源获取模块,用于通过遍历所述双向资源引用图来获取所有无效资源作为所述资源库中的冗余资源;所述无效资源是指没有被有效引用的资源。

为了达到相同的目的,本发明实施例第三方面提供了一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的冗余资源的确定方法。

为了达到相同的目的,本发明实施例第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述第一方面所述的冗余资源的确定方法。

相比于现有技术,本发明实施例的有益效果在于:本发明实施例提供了一种冗余资源的确定方法、装置、终端设备与存储介质,方法包括根据预先获取的资源引用规则确定资源库中每个资源与其他资源之间的引用关系;根据所述资源库中每个资源与其他资源之间的引用关系构建所述资源库的双向资源引用图;通过遍历所述双向资源引用图来获取所有无效资源作为所述资源库中的冗余资源;所述无效资源是指没有被有效引用的资源;对所述冗余资源进行删除处理。比起利用引用规则来找冗余资源的方式来说,本发明实施例找到的冗余资源更加全面完整,无需循环地删除冗余资源与遍历剩下的资源,只需要遍历一次双向资源引用图即可找到所有的冗余资源,在后续将冗余资源删除之后不会再出现新的冗余资源,即可以全面准确地确定资源库中的所有的冗余资源,为后续一次过删除冗余资源做好准备,从而提高了删除冗余资源的效率。

附图说明

图1是本发明实施例提供的一种冗余资源的确定方法的流程示意图;

图2其是步骤s2所构建的双向资源引用图的一个简单视图;

图3是图1中的步骤s3的具体流程示意图;

图4是本发明实施例提供的一种冗余资源删除装置的结构示意图;

图5是图4中的冗余资源获取模块3的结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,其是本发明实施例提供的一种冗余资源的确定方法的流程示意图。所述方法包括:

s1,根据预先获取的资源引用规则确定资源库中每个资源与其他资源之间的引用关系;

s2,根据所述资源库中每个资源与其他资源之间的引用关系构建所述资源库的双向资源引用图;

s3,通过遍历所述双向资源引用图来获取所有无效资源作为所述资源库中的冗余资源;所述无效资源是指没有被有效引用的资源。

在步骤s1中,资源引用规则有很多种,对于每个资源,找到适用的资源引用规则即可找到该资源引用了那些资源,从而得到资源库中每个资源与其他资源之间的引用关系。

在本发明实施例中,在确定冗余资源时并非只考虑当前没有被引用的资源,而是考虑没有被有效引用的资源,即无效资源。通过所述双向资源引用图可以找到所有的无效资源作为冗余资源,因此确定到的冗余资源是更全面更准确的,使得一次过删除所述冗余资源后不会再产生新的冗余资源。

在一种可选的实施方式中,所述没有被有效引用的资源包括没有被其他资源引用的资源,以及仅被其他无效资源所引用的资源。更具体地,所述没有被有效引用的资源包括没有被其他资源引用并且属于特定资源类型的资源,以及仅被其他无效资源所引用的资源。

如图2所示,其是步骤s2所构建的双向资源引用图的一个简单视图。图2中的每个节点代表一个资源,为了简要说明,图2中的模型为资源库中仅有资源a到资源n,但实际上资源库的资源数量远不止这个数量。所谓的双向是指对于同一个资源,能够同时确定该资源引用了那些资源以及被那些资源所引用,图2中的箭头指向为被引用的资源指向需要引用的资源,例如资源d引用了资源e和资源h,同时资源d被资源b和资源c所引用。步骤s2构建的双向资源引用图的过程可以理解为:将资源库中的资源作为节点布置在双向资源引用图上,根据所述引用关系利用箭头连接引用与被引用的两个节点,从而构建所述双向资源引用图。

需要说明的是,由于资源库中的资源数量是很庞大的,每个资源可以引用多个资源,也可以被多个资源引用,所以所述双向资源引用图总体上呈一个复杂的网状结构。但是无论结构再复杂,所述双向资源引用图中总会存在没有被其他资源所引用的资源(如图2中的资源a、资源b与资源m)。没有被其他资源所引用的资源并不一定就是无效资源,只有满足特定资源类型的资源才会被认为是无效资源,否则所有的资源都会认为是无效资源。

为了说明步骤s3中通过遍历所述双向资源引用图来获取所有无效资源作为所述资源库中的冗余资源的过程,以下假设图2中的资源a与资源m均为无效资源,资源b为有效资源。那么通过遍历所述双向资源引用图,可以发现除了资源a和资源m为无效资源之外,由于资源c仅被资源a所引用,资源l仅被资源m所引用,所以资源c和资源l属于没有被有效引用的资源,即资源c和资源m也属于无效资源;资源n同时被资源l和资源c所引用,但由于资源c和资源m也属于无效资源,所以资源n属于没有被有效引用的资源,即资源n也为无效资源。需要说明的是,资源d同时被资源b和资源c所引用,由于资源b是有效资源,所以资源d并不属于无效资源。因此通过遍历所述双向资源引用图,可以找到资源库中所有没有被有效引用的资源(即无效资源),从而确定资源库中的冗余资源。在图2中冗余资源以黑色圈表示,包括资源a、c、l、m、n。

本发明实施例提供的冗余资源的确定方法根据预先获取的引用规则获取每个资源与其他资源的引用关系并根据所述引用关系构建双向资源引用图,根据双向资源引用图可以找到所有没有被有效引用的资源作为冗余资源,比起利用引用规则来找冗余资源的方式来说,本发明实施例找到的冗余资源更加全面完整,无需循环地删除冗余资源与遍历剩下的资源,只需要遍历一次双向资源引用图即可找到所有的冗余资源,在后续将冗余资源删除之后不会再出现新的冗余资源,即可以全面准确地确定资源库中的所有的冗余资源,为后续一次过删除冗余资源做好准备,从而提高了删除冗余资源的效率。

此外,因为构建了“双向资源引用图”,可以清晰的了解任何资源之间的关系,因此除了为删除冗余资源做基础外,还可以提供资源引用检查,资源物理位置查询,资源使用情况查询,资源迭代完整性检查等一系列的资源检查工具,用途广泛。

在一种可选的实施方式中,所述每个资源与其他资源之间的引用关系包括每个资源的父节点资源与子节点资源;所述父节点资源为所述资源库中引用所述资源的其他资源;所述子节点资源为所述资源库中被所述资源引用的其他资源。例如对于图2中的资源d来说,其父节点资源包括资源b和资源c,其子节点资源包括资源e和资源h,以此类推。

如图3所示,其是图1中的步骤s3的具体流程示意图。步骤s3中的通过遍历所述双向资源引用图来获取所有无效资源作为所述资源库中的冗余资源,包括:

s31,通过遍历所述双向资源引用图来获取所述资源库中没有父节点资源的资源;

s32,获取所述没有父节点资源的资源中的无效资源并根据获取到的无效资源更新无效资源集合;

s33,当所述无效资源集合中存在新增的无效资源时,获取所述新增的无效资源的所有子节点资源中的无效资源并根据获取到的无效资源更新所述无效资源集合;其中,当所述新增的无效资源的第i个子节点资源的所有父节点资源均属于为无效资源时,判定所述i个子节点为无效资源;

s34,当所述新增的无效资源的所有子节点资源中不存在无效资源时,将所述无效资源集合中的所有无效资源作为所述冗余资源。

上述具体说明了步骤s3中如何通过遍历所述双向资源引用图来获取所述冗余资源的过程。由于无效资源满足其没有父节点资源或者其父节点资源均是其他的无效资源,那么先在没有父节点资源的资源中确定无效资源,再从无效资源的所有子节点资源中确定新的无效资源,按照上述方式进行递归,当新的无效资源的所有子节点资源中找不到无效资源了,此时递归结束,所有确定的无效资源即为所述冗余资源。

以下以图2的双向资源引用图为例说明步骤s3的实现过程。

1、经过步骤s31和步骤s32确定资源a和m为无效资源,此时无效资源集合从空集变为{a,m},即新增的无效资源包括资源a和资源m,新增的无效资源的所有子节点资源包括资源c和资源l;

2、由于资源c的父节点资源为资源a且资源a为无效资源,则资源c确定为无效资源;由于资源l的父节点资源为资源m且资源m为无效资源,则资源l确定为无效资源,所述无效资源集合从{a,m}变为{a,m,c,l},新增的无效资源包括资源c和资源l,新增的无效资源的所有子节点资源包括资源n和资源d;

3、由于资源n的父节点资源为资源c和资源l且资源c和资源l均为无效资源,则资源n确定为无效资源;由于资源d的父节点资源为资源b和资源c,且资源b为有效资源,则资源d属于有效引用的资源,资源d不属于无效资源。因此所述无效资源集合从{a,m,c,l}变为{a,m,c,l,n},新增的无效资源包括资源n,新增的无效资源没有子节点资源,因此递归结束。

4、当前的无效资源集合{a,m,c,l,n}中的所有无效资源即为冗余资源。

需要说明的是,步骤s31~步骤s34仅是本发明实施例的步骤s3的一个具体实施方式,本发明实施例旨在通过遍历所述双向资源引用图来获取所有没有被有效引用的资源作为冗余资源,因此只要能够通过遍历所述双向资源引用图来获取所有无效资源作为所述资源库中的冗余资源的方式都是可选的。

在一种可选的实施方式中,所述获取所述没有父节点资源的资源中的无效资源并根据获取到的无效资源更新无效资源集合,包括:

确定所述没有父节点资源的资源的资源类型;

当所述资源类型为美术资源时,确定所述没有父节点资源的资源为无效资源;当所述资源类型为策划表或程序代码时,确定所述没有父节点资源的资源为有效资源;

根据所述没有父节点资源的资源中的无效资源更新所述无效资源集合。

软件程序的资源主要包括策划表、程序代码与美术资源。在软件程序迭代过程中,产生冗余资源的主要是美术资源,例如是图标、贴图等等,而策划表和程序代码基本不会产生冗余资源,所以删除冗余资源实际上是针对美术资源。所以本发明实施例中,如果没有父节点资源的资源为美术资源则认为其是无效资源,如果没有父节点资源的资源为策划表或者程序代码,则不被认为为无效资源。实际上,虽然策划表或者程序代码没有被其他资源所引用,它们还是会被其他功能模块所调用,如果将其认为是无效资源而删除则很可能会影响软件程序的正常运行,所以不能认为它们是无效资源被删除它们。

在一种可选的实施方式中,所述方法还包括:

在确定资源库中每个资源与其他资源之间的引用关系之前,解析所述资源库中资源类型为美术资源的资源,得到美术资源对其他资源的引用规则;以及解析所述资源库中资源类型为策划表的资源,得到策划表对其他资源的引用规则;以及解析所述资源库中资源类型为程序代码的资源,得到程序代码对其他资源的引用规则;

根据所述美术资源对其他资源的引用规则、所述策划表对其他资源的引用规则以及所述程序代码对其他资源的引用规则,得到所述资源引用规则。

由于软件资源中主要组成是美术资源、策划表与程序代码,那么预先根据这三种资源类型进行资源解析,即可得到所有的引用规则。如果得到的资源引用规则越丰富,那么构建的双向资源引用图也会越完善,获取冗余资源的准确性也会越高,进一步减少了出现误删的情况。以上的获取资源引用规则的过程称为正向构建引用规则的过程。

在一种可选的实施方式中,所述方法还包括:

遍历所述资源库中的每个资源,生成每个资源的res结构信息;所述res结构信息包括所述资源的资源类型以及用于标记所述资源是否有效的标记信息;其中,所述标记信息初始设置为有效;

当所述资源被确定为无效资源时,将所述资源的res结构信息中记载的标记信息修改为无效以供后续判断使用。

由于预先生成每个资源的res结构信息,在需要判断所述资源的资源类型和是否有效时,只需查询其res结构信息,因此进一步提高了获取冗余资源的效率。

在正向构建引用规则的过程中,很可能会出现遗漏的规则,导致找到的冗余资源并不够完整,因此希望通过逆向搜索的方式,对已构建的规则进行遗漏检查和补充。

在一种可选的实施方式中,所述方法还包括:

在确定所述冗余资源之后,检查所述冗余资源以判断是否需要补充引用规则;

当需要补充引用规则时将待补充的引用规则更新到所述资源引用规则以重新获取所述冗余资源。

通过逆向搜索的方式,很好的补充遗漏的资源引用规则,完善“双向资源引用图”,且可以在恢复误删资源时,准确的恢复误删资源,避免恢复无效资源需要说明的是,当资源引用规则发生变化时,需要根据相同的方法重新获取冗余资源,直到不需要补充引用规则,此时确定到的冗余资源是最全面并且准确性最高。

在一种可选的实施方式中,当不需要补充引用规则时,删除所述冗余资源以释放所述冗余资源所占用的存储空间。

在一种可选的实施方式中,所述检查所述冗余资源以判断是否需要补充引用规则,包括:

通过正则表达式搜索所述冗余资源以确定所述冗余资源是否被引用;

当搜索到有被引用的冗余资源时,判定需要补充引用规则并根据所述被引用的冗余资源获取待补充的引用规则。

在该方法中,可以使用完整文件名,部分文件名,不带扩展名的文件名,文件路径等关键字进行正则表达式搜索整个资源库,查看是否有遗漏资源。

例如,如果希望检查f1/f2/f3/a_b.arp资源是否有被引用到,则可以用以下关键字进行项目搜索:a_b.arp;a_*.arp;a_b;f1/f2/f3等。

由于采用正则表达式搜索资源是否有被引用到是现有技术,因而在本发明实施例中不再赘述。

在另一种可选的实施方式中,所述检查所述冗余资源以判断是否需要补充引用规则,包括:

检查所述资源库中的每个资源文件夹的冗余资源占比与冗余资源数量;所述冗余资源占比是指所述资源文件夹中冗余资源数量与所述资源文件夹内的总资源数量的比例;

当存在一个资源文件夹的冗余资源占比大于预设比例阈值或冗余资源数量大于预设的数量阈值时,判定需要补充引用规则并根据所述资源文件夹内的冗余资源获取待补充的引用规则。

在本发明实施例中,检查所有的资源文件夹,如果有某个资源文件夹大多数资源文件(90%以上)属于冗余资源,或者冗余资源特别多(比如超过100个),需要优先检查是否有资源引用规则被遗漏。

软件项目的资源文件夹结构通常有合理设计,因此同功能文件经常会放在同个文件夹内。因此如果某文件夹有大量“冗余资源”的时候,有可能是这个文件夹在迭代过程中被废弃使用,也可能是双向资源引用图中遗漏了该资源文件夹相关的资源引用规则。

因此当存在一个资源文件夹的冗余资源占比大于预设比例阈值或冗余资源数量大于预设的数量阈值时,需要根据根据所述资源文件夹内的冗余资源获取待补充的引用规则。

在一种可选的实施方式中,所述方法还包括:

在程序运行过程中检查是否发生报错;

当发生报错时,根据报错的文件定位报错的原因;

根据报错的原因获取待补充的引用规则并将所述待补充的引用规则更新到所述资源引用规则。

例如游戏过程中如果发生资源缺失,往往会触发客户端报错。因此在进行游戏正常测试流程时,收集所有客户端的日志,根据报错的文件,定位其报错的原因,进而可以寻找到遗漏的资源引用规则。

请参阅图4,其是本发明实施例提供的一种冗余资源删除装置的结构示意图。所述冗余资源删除装置用于执行图1所述的冗余资源的确定方法,包括:

引用关系确定模块1,用于根据预先获取的资源引用规则确定资源库中每个资源与其他资源之间的引用关系;

引用图构建模块2,用于根据所述资源库中每个资源与其他资源之间的引用关系构建所述资源库的双向资源引用图;

冗余资源确定模块3,用于通过遍历所述双向资源引用图来获取所有无效资源作为所述资源库中的冗余资源;所述无效资源是指没有被有效引用的资源;

请参阅图5,其是图4中的冗余资源确定模块3的结构框图。在一种可选的实施方式中,所述每个资源与其他资源之间的引用关系包括每个资源的父节点资源与子节点资源;所述父节点资源为所述资源库中引用所述资源的其他资源;所述子节点资源为所述资源库中被所述资源引用的其他资源;

所述冗余资源获取模块3包括:

第一资源获取单元31,用于通过遍历所述双向资源引用图来获取所述资源库中没有父节点资源的资源;

第二资源获取单元32,用于获取所述没有父节点资源的资源中的无效资源并根据获取到的无效资源更新无效资源集合;

第三资源获取单元33,用于当所述无效资源集合中存在新增的无效资源时,获取所述新增的无效资源的所有子节点资源中的无效资源并根据获取到的无效资源更新所述无效资源集合;其中,当所述新增的无效资源的第i个子节点资源的所有父节点资源均属于为无效资源时,判定所述i个子节点为无效资源;

冗余资源确定单元34,用于当所述新增的无效资源的所有子节点资源中不存在无效资源时,将所述无效资源集合中的所有无效资源作为所述冗余资源。

在一种可选的实施方式中,所述第二资源获取单元32具体用于:

确定所述没有父节点资源的资源的资源类型;

当所述资源类型为美术资源时,确定所述没有父节点资源的资源为无效资源;当所述资源类型为策划表或程序代码时,确定所述没有父节点资源的资源为有效资源;

根据所述没有父节点资源的资源中的无效资源更新所述无效资源集合。

在一种可选的实施方式中,所述装置还包括:

资源解析模块,用于在确定资源库中每个资源与其他资源之间的引用关系之前,解析所述资源库中资源类型为美术资源的资源,得到美术资源对其他资源的引用规则;以及解析所述资源库中资源类型为策划表的资源,得到策划表对其他资源的引用规则;以及解析所述资源库中资源类型为程序代码的资源,得到程序代码对其他资源的引用规则;

引用规则获取模块,用于根据所述美术资源对其他资源的引用规则、所述策划表对其他资源的引用规则以及所述程序代码对其他资源的引用规则,得到所述资源引用规则。

在一种可选的实施方式中,所述装置还包括:

结构信息生成模块,用于遍历所述资源库中的每个资源,生成每个资源的res结构信息;所述res结构信息包括所述资源的资源类型以及用于标记所述资源是否有效的标记信息;其中,所述标记信息初始设置为有效;

标记信息修改模块,用于当所述资源被确定为无效资源时,将所述资源的res结构信息中记载的标记信息修改为无效以供后续判断使用。

在一种可选的实施方式中,所述装置还包括:

冗余资源检查模块,用于在确定所述冗余资源之后,检查所述冗余资源以判断是否需要补充引用规则;

第一引用规则更新模块,用于当需要补充引用规则时将待补充的引用规则更新到所述资源引用规则以重新获取所述冗余资源。

在一种可选的实施方式中,所述装置还包括:

冗余资源删除模块,用于当不需要补充引用规则时,删除所述冗余资源以释放所述冗余资源所占用的存储空间。

在一种可选的实施方式中,所述冗余资源检查模块具体用于:

通过正则表达式搜索所述冗余资源以确定所述冗余资源是否被引用;

当搜索到有被引用的冗余资源时,判定需要补充引用规则并根据所述被引用的冗余资源获取待补充的引用规则。

在另一种可选的实施方式中,所述冗余资源检查模块具体用于:

检查所述资源库中的每个资源文件夹的冗余资源占比与冗余资源数量;所述冗余资源占比是指所述资源文件夹中冗余资源数量与所述资源文件夹内的总资源数量的比例;

当存在一个资源文件夹的冗余资源占比大于预设比例阈值或冗余资源数量大于预设的数量阈值时,判定需要补充引用规则并根据所述资源文件夹内的冗余资源获取待补充的引用规则。

在一种可选的实施方式中,所述装置还包括:

报错检查模块,用于在程序运行过程中检查是否发生报错;

报错原因定位模块,用于当发生报错时,根据报错的文件定位报错的原因;

第二引用规则更新模块,用于根据报错的原因获取待补充的引用规则并将所述待补充的引用规则更新到所述资源引用规则。

需要说明的是,本发明实施例提供的一种冗余资源确定装置用于执行上述一种冗余资源的确定方法的所有方法流程,两者的工作原理和有益效果一一对应,因而不再赘述。

相应地,本发明实施例还提供了一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述的冗余资源的确定方法实施例中的步骤,例如图1所示的步骤s1~s3;或者所述处理器执行所述计算机程序时实现上述的冗余资源删除装置实施例中各模块/单元的功能,例如图4中的各个模块。

示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述终端设备中的执行过程。

所述终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器、存储器。

所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

其中,所述终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。

相应地,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述的冗余资源的确定方法实施例中的步骤,例如图1所示的步骤s1~s3。

基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

相比于现有技术,本发明实施例的有益效果在于:本发明实施例提供了一种冗余资源的确定方法、装置、终端设备与存储介质,方法包括根据预先获取的资源引用规则确定资源库中每个资源与其他资源之间的引用关系;根据所述资源库中每个资源与其他资源之间的引用关系构建所述资源库的双向资源引用图;通过遍历所述双向资源引用图来获取所有无效资源作为所述资源库中的冗余资源;所述无效资源是指没有被有效引用的资源。比起利用引用规则来找冗余资源的方式来说,本发明实施例找到的冗余资源更加全面完整,无需循环地删除冗余资源与遍历剩下的资源,只需要遍历一次双向资源引用图即可找到所有的冗余资源,在后续将冗余资源删除之后不会再出现新的冗余资源,即可以全面准确地确定资源库中的所有的冗余资源,为后续一次过删除冗余资源做好准备,从而提高了删除冗余资源的效率。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1