ipa瘦身某宪,我們主要從2個(gè)方面入手:
一跨跨、是工程中所有文件占用空間的大小;發(fā)現(xiàn)異常文件悼做,需要進(jìn)行優(yōu)化處理
二疯特、是未使用圖片的清理。
針對(duì)第一種情況肛走,我們可以通過(guò)link Map 文件漓雅,可以看到所有文件的縮減情況,
查看link Map 文件的工具,可以通過(guò)這個(gè)的鏈接去找:https://github.com/huanxsd/LinkMap
針對(duì)第二種情況邻吞,我們可以通過(guò)LSUnusedResources 這個(gè)工具來(lái)檢測(cè)工程中未使用的圖片组题。
LSUnusedResources 工具可以通過(guò)這個(gè)鏈接獲得, https://github.com/tinymind/LSUnusedResources
下面以圖文的形式詳細(xì)描述這2個(gè)工具的事情情況抱冷。
LinkMap 工具使用
何如獲得LinkMap 文件崔列?
使用方式:
? ? 1.在XCode中開(kāi)啟編譯選項(xiàng)Write Link Map File?
? ? XCode -> Project -> Build Settings ->把Write Link Map File選項(xiàng)設(shè)為yes,并指定好linkMap的存儲(chǔ)位置?
? ? 2.工程編譯完成后徘层,在編譯目錄里找到Link Map文件(txt類型)?
? ? 默認(rèn)的文件地址:~/Library/Developer/Xcode/DerivedData/XXX-xxxxxxxxxxxxx/Build/Intermediates/XXX.build/Debug-iphoneos/XXX.build/?
? ? 3.回到本應(yīng)用峻呕,點(diǎn)擊“選擇文件”,打開(kāi)Link Map文件?
? ? 4.點(diǎn)擊“開(kāi)始”趣效,解析Link Map文件?
? ? 5.點(diǎn)擊“輸出文件”瘦癌,得到解析后的Link Map文件?
? ? 6. *輸入目標(biāo)文件的關(guān)鍵字(例如:libIM),然后點(diǎn)擊“開(kāi)始”跷敬。實(shí)現(xiàn)搜索功能?
? ? 7. *勾選“分組解析”讯私,然后點(diǎn)擊“開(kāi)始”。實(shí)現(xiàn)對(duì)不同庫(kù)的目標(biāo)文件進(jìn)行分組
~/Library/Developer/Xcode/DerivedData/XCTG3-gvueobenusdvggfpombsqchnvkfe/Build/Intermediates.noindex/XCTG3.build/Debug-iphonesimulator/XCTG3.build
linkMap的文件地址
從GitHub上面下載下link Map這個(gè)工程西傀,跑一起來(lái)斤寇,在Mac端得到如下可視化界面∮倒樱可以把我們上面得到linkMap文件(.txt)復(fù)制一份到桌面上娘锁,再下面選擇文件的時(shí)候,加進(jìn)去
選擇好文件后莫秆,點(diǎn)擊開(kāi)始,我們就可以看到工程中下面這些文件占了多少空間悔详,下面的參數(shù)可以為我們提供代碼優(yōu)化思路與方向镊屎。
LSUnusedResources 工具使用
從GitHub上面下載下LSUnusedResources這個(gè)工程,跑一起來(lái)茄螃,在Mac端得到如下可視化界面缝驳。我們把將要檢測(cè)的工程添加進(jìn)去,搜索就可以了归苍。這里還有其他的一些功能用狱。可以根據(jù)讀者自己的實(shí)際需要去再探索了拼弃。
這里需要特別提醒是:下面未使用的圖片是機(jī)器檢測(cè)出來(lái)的夏伊,單不是完全可信賴的哈。最好自己再在這些圖片中肴敛,進(jìn)行一下二次篩選署海。因?yàn)槲覀儠?huì)遇到一下幾種情況,是不能檢測(cè)出來(lái)的医男。
舉兩個(gè)例子:
第一種:一些被序列化的圖片,在工程中很有可能是這樣被引用的
UIImage*image=[UIImage imageNamed:[NSString stringWithFormat:@"TabImage_index%d.png",i]];
如此這樣會(huì)被檢測(cè)為無(wú)用圖片.
解決辦法:
1.可以手動(dòng)確認(rèn)是否真是廢棄切圖.
2.勾選Ignore similar name 選項(xiàng)進(jìn)行過(guò)濾
第二種:在工程的Assets.xcassets文件中直接修改了圖片的名字,這樣會(huì)導(dǎo)致圖片本身的名字和在工程中引入的名字不一致,導(dǎo)致檢測(cè)結(jié)果有誤.
掘金中的 daisyduan 也是我啊 砸狞,??