【工具向】分析FGUI依赖关系工具
目錄
資源地址?
核心思路
代碼邏輯核心
后續(xù)擴(kuò)展
正確拿到真實(shí)的依賴?yán)?#xff0c;因?yàn)樗卸加幸粋€(gè)唯一id,包含package和所有組件 圖片 字體等資源都有唯一id,應(yīng)該用package.xml得到所有包體的依賴關(guān)系后,去遍歷全部xxx.xml里的所有節(jié)點(diǎn) 是否有 ui://xxxx這種 或 src=xxx 這種去知道它的依賴包。?
資源地址?
鏈接: https://pan.baidu.com/s/145as33i0KQ9f6HAfxuEUYw?pwd=pty8
提取碼: pty8
2022年8月6日更新:
在FGUI工程里輸出一個(gè)excel文件,內(nèi)容類似
?以下是舊的已經(jīng)沒有了 但是可以看看 就是這種的擴(kuò)展板
處理依賴關(guān)系錯(cuò)亂問題(比如公共資源引用其他非公共資源)
輸出包名 資源xml 依賴url? 依賴包名
上圖就是ModalWaiting包 有一個(gè)資源叫GlobalModelWaiting的家伙 去依賴了另一個(gè)叫Model的包里面的ui://qef31w6wujncf(這是一個(gè)資源唯一ID碼 能直接用這個(gè)字符串去搜索出對(duì)應(yīng)的資源)
你可以新增邏輯,比如忽略公共包的輸出,Common 只需要判斷依賴包是"Common" 就不要寫入allStr輸出字符串就行了。
比如:
核心思路
FGUI概念:
包ID:packageId 每一個(gè)Package的唯一ID
組件ID:comId? FGUI每一個(gè)組件(UI、Button..)的唯一ID
資源ID:url 第一種形式:包ID(8位長(zhǎng)度字符串)+組件ID,第二種形式:包名/資源名
FGUI都是以"ui://資源ID"來準(zhǔn)確搜索出資源。
代碼邏輯核心
1、分析每一個(gè)包的package.xml,它內(nèi)部有包id和所有組件id,獲取到<packageId, packageName>字典,主要用來通過包ID來獲取包名。【里面還有個(gè)字典沒用到】
2、分析每一個(gè)包里面的資源xml文件(排除package.xml),使用遞歸形式分析xml每一個(gè)標(biāo)簽【<xxx id='xx' src='xx' pkg='xxx' icon='ui://xxx'>】
2.1 獲取標(biāo)簽內(nèi)兩個(gè)特殊的屬性,src屬性和pkg屬性,src屬性是依賴資源的組件ID,pkg屬性是依賴資源的所在包ID。pkg屬性是只有依賴其他包(非自身)才會(huì)存在。
2.2 獲取標(biāo)簽內(nèi)全部屬性,遍歷每一個(gè)屬性,以'|'符號(hào)進(jìn)行分割屬性內(nèi)容,再分析分割出來的string[],判斷string的內(nèi)容存在"ui://"以這5個(gè)字符為前綴的,若有取出"ui://"字符后續(xù)的字符串【即content.SubString(5, content.Length-5)這個(gè)截取到的字符串就是資源ID(url)。
因?yàn)橘Y源ID分兩種形式,首先第一種形式:? 包ID+組件ID的,我們要取它的前8位獲取到packageId(包ID),關(guān)鍵點(diǎn)來了,因?yàn)榈谝徊襟E里我們拿到了<packageId, packageName>字典,所以我們這里要判斷下是不是拿到的是第一種形式的包ID,而不是第二種形式的【包名/資源名】,判斷方法是直接判斷截取到的packageId是否存在字典中,如果存在則說明是第一種形式,否則第二種,代碼會(huì)對(duì)第二種形式做相應(yīng)的處理。
總之,我們會(huì)處理url得到一個(gè)字符串【資源包名|資源xml名稱|依賴資源url|依賴資源所在包名】,每一個(gè)標(biāo)簽如果都有上面2.1和2.2的情況都會(huì)誕生出一個(gè)這樣的字符串,放入到一個(gè)sumStr里以\n換行。
后續(xù)則是簡(jiǎn)單的輸出到Excel表(sample.xlsx)
代碼要改的只有前面的地方,把fgui工程和輸出excel路徑修改成你的。
后續(xù)擴(kuò)展:
因?yàn)榉治龉ぞ呋径伎梢阅玫劫Y源ID(url)、組件ID、包ID,而每一個(gè)包的package.xml文件里也會(huì)記錄有包ID、組件ID(資源ID是由包ID+組件ID構(gòu)成的),并且package.xml里還有很多內(nèi)容,比如:資源相對(duì)路徑,后續(xù)可以弄出來<url, 資源相對(duì)路徑>字典,通過上面2.1和2.2得到的資源ID(url) 去獲取到資源的相對(duì)路徑,從而去拿到依賴資源的xml文件信息,去進(jìn)一步分析依賴資源本身的情況(比如,資源大小、紋理尺寸等等)
總結(jié)
以上是生活随笔為你收集整理的【工具向】分析FGUI依赖关系工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux互斥锁的使用代码实现
- 下一篇: 整理iOS9适配中出现的坑