【工具向】分析FGUI依赖关系工具

17 篇文章 0 订阅
1 篇文章 0 订阅

目录

资源地址 

核心思路

代码逻辑核心

后续扩展


正确拿到真实的依赖啦,因为所有都有一个唯一id,包含package和所有组件 图片 字体等资源都有唯一id,应该用package.xml得到所有包体的依赖关系后,去遍历全部xxx.xml里的所有节点 是否有 ui://xxxx这种 或 src=xxx 这种去知道它的依赖包。 

资源地址 

链接: https://pan.baidu.com/s/145as33i0KQ9f6HAfxuEUYw?pwd=pty8

提取码: pty8
2022年8月6日更新:
在FGUI工程里输出一个excel文件,内容类似

 以下是旧的已经没有了 但是可以看看 就是这种的扩展板

处理依赖关系错乱问题(比如公共资源引用其他非公共资源)

输出包名 资源xml 依赖url  依赖包名

上图就是ModalWaiting包 有一个资源叫GlobalModelWaiting的家伙 去依赖了另一个叫Model的包里面的ui://qef31w6wujncf(这是一个资源唯一ID码 能直接用这个字符串去搜索出对应的资源)

你可以新增逻辑,比如忽略公共包的输出,Common 只需要判断依赖包是"Common" 就不要写入allStr输出字符串就行了。

比如:

核心思路

FGUI概念:
包ID:packageId 每一个Package的唯一ID
组件ID:comId  FGUI每一个组件(UI、Button..)的唯一ID
资源ID:url 第一种形式:包ID(8位长度字符串)+组件ID第二种形式:包名/资源名
FGUI都是以"ui://资源ID"来准确搜索出资源。

代码逻辑核心

1、分析每一个包的package.xml,它内部有包id和所有组件id,获取到<packageId, packageName>字典,主要用来通过包ID来获取包名。【里面还有个字典没用到】

2、分析每一个包里面的资源xml文件(排除package.xml),使用递归形式分析xml每一个标签【<xxx id='xx' src='xx' pkg='xxx' icon='ui://xxx'>】
2.1 获取标签内两个特殊的属性,src属性和pkg属性,src属性是依赖资源的组件ID,pkg属性是依赖资源的所在包ID。pkg属性是只有依赖其他包(非自身)才会存在。
2.2 获取标签内全部属性,遍历每一个属性,以'|'符号进行分割属性内容,再分析分割出来的string[],判断string的内容存在"ui://"以这5个字符为前缀的,若有取出"ui://"字符后续的字符串【即content.SubString(5, content.Length-5)这个截取到的字符串就是资源ID(url)。
因为资源ID分两种形式,首先第一种形式:  包ID+组件ID的,我们要取它的前8位获取到packageId(包ID),关键点来了,因为第一步骤里我们拿到了<packageId, packageName>字典,所以我们这里要判断下是不是拿到的是第一种形式的包ID,而不是第二种形式的【包名/资源名】,判断方法是直接判断截取到的packageId是否存在字典中,如果存在则说明是第一种形式,否则第二种,代码会对第二种形式做相应的处理。
总之,我们会处理url得到一个字符串【资源包名|资源xml名称|依赖资源url|依赖资源所在包名】,每一个标签如果都有上面2.1和2.2的情况都会诞生出一个这样的字符串,放入到一个sumStr里以\n换行。
后续则是简单的输出到Excel表(sample.xlsx)

代码要改的只有前面的地方,把fgui工程和输出excel路径修改成你的。

后续扩展:

因为分析工具基本都可以拿到资源ID(url)、组件ID、包ID,而每一个包的package.xml文件里也会记录有包ID、组件ID(资源ID是由包ID+组件ID构成的),并且package.xml里还有很多内容,比如:资源相对路径,后续可以弄出来<url, 资源相对路径>字典,通过上面2.1和2.2得到的资源ID(url) 去获取到资源的相对路径,从而去拿到依赖资源的xml文件信息,去进一步分析依赖资源本身的情况(比如,资源大小、纹理尺寸等等)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值