CN110147237B - 一种冗余资源去除方法和装置 - Google Patents
一种冗余资源去除方法和装置 Download PDFInfo
- Publication number
- CN110147237B CN110147237B CN201910419474.2A CN201910419474A CN110147237B CN 110147237 B CN110147237 B CN 110147237B CN 201910419474 A CN201910419474 A CN 201910419474A CN 110147237 B CN110147237 B CN 110147237B
- Authority
- CN
- China
- Prior art keywords
- resource
- resources
- detected
- redundant
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
- G06F8/4435—Detection or removal of dead or redundant code
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种冗余资源去除方法和装置,针对需要去冗余的待检测资源集合,通过读取待检测资源集合中资源的静态文件,获取待检测资源集合中资源对应的第一引用关系。进一步可以确定出待检测资源集合中的重复资源,根据重复资源确定出冗余资源和保留资源,以及冗余资源在第一引用关系中对应的子引用关系。通过更新可以将第一引用关系修正为第二引用关系,在从待检测资源集合中删除冗余资源后,可以根剩余资源和第二引用关系构建安装包。可见,在不需要启动游戏引擎的情况下,通过读取静态文件即可获取与待检测资源集合相关的引用关系,使得在快速准确去冗余后可以正确的调整引用关系,保证了减负后安装包能够正常运行,提高了去冗余效率。
Description
技术领域
本申请涉及数据处理领域,特别是涉及一种冗余资源去除方法和装置。
背景技术
Unity3D(简称unity)是现行流行综合型游戏引擎,市面上多款热门手游都是基于Unity3D开发。在运行游戏时,需要调用当前游戏所需的游戏资源,游戏资源是组成游戏的一部分,包括角色模型,贴图,特效,场景,音乐等等,有各种各样的文件类型。这些资源会占据给玩家安装游戏的安装包(例如ipa、apk格式)大部分存储空间。
安装包中具有较大比例的用于公用的游戏资源,即当调用某个或某些游戏资源时,这个或这些游戏资源的正常加载运行依赖于公用的游戏资源。例如游戏资源中包括游戏人物A和游戏人物B,这两个游戏人物都可以做出动作C,故当调用游戏人物A和游戏人物B时,还需要调用动作C的游戏资源,故动作C的游戏资源可以视为公用的游戏资源。故在一种传统的游戏资源构建方式中,针对任一游戏资源,会将该游戏资源与其依赖的公用的游戏资源放在一起打包到同一个目录中,由于不同的游戏资源可能会依赖同一个公用的游戏资源,故导致同一个公用的游戏资源可能存在于不同的目录中,由此打包生成的安装包会造成手机或者电脑存储空间的浪费,并且需要消耗玩家额外的网络流量进行下载,这些冗余资源理应从安装包中清除出去。
然而,目前这种冗余资源监测方法均需要通过启动游戏引擎进行,当待检测游戏资源集合容量过大时,启动引擎会消耗大量时间,甚至导致引擎崩溃。故有效快速去除冗余资源是目前亟需解决的问题。
发明内容
为了解决上述技术问题,本申请提供了一种冗余资源去除方法和装置,保证了减负后安装包能够正常运行,提高了去冗余效率。
本申请实施例公开了如下技术方案:
第一方面,本申请实施例提供了一种冗余资源去除方法,所述方法包括:
根据待检测资源集合中资源的静态文件,获取待检测资源集合中资源对应的第一引用关系;
确定待检测资源集合中的重复资源;
根据所述重复资源确定冗余资源和保留资源,以及所述冗余资源在所述第一引用关系中对应的子引用关系;
将所述子引用关系更新至所述保留资源,以将所述第一引用关系修正为第二引用关系;
从所述待检测资源集合中删除所述冗余资源,并根据所述第二引用关系构建安装包。
第二方面,本申请实施例提供了一种冗余资源去除装置,所述装置包括获取单元、确定单元、更新单元和构建单元:
所述获取单元,用于根据待检测资源集合中资源的静态文件,获取待检测资源集合中资源对应的第一引用关系;
所述确定单元,用于确定待检测资源集合中的重复资源;
所述确定单元还用于根据所述重复资源确定冗余资源和保留资源,以及所述冗余资源在所述第一引用关系中对应的子引用关系;
所述更新单元,用于将所述子引用关系更新至所述保留资源,以将所述第一引用关系修正为第二引用关系;
所述构建单元,用于从所述待检测资源集合中删除所述冗余资源,并根据所述第二引用关系构建安装包。
第三方面,本申请实施例提供了一种用于冗余资源去除的设备,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行第一方面所述的冗余资源去除方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行第一方面所述的冗余资源去除方法。
由上述技术方案可以看出,针对需要去冗余的待检测资源集合,不需要启动游戏引擎,通过读取待检测资源集合中资源的静态文件,获取待检测资源集合中资源对应的第一引用关系,该第一引用关系可以体现出待检测资源集合中哪些资源被引用,哪些资源引用了其他资源等。进一步可以确定出待检测资源集合中的重复资源,根据重复资源确定出冗余资源和保留资源,以及冗余资源在第一引用关系中对应的子引用关系。通过该子引用关系,可以将与冗余资源相关的引用、被引用信息更新至保留资源,避免去冗余后出现引用问题。通过更新可以将第一引用关系修正为第二引用关系,在从待检测资源集合中删除冗余资源后,可以根剩余资源和第二引用关系构建安装包。可见,在不需要启动游戏引擎的情况下,通过读取静态文件即可获取与待检测资源集合相关的引用关系,使得在快速准确去冗余后可以正确的调整引用关系,保证了减负后安装包能够正常运行,提高了去冗余效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种冗余资源去除逻辑示意图;
图2为本申请实施例提供的一种冗余资源去除方法的方法流程图;
图3为本申请实施例提供的一种确定引用关系方式的代码示意图;
图4a为本申请实施例提供的冗余资源去除场景示意图之一;
图4b为本申请实施例提供的冗余资源去除场景示意图之一;
图5a为本申请实施例提供的冗余资源去除场景示意图之一;
图5b为本申请实施例提供的冗余资源去除场景示意图之一;
图6为本申请实施例提供的一种冗余资源去除总体框架图;
图7为本申请实施例提供的一种冗余资源去除装置的装置结构图;
图8为本申请实施例提供的一种终端设备的结构图;
图9为本申请实施例提供的一种服务器的结构图。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
目前为安装包去除冗余资源需要启动游戏引擎,当待检测游戏资源集合容量过大时,启动引擎会消耗大量时间,甚至导致引擎崩溃。
为此,本申请实施例提供了一种冗余资源去除方法和装置。针对需要去冗余的待检测资源集合,不需要启动游戏引擎,通过读取待检测资源集合中资源的静态文件,获取待检测资源集合中资源对应的第一引用关系,该第一引用关系可以体现出待检测资源集合中哪些资源被引用,哪些资源引用了其他资源等。进一步可以确定出待检测资源集合中的重复资源,根据重复资源确定出冗余资源和保留资源,以及冗余资源在第一引用关系中对应的子引用关系。通过该子引用关系,可以将与冗余资源相关的引用、被引用信息更新至保留资源,避免去冗余后出现引用问题。通过更新可以将第一引用关系修正为第二引用关系,在从待检测资源集合中删除冗余资源后,可以根剩余资源和第二引用关系构建安装包。可见,在不需要启动游戏引擎的情况下,通过读取静态文件即可获取与待检测资源集合相关的引用关系,使得在快速准确去冗余后可以正确的调整引用关系,保证了减负后安装包能够正常运行,提高了去冗余效率。
本申请实施例主要针对的是基于unity开发的大型项目。如果项目对资源的磁盘占用空间以及资源下载量敏感,不希望有冗余的或者不需要的资源占用,且运行期间对运行效率有要求,可以使用本申请实施例进行检查冗余资源,检查出冗余资源后从资源库中删除的操作。
本申请实施例只执行在项目的资源库检查中,在产品使用中无感知,可将资源量优化到最简。执行过程可以如图1所示,脚本在执行完毕后,会输出csv格式的冗余资源路径,按路径对资源进行删除即可。
本申请实施例可以应用于智能终端中,也可以应用于服务器中,所处理的待检测资源集合属于针对一个游戏的游戏资源集合,该待检测资源集合可以配置所本申请实施例所应用的智能终端中或服务器中。待检测资源集合中的资源可以为针对某个游戏的各类游戏资源。
接下来通过附图2说明本申请实施例提供的一种冗余资源去除方法,所述方法包括:
S201:根据待检测资源集合中资源的静态文件,获取待检测资源集合中资源对应的第一引用关系。
待检测资源集合可以通过收集得到,收集所有资源(对于unity游戏来说一般就是prefab文件、场景文件等),称为A1、A2、A3.....因为每个资源都会有个.meta文件,meta文件中的guid可以作为各个文件的标记。称为A1-guid、A2-guid、A3-guid......。
在本申请实施例中,资源的静态文件中携带有待检测资源集合中资源间的引用关系,其中可以包括引用和被引用的具体信息。
在一种可选的实施方式中,静态文件包括后缀为.asset或者.controller或者.prefab的文件。
在本步骤中所获取的第一引用关系可以包括待检测资源集合中资源被引用的信息,也可以包括待检测资源集合中资源引用其他资源的信息,这里所述的其他资源包括在待检测资源集合中。
在一种可选的实施方式中,本步骤可以通过如下方式确定:
S2011:根据待检测资源集合中资源的静态文件,获取待检测资源集合中资源间的第三引用关系。
该第三引用关系体现了待检测资源集合中资源间的引用、被引用信息。
例如可以通过遍历.asset/.controller/.prefab后缀的文本文件,称为B1、B2、B3.....检查是否带有依赖其他资源guid,如图3为B1.controller文件的示意。通过图3可以看出,B1这个文本文件引用着上图两个guid的文件,假设被依赖的guid是A1-guid、A2-guid、那么就意味着A1、A2文件被B1依赖,或者说B1引用A1、A2。
S2012:根据代码文件确定所述待检测资源集合中被所述代码文件引用的游戏资源,得到所述待检测资源集合对应所述代码文件的第四引用关系。
代码文件过滤出依赖资源。有些资源被代码文件调用,没有展现在第三引用关系中。所以需要使用路径正则匹配去搜索代码,可以将搜到路径样式的资源的调用关系确定为第四引用关系。
S2013:根据策划数值表确定所述待检测资源集合中被所述策划数值表引用的游戏资源,到所述待检测资源集合对应所述策划数值表的第五引用关系。
策划数值表过滤除依赖资源。有些资源被策划数值表引用。没有展现在第三引用关系中。所以需要使用路径正则匹配去搜索策划数值表。可以将搜到路径样式的资源的调用关系确定为第五引用关系。
S2014:根据所述第三引用关系、所述第四引用关系和所述第五引用关系确定所述第一引用关系。
需要说明的是,前述S2011-S2013没有特定的执行先后顺序。
在获取第三、第四、第五引用关系后,可以根据这三种引用关系确定出第一引用关系。
第一引用关系可以如图4a所示,资源文件A1、A2、A3和B1、B2、B3建立起了引用关系。而A4未被B系列资源文件依赖,所以没有建立起引用关系。
S202:确定待检测资源集合中的重复资源。
本步骤与S201没有特定的执行先后顺序。
该重复资源为内容相同的游戏资源,可以通过摘要比对的方式确定。
在一种可选的实施方式中,计算所述待检测资源集合中资源分别对应的摘要信息。通过比对摘要信息确定所述重复资源。
检查每一个组成游戏资源的文件的md5码,当发现相同的md5就判定这些资源是一样的,只需要留下一份就可以,其他的作为冗余资源可以从待检测资源集合中删除。
S203:根据所述重复资源确定冗余资源和保留资源,以及所述冗余资源在所述第一引用关系中对应的子引用关系。
重复资源中如何区别冗余资源和保留资源本申请并不限定,可以将其中任意一份作为保留资源,其他均作为冗余资源。
由于在S201中确定出了第一引用关系,故可以通过第一引用关系确定出与冗余资源相关的引用关系,作为子引用关系。该子引用关系体现出冗余资源被引用信息和冗余资源引用其他资源的信息。
S204:将所述子引用关系更新至所述保留资源,以将所述第一引用关系修正为第二引用关系。
确定子引用关系的目的在于删除该冗余资源前,可以根据子引用关系,确定出子引用关系中涉及的、除了冗余资源之外的资源,并将这些资源根据子引用关系更新至保留资源。
以图4a为例,A2和A3为重复资源,将A2确定为保留资源,A3确定为冗余资源。A3对应的子引用关系为B2引用A3,基于该子引用关系更新至保留资源A2,即将原为B2引用A3的关系更新为B2引用A2。修正得到的第二引用关系可以如图4b所示。在图4b中还进一步的删除了冗余资源A3。
S205:从所述待检测资源集合中删除所述冗余资源,并根据所述第二引用关系构建安装包。
在S2011-S2014对应的实施例的基础上,通过第一引用关系除了可以确定出冗余资源,还可以确定出多余资源,即既没有引用其他资源,也不被引用的资源。这种多余资源也是需要被去除以降低安装包容量的资源。
故在一种可选的实施方式中,还可以从所述待检测资源集合中确定不涉及所述第一引用关系的多余资源。
进一步的,S205还可以为从所述待检测资源集合中删除所述冗余资源和所述多余资源,并根据所述第二引用关系构建安装包。
如图5a所示,图5a是在图4b的基础上,删除了冗余资源A3后,增加了A5的场景。在图5a中,A4和A5通过第一引用关系确定为未被其他对象例如代码文件和策划数值表引用,故确定属于多余资源。可以删除,删除后的如图5b所示。
由此可见,针对需要去冗余的待检测资源集合,不需要启动游戏引擎,通过读取待检测资源集合中资源的静态文件,获取待检测资源集合中资源对应的第一引用关系,该第一引用关系可以体现出待检测资源集合中哪些资源被引用,哪些资源引用了其他资源等。进一步可以确定出待检测资源集合中的重复资源,根据重复资源确定出冗余资源和保留资源,以及冗余资源在第一引用关系中对应的子引用关系。通过该子引用关系,可以将与冗余资源相关的引用、被引用信息更新至保留资源,避免去冗余后出现引用问题。通过更新可以将第一引用关系修正为第二引用关系,在从待检测资源集合中删除冗余资源后,可以根剩余资源和第二引用关系构建安装包。可见,在不需要启动游戏引擎的情况下,通过读取静态文件即可获取与待检测资源集合相关的引用关系,使得在快速准确去冗余后可以正确的调整引用关系,保证了减负后安装包能够正常运行,提高了去冗余效率。
本申请实施例的核心要点是通过资源的静态文件(.meta文件),代码和数值策划表准确获取资源的引用关系,通过引用关系筛选重复的和未被引用的冗余资源。检查的脚本流程如图6所示。
1、收集所有资源(对于unity游戏来说一般就是prefab文件、场景文件等),称为A1、A2、A3.....因为每个资源都会有个.meta文件,meta文件中的guid可以作为各个文件的标记。称为A1-guid、A2-guid、A3-guid......
2、获取依赖。遍历.asset/.controller/.prefab后缀的文本文件,称为B1、B2、B3.....
3、建立引用关系。由步骤2可以建立起所有文件的用关系。
4、计算重复资源。计算A1、A2、A3、A4所有资源的MD5,如果发现其中两个或者多个文件的MD5一样,那么可以认为这些文件是同一个文件,只需要保留一份即可。例如图4a中发现A2和A3的MD5一样,那么可以认为A2和A3是同一个文件。只保留A2或者A3其中一份即可。
5、删除资源并修复引用关系。步骤4中A2和A3假如MD5一致,那我们可以认为A3是冗余资源,并且删除A3,并且修改B系列文件中的引用关系。
6、通过引用关系筛选出未被依赖的资源。如图所示,建立引用关系之后,只要未被引用的资源就是未被依赖的资源。
7、代码文件过滤出依赖文件。可以和步骤6中的未被依赖文件进行比较,如果相同,则认为该资源文件被代码依赖,不是冗余资源。
8、策划数值表过滤除依赖资源。可以和步骤6中未被依赖的文件进行比较,如果相同,则认为该资源文件被数值表引用,不是冗余资源。
9、通过步骤7和步骤8的过滤,假设上图中A4、A5都没有被过滤掉。那么可以认为A4、A5是冗余资源。可以直接删除,不影响包体。
10、冗余资源去除完毕后,就可以开始按照去除冗余资源的资源库进行包体构建。
图7为本申请实施例提供的一种冗余资源去除装置的装置结构图,所述装置包括获取单元701、确定单元702、更新单元703和构建单元704:
所述获取单元701,用于根据待检测资源集合中资源的静态文件,获取待检测资源集合中资源对应的第一引用关系;
所述确定单元702,用于确定待检测资源集合中的重复资源;
所述确定单元702还用于根据所述重复资源确定冗余资源和保留资源,以及所述冗余资源在所述第一引用关系中对应的子引用关系;
所述更新单元703,用于将所述子引用关系更新至所述保留资源,以将所述第一引用关系修正为第二引用关系;
所述构建单元704,用于从所述待检测资源集合中删除所述冗余资源,并根据所述第二引用关系构建安装包。
可选的,所述获取单元还用于:
根据待检测资源集合中资源的静态文件,获取待检测资源集合中资源间的第三引用关系;
根据代码文件确定所述待检测资源集合中被所述代码文件引用的游戏资源,得到所述待检测资源集合对应所述代码文件的第四引用关系;
根据策划数值表确定所述待检测资源集合中被所述策划数值表引用的游戏资源,到所述待检测资源集合对应所述策划数值表的第五引用关系;
根据所述第三引用关系、所述第四引用关系和所述第五引用关系确定所述第一引用关系。
可选的,所述确定单元还用于从所述待检测资源集合中确定不涉及所述第一引用关系的多余资源;
所述构建单元还用于从所述待检测资源集合中删除所述冗余资源和所述多余资源,并根据所述第二引用关系构建安装包。
可选的,所述静态文件包括后缀为.asset或者.controller或者.prefab的文件。
可选的,所述确定单元还用于:
计算所述待检测资源集合中资源分别对应的摘要信息;
通过比对摘要信息确定所述重复资源。
本申请实施例还提供了一种用于冗余资源去除的设备,下面结合附图对用于冗余资源去除的设备进行介绍。请参见图8所示,本申请实施例提供了一种用于冗余资源去除的设备700,该设备700还可以是终端设备,该终端设备可以为包括手机、平板电脑、个人数字助理(Personal Digital Assistant,简称PDA)、销售终端(Point of Sales,简称POS)、车载电脑等任意智能终端,以终端设备为手机为例:
图8示出的是与本申请实施例提供的终端设备相关的手机的部分结构的框图。参考图8,手机包括:射频(Radio Frequency,简称RF)电路710、存储器720、输入单元730、显示单元740、传感器750、音频电路760、无线保真(wireless fidelity,简称WiFi)模块770、处理器780、以及电源790等部件。本领域技术人员可以理解,图7中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图8对手机的各个构成部件进行具体的介绍:
RF电路710可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器780处理;另外,将设计上行的数据发送给基站。通常,RF电路710包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low NoiseAmplifier,简称LNA)、双工器等。此外,RF电路710还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System of Mobile communication,简称GSM)、通用分组无线服务(GeneralPacket Radio Service,简称GPRS)、码分多址(Code Division Multiple Access,简称CDMA)、宽带码分多址(Wideband Code Division Multiple Access,简称WCDMA)、长期演进(Long Term Evolution,简称LTE)、电子邮件、短消息服务(Short Messaging Service,简称SMS)等。
存储器720可用于存储软件程序以及模块,处理器780通过运行存储在存储器720的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器720可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器720可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元730可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元730可包括触控面板731以及其他输入设备732。触控面板731,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板731上或在触控面板731附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板731可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器780,并能接收处理器780发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板731。除了触控面板731,输入单元730还可以包括其他输入设备732。具体地,其他输入设备732可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元740可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元740可包括显示面板741,可选的,可以采用液晶显示器(Liquid CrystalDisplay,简称LCD)、有机发光二极管(Organic Light-Emitting Diode,简称OLED)等形式来配置显示面板741。进一步的,触控面板731可覆盖显示面板741,当触控面板731检测到在其上或附近的触摸操作后,传送给处理器780以确定触摸事件的类型,随后处理器780根据触摸事件的类型在显示面板741上提供相应的视觉输出。虽然在图7中,触控面板731与显示面板741是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板731与显示面板741集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器750,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板741的亮度,接近传感器可在手机移动到耳边时,关闭显示面板741和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路760、扬声器761,传声器762可提供用户与手机之间的音频接口。音频电路760可将接收到的音频数据转换后的电信号,传输到扬声器761,由扬声器761转换为声音信号输出;另一方面,传声器762将收集的声音信号转换为电信号,由音频电路760接收后转换为音频数据,再将音频数据输出处理器780处理后,经RF电路710以发送给比如另一手机,或者将音频数据输出至存储器720以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块770可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图7示出了WiFi模块770,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器780是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器720内的软件程序和/或模块,以及调用存储在存储器720内的数据,执行手机的各种功能和处理数据。可选的,处理器780可包括一个或多个处理单元;优选的,处理器780可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器780中。
手机还包括给各个部件供电的电源790(比如电池),优选的,电源可以通过电源管理系统与处理器780逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本实施例中,该终端设备所包括的处理器780还具有以下功能:
获取待查媒体的媒体特征和备选视频对应的图像特征;所述待查媒体包括目标对象,所述备选视频中包括运动对象;
根据所述图像特征以及备选视频中所述运动对象的运动时序信息,确定所述备选视频的视频特征;
根据所述媒体特征以及所述视频特征,确定所述备选视频中的所述运动对象是否与所述目标对象相关。
本申请实施例提供的用于冗余资源去除的设备可以是服务器,请参见图9所示,图9为本申请实施例提供的服务器800的结构图,服务器800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,简称CPU)822(例如,一个或一个以上处理器)和存储器832,一个或一个以上存储应用程序842或数据844的存储介质830(例如一个或一个以上海量存储设备)。其中,存储器832和存储介质830可以是短暂存储或持久存储。存储在存储介质830的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器822可以设置为与存储介质830通信,在服务器800上执行存储介质830中的一系列指令操作。
服务器800还可以包括一个或一个以上电源826,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口858,和/或,一个或一个以上操作系统841,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的步骤可以基于该图8所示的服务器结构。
其中,CPU 822用于执行如下步骤:
根据待检测资源集合中资源的静态文件,获取待检测资源集合中资源对应的第一引用关系;
确定待检测资源集合中的重复资源;
根据所述重复资源确定冗余资源和保留资源,以及所述冗余资源在所述第一引用关系中对应的子引用关系;
将所述子引用关系更新至所述保留资源,以将所述第一引用关系修正为第二引用关系;
从所述待检测资源集合中删除所述冗余资源,并根据所述第二引用关系构建安装包。
本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行前述实施例所述的冗余资源去除方法。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (8)
1.一种冗余资源去除方法,其特征在于,应用于unity项目,所述方法包括:
根据待检测资源集合中资源的静态文件,获取待检测资源集合中资源对应的第一引用关系;所述资源的静态文件中携带有所述待检测资源集合中资源间的引用关系;所述资源的静态文件为所述unity项目中的.meta文件,所述静态文件包括后缀为.asset或者.controller或者.prefab的文件;
确定待检测资源集合中的重复资源;
根据所述重复资源确定冗余资源和保留资源,以及所述冗余资源在所述第一引用关系中对应的子引用关系;
将所述子引用关系更新至所述保留资源,以将所述第一引用关系修正为第二引用关系;
从所述待检测资源集合中删除所述冗余资源,并根据所述第二引用关系构建安装包;
其中,所述根据待检测资源集合中资源的静态文件,获取待检测资源集合中资源对应的第一引用关系,包括:
遍历所述后缀为.asset或者.controller或者.prefab的文件,从所述后缀为.asset或者.controller或者.prefab的文件记载的文本内容中,检查是否引用有其他资源的文件标记guid,以获取待检测资源集合中资源间的第三引用关系,并确定出未被依赖的资源文件;
根据代码文件确定所述待检测资源集合中被所述代码文件引用的游戏资源,得到所述待检测资源集合对应所述代码文件的第四引用关系,所述第四引用关系中包括被所述代码文件依赖的资源文件;
根据策划数值表确定所述待检测资源集合中被所述策划数值表引用的游戏资源,到所述待检测资源集合对应所述策划数值表的第五引用关系,所述第五引用关系中包括被所述策划数值表依赖的资源文件;
根据所述第三引用关系、所述第四引用关系和所述第五引用关系确定所述第一引用关系,其中,若所述未被依赖资源文件与所述被所述代码文件依赖的资源文件相同,或者,所述未被依赖资源文件与所述被所述策划数值表依赖的资源文件相同,则确定所述未被依赖的资源文件不是冗余资源;否则,确定所述未被依赖的资源文件是冗余资源。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从所述待检测资源集合中确定不涉及所述第一引用关系的多余资源;
所述从所述待检测资源集合中删除所述冗余资源,并根据所述第二引用关系构建安装包,包括:
从所述待检测资源集合中删除所述冗余资源和所述多余资源,并根据所述第二引用关系构建安装包。
3.根据权利要求1-2任意一项所述的方法,其特征在于,所述确定待检测资源集合中的重复资源,包括:
计算所述待检测资源集合中资源分别对应的摘要信息;
通过比对摘要信息确定所述重复资源。
4.一种冗余资源去除装置,其特征在于,应用于unity项目,所述装置包括获取单元、确定单元、更新单元和构建单元:
所述获取单元,用于根据待检测资源集合中资源的静态文件,获取待检测资源集合中资源对应的第一引用关系;所述资源的静态文件中携带有所述待检测资源集合中资源间的引用关系;所述资源的静态文件为所述unity项目中的.meta文件,所述静态文件包括后缀为.asset或者.controller或者.prefab的文件;
所述确定单元,用于确定待检测资源集合中的重复资源;
所述确定单元还用于根据所述重复资源确定冗余资源和保留资源,以及所述冗余资源在所述第一引用关系中对应的子引用关系;
所述更新单元,用于将所述子引用关系更新至所述保留资源,以将所述第一引用关系修正为第二引用关系;
所述构建单元,用于从所述待检测资源集合中删除所述冗余资源,并根据所述第二引用关系构建安装包;
其中,所述获取单元还用于:
遍历所述后缀为.asset或者.controller或者.prefab的文件,从所述后缀为.asset或者.controller或者.prefab的文件记载的文本内容中,检查是否引用有其他资源的文件标记guid,以获取待检测资源集合中资源间的第三引用关系,并确定处未被依赖的资源文件;
根据代码文件确定所述待检测资源集合中被所述代码文件引用的游戏资源,得到所述待检测资源集合对应所述代码文件的第四引用关系,所述第四引用关系中包括被所述代码文件依赖的资源文件;
根据策划数值表确定所述待检测资源集合中被所述策划数值表引用的游戏资源,到所述待检测资源集合对应所述策划数值表的第五引用关系,所述第五引用关系中包括被所述策划数值表依赖的资源文件;
根据所述第三引用关系、所述第四引用关系和所述第五引用关系确定所述第一引用关系,其中,若所述未被依赖资源文件与所述被所述代码文件依赖的资源文件相同,或者,所述未被依赖资源文件与所述被所述策划数值表依赖的资源文件相同,则确定所述未被依赖的资源文件不是冗余资源;否则,确定所述未被依赖的资源文件是冗余资源。
5.根据权利要求4所述的装置,其特征在于,所述确定单元还用于从所述待检测资源集合中确定不涉及所述第一引用关系的多余资源;
所述构建单元还用于从所述待检测资源集合中删除所述冗余资源和所述多余资源,并根据所述第二引用关系构建安装包。
6.根据权利要求4-5任意一项所述的装置,其特征在于,所述确定单元还用于:
计算所述待检测资源集合中资源分别对应的摘要信息;
通过比对摘要信息确定所述重复资源。
7.一种用于冗余资源去除的设备,其特征在于,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行如权利要求1~3任一项所述的冗余资源去除方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码用于被处理器执行以实现如权利要求1~3任一项所述的冗余资源去除方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910419474.2A CN110147237B (zh) | 2019-05-20 | 2019-05-20 | 一种冗余资源去除方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910419474.2A CN110147237B (zh) | 2019-05-20 | 2019-05-20 | 一种冗余资源去除方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110147237A CN110147237A (zh) | 2019-08-20 |
CN110147237B true CN110147237B (zh) | 2023-08-08 |
Family
ID=67592311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910419474.2A Active CN110147237B (zh) | 2019-05-20 | 2019-05-20 | 一种冗余资源去除方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110147237B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110502443A (zh) * | 2019-08-22 | 2019-11-26 | 深圳前海环融联易信息科技服务有限公司 | 冗余代码检测方法、检测模块、电子设备及计算机存储介质 |
CN110837475B (zh) * | 2019-11-14 | 2024-03-01 | 北京有竹居网络技术有限公司 | 冗余检测的方法及装置、终端和存储介质 |
CN110975293A (zh) * | 2019-11-29 | 2020-04-10 | 米哈游科技(上海)有限公司 | 建立资源引用关系表的方法、装置、服务器及介质 |
CN110960858B (zh) * | 2019-12-23 | 2024-02-02 | 上海米哈游网络科技股份有限公司 | 一种游戏资源的处理方法、装置、设备及存储介质 |
CN111290739B (zh) * | 2020-02-10 | 2022-02-22 | 腾讯科技(深圳)有限公司 | 文件引用策略的确定方法、装置、设备及存储介质 |
CN113448932A (zh) * | 2020-03-25 | 2021-09-28 | 北京沃东天骏信息技术有限公司 | 一种应用程序的优化方法和装置 |
CN111744178A (zh) * | 2020-05-26 | 2020-10-09 | 广州尊游软件科技有限公司 | 一种共享资源方法 |
CN112379891B (zh) * | 2020-10-09 | 2023-12-29 | 广州博冠信息科技有限公司 | 一种数据处理方法和装置 |
CN112306507B (zh) * | 2020-10-12 | 2024-08-06 | 北京自如信息科技有限公司 | 一种图片资源处理方法、装置、终端及存储介质 |
CN112351103B (zh) * | 2020-11-10 | 2022-12-27 | 上海哔哩哔哩科技有限公司 | 资源管理方法及装置 |
CN113467781B (zh) * | 2021-06-30 | 2023-02-21 | 建信金融科技有限责任公司 | 一种冗余文件的确定方法、装置和设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007122434A (ja) * | 2005-10-28 | 2007-05-17 | Nippon Telegr & Teleph Corp <Ntt> | 冗長リソース管理装置、プログラムおよび冗長リソース管理方法 |
CN108089893A (zh) * | 2017-12-14 | 2018-05-29 | 网易(杭州)网络有限公司 | 冗余资源的确定方法、装置、终端设备与存储介质 |
CN108536463A (zh) * | 2018-04-09 | 2018-09-14 | 深圳市腾讯网络信息技术有限公司 | 获取资源包的方法、装置、设备及计算机可读存储介质 |
CN108804688A (zh) * | 2018-06-14 | 2018-11-13 | 珠海金山网络游戏科技有限公司 | 一种游戏资源引用关系的查找以及优化方法 |
CN108984207A (zh) * | 2018-06-14 | 2018-12-11 | 珠海金山网络游戏科技有限公司 | 一种安装包无效资源文件检测的方法 |
CN109634613A (zh) * | 2018-12-06 | 2019-04-16 | 珠海西山居互动娱乐科技有限公司 | 一种手游安装包冗余资源检查方法及系统 |
-
2019
- 2019-05-20 CN CN201910419474.2A patent/CN110147237B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007122434A (ja) * | 2005-10-28 | 2007-05-17 | Nippon Telegr & Teleph Corp <Ntt> | 冗長リソース管理装置、プログラムおよび冗長リソース管理方法 |
CN108089893A (zh) * | 2017-12-14 | 2018-05-29 | 网易(杭州)网络有限公司 | 冗余资源的确定方法、装置、终端设备与存储介质 |
CN108536463A (zh) * | 2018-04-09 | 2018-09-14 | 深圳市腾讯网络信息技术有限公司 | 获取资源包的方法、装置、设备及计算机可读存储介质 |
CN108804688A (zh) * | 2018-06-14 | 2018-11-13 | 珠海金山网络游戏科技有限公司 | 一种游戏资源引用关系的查找以及优化方法 |
CN108984207A (zh) * | 2018-06-14 | 2018-12-11 | 珠海金山网络游戏科技有限公司 | 一种安装包无效资源文件检测的方法 |
CN109634613A (zh) * | 2018-12-06 | 2019-04-16 | 珠海西山居互动娱乐科技有限公司 | 一种手游安装包冗余资源检查方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110147237A (zh) | 2019-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110147237B (zh) | 一种冗余资源去除方法和装置 | |
CN110278449B (zh) | 一种视频检测方法、装置、设备及介质 | |
CN110152299B (zh) | 一种游戏资源的构建方法和装置 | |
CN106708554B (zh) | 程序运行方法及装置 | |
CN106066686B (zh) | 一种信息处理方法及终端设备 | |
CN107329778B (zh) | 系统更新的方法及相关产品 | |
CN104850434A (zh) | 多媒体资源下载方法及装置 | |
CN106155750A (zh) | 一种资源文件的加载方法和装置 | |
CN110046497B (zh) | 一种函数挂钩实现方法、装置和存储介质 | |
CN104572819A (zh) | 一种垃圾数据的清理方法和系统 | |
CN110334124B (zh) | 压缩算法选择方法、装置以及设备 | |
CN103177217B (zh) | 一种文件扫描方法、系统及客户端和服务器 | |
CN109002547B (zh) | 日志文件存储方法、移动终端及计算机可读存储介质 | |
CN105530239A (zh) | 多媒体数据获取方法及装置 | |
CN103631625A (zh) | 一种数据获取的方法、用户端、服务器及系统 | |
CN111580851A (zh) | 一种数据管理的方法以及相关装置 | |
CN105550316A (zh) | 音频列表的推送方法及装置 | |
CN114860677A (zh) | 关于终端设备的文件去冗方法、终端设备及存储介质 | |
CN104281610A (zh) | 过滤微博的方法和装置 | |
CN112913267B (zh) | 资源处理方法、装置、终端、服务器和可读存储介质 | |
CN106844057B (zh) | 数据处理方法、装置及移动终端 | |
CN116881143A (zh) | 一种数据对象复制异常排查方法、装置、设备及存储介质 | |
CN105528220B (zh) | 加载动态共享对象的方法和装置 | |
CN107979688B (zh) | 一种应用程序的管理方法及移动终端 | |
CN115269517A (zh) | 一种文件管理方法、装置、存储介质及终端 |
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 |