目录

资源地址

核心思路

代码逻辑核心

后续扩展


正确拿到真实的依赖啦,因为所有都有一个唯一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文件信息,去进一步分析依赖资源本身的情况(比如,资源大小、纹理尺寸等等)

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

  1. RPM软件包管理 软件依赖关系 Yum软件的使用 上传与下载 时间设置 命令补充 zip归档工具

    环境准备 1.光盘文件放入挂载光驱设备 2.挂载光驱设备(临时挂载) mount /dev/cdrom /mnt ls /mnt ls /mnt/Packags 软件包一般都会以.rpm结尾 RPM软 ...

  2. 企业研发管理工具应用分析

    企业使用信息管理工具可以显著提升工作效率,积累知识财富,这一点早已成为大家的共识.近几十年来,国内企业在企业信息化上的投入越来越大,从开始的财务管理系统,到进存销系统,到ERP系统,基本涵盖了从财务. ...

  3. maven:maven可视化分析依赖关系

    该文章基于的环境:idea2021.1 一.打开可视化分析窗口 右键某一个模块,点击"选择图例" 然后在"图例"界面随便空白处右键 二.分析 分析依赖关系(我依 ...

  4. 漏洞10年深藏不露,PHP 项目依赖关系管理工具Composer安全吗?

     聚焦源代码安全,网罗国内外最新资讯! 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为 ...

  5. 解决安装rpm包依赖关系的烦恼 - yum工具介绍及本地源配置方法

    1.背景概述 在实际生产环境下,对于在linux系统上安装rpm包,主要面临两个实际的问题 1)安装rpm包过程中,不断涌现的依赖关系问题,导致需要按照提示或者查询资料,手工安装更多的包 2)由于内外 ...

  6. Dll依赖与被依赖关系查看工具【1】

    [1]工具主界面 [2]工具的功能介绍 2.1 查看Dll依赖的Dll列表(一级关系,如果依赖的Dll不在该目录下,则不显示到右侧) 如: 选择Dll的目录,软件自动获取该目录的Dll列表,并显示到左 ...

  7. Linux安全运维学习⑤ ---- yum工具进行软件的安装与卸载 (与依赖关系列表理解)

    需求:卸载vim编辑器工具 1.该软件的名称 rpm -qa | grep "vim" 一共发现了四个相关文件 2.卸载 rpm -e 卸载common 需要先卸载 enhance ...

  8. 企业级自动化运维方案设计及Saltstack、Ansible等5种工具比较分析--云平台技术栈08...

    导读:之前发布了云平台技术栈(ps:点击可查看),本文主要说一下其中的服务器自动化配置! 来自:公众号talkwithtrend 1.企业运维现状与发展趋势 随着企业信息化的不断发展,运维人员需要面对 ...

  9. 西湖大学鞠峰组:环境宏病毒组学分析思路与常用工具

    环境宏病毒组学分析思路与常用工具 袁凌1, 2,倪艳4,鞠峰1, 2, 3 * 1 浙江省海岸带环境与资源研究重点实验室,工学院, 西湖大学, 杭州, 浙江 2  前沿技术研究所, 浙江西湖高等研究院 ...

  10. Python web 项目的依赖管理工具

    Poetry可以帮助你声明.管理和安装Python项目的依赖项,确保你可以在任何地方都拥有正确的堆栈. Poetry支持Python 2.7 和Python 3以上 安装 Poetry提供了一个自定义 ...

最新文章

  1. Christopher Manning​:Uber 出售自动驾驶部门是一个标志性事件​ | AI日报
  2. 什么是高层主管支持系统?
  3. thinkphp3.1的新功能
  4. layui 关于layDate设置时间限制问题
  5. 编程之美 - 哪个题目最美?
  6. mysqldump 备份命令使用中的一些经验总结
  7. MySQL 是如何解决幻读的
  8. Python数据的精度
  9. html前端论文参考文献,web前端论文参考文献论文
  10. Mathtype使用技巧
  11. 关于三星研究院adv机试(开发人员入职机试)
  12. 苹果Mac如何切换大写输入法?
  13. 微信扫码支付模式一 : 获取商户订单信息超时或者商户返回的httpcode非200
  14. 关于javaBean运行后出现Name was not previously introduced as per JSP.5.3的解决方法
  15. 计算机软件方法专利撰写,干货 | 计算机软件专利撰写模板
  16. 打印机计算机名称怎么看,打印机名称在哪里找
  17. 东软之行-人生当展翅高飞
  18. 苹果cms简洁精美影视模板整站源码
  19. 二维数组malloc与free
  20. Interview Summary

热门文章

  1. egret白鹭引擎开发的两个H5小游戏源码分享
  2. 远程teamview下载网址,和ie 下载地址
  3. Manjaro 安装 wiznote[解决:安装完成输入wiznote没有该命令]
  4. 盲打打字php,盲打键盘指法图顺口溜及练习方法
  5. 教你如何使用Ip地址进行精准定位
  6. Qualomm openwrt SDK编译
  7. nbu mysql linux备份软件,NBU备份linux/aix/unix下的db2数据库配置
  8. python 身份证识别_Card-Ocr:身份证识别 OCR
  9. Linux下Libtorch运行出现free(): invalid pointer报错
  10. 李航——《统计学习方法》(一)