iOS項目瘦身,刪除無用圖片奈梳,批量壓縮圖片

背景:

移動端關于瘦身杈湾,合理處理資源應該是風險最小,見效最快的手段了攘须。
項目中會用到很多的圖片資源漆撞,合理的壓縮<壓縮但不失真>和刪除無用的圖片在一定程度上可以優(yōu)化我們的包大小

操作步驟:

操作步驟簡介
1、查找出項目中沒有使用到的圖片資源于宙,進行確認然后刪除
2浮驳、確認項目中的圖片存放地,并批量壓縮項目中的圖片

一捞魁、查找出項目中沒有使用到的圖片資源至会,進行確認然后刪除
  • 1.1、查找出項目中沒有使用到的圖片資源
    網(wǎng)上也有些工具谱俭,但是功能不太好用奉件,只能查找源文件名稱在項目中有沒有被用到,不能查找Assets.xcassets中的資源有沒有被用到昆著,查找不準確
    為了方便操作县貌,搞了一個Python腳本進行這項工作

FindUnUseResource.py腳本地址
感興趣也可查看 iOS 查找項目中無用資源腳本原理

python3 FindUnUseResource.py -f .png,.jpg,.jpeg,.mp3,.m4a -p  /Users/a58/Desktop/XXXXPath -e .bundle,Assets.xcassets,Pods

參數(shù)說明:
-f 查找的資源類型,多個用逗號隔開
-p 查找的項目路徑
-e 排除哪些路徑凑懂,多個用逗號隔開

image.png

主要是篩選的主項目中<不包含bundle>煤痕,和Assets.xcassets中的圖片資源有沒有在項目中使用。
腳本的掃描結果顯示的不包含Assets.xcassets接谨,說的是不包含Assets.xcassets中圖片的源文件名稱

image.png

  • 1.2杭攻、將查找出來的結果,挨個在項目中查詢疤坝,然后確認刪除
    為啥不直接刪除呢兆解?因為有一些圖片名稱可能是loading_1.png、loading_2.png跑揉,在項目中用for循環(huán)把名稱拼接起來使用锅睛,所以還得根據(jù)開發(fā)者的實際使用情況來確認。

  • 1.3历谍、刪除Assets.xcassets中沒有使用到的單倍圖
    我們現(xiàn)在應該不支持單倍屏幕的機器了

    image.png

    image.png


二现拒、確認項目中的圖片存放地,并批量壓縮項目中的圖片

圖片的存放地一般是.bundle望侈,Assets.xcassets印蔬,主項目直接拖進去的

image.png

1、批量壓縮Assets.xcassets
使用腳本CompressImages.py進行檢查壓縮脱衙,該腳本會在目標文件生成和源文件一模一樣的目錄侥猬,只壓縮.jpg.png文件例驹,其他的文件只是拷貝回去
腳本地址
CompressImages.py腳本使用需要滿足一些環(huán)境條件,具體參考參考批量壓縮圖片

python3 CompressImages.py -k jSrjT94QC4f4Sdqn0JFTrclj2tbXxWh3 -f /Users/a58/Desktop/projectPath/Assets.xcassets -t /Users/a58/Desktop/Tools/FinalFile

參數(shù)說明:
-k tinify平臺申請的key
-f 要壓縮的文件路徑<對于iOS項目來說退唠,就可以直接把Assets.xcassets扔進去>
-t 壓縮文件存儲路徑

image.png

2鹃锈、bundle中圖片資源處理
bundle一般情況下是配合一些私有庫使用的,極大可能是配合.a或者framework使用瞧预,所以屎债,我們只把這部分的圖片進行壓縮,再放回去就好垢油,不能隨便刪除

2.1盆驹、檢測項目中所有的bundle文件
使用FindAllAPartFiles.py腳本進行檢測,該腳本可以查找一個路徑下除了哪些文件下面所有的某一類文件和文件夾
有點繞?? 看療效滩愁。召娜。。惊楼。

python3 FindAllAPartFiles.py -f .bundle -p /Users/a58/Desktop/Tools/TestFile  -e Pods

參數(shù)說明
-f 要查找的文件或者文件夾類型玖瘸,多個用逗號隔開 -f .bundle,.png,.jpg
-p 要查找的文件目錄
-e 不在什么文件下面找,這里我們不去找Pods中的bundle檀咙,如果在Pods中有自己寫的bundle雅倒,那么可以不用寫Pods,但是必須得寫一個字符串當做參數(shù)

項目中使用的.bundle.png

私有Pods中的資源最好不要使用bundle的形式進行圖片管理弧可,可以使用Images.xcassets
相關的使用方法和區(qū)別參考:
http://www.reibang.com/p/5cb284934be2

image.png

因為只有把圖片資源加到Images.xcassets才會被蘋果優(yōu)化
image.png

2.2蔑匣、壓縮主項目bundle中的圖片資源
這個地方為啥要用手動去一個個的壓縮bundle呢?
因為不是所有的bundle中都有圖片資源的棕诵,而且一些不想壓縮或者拿不準的bundle可以選擇不壓縮裁良,一般一個項目中bundle也沒幾個
如果bundle中的圖片多,使用腳本CompressImages.py進行檢查壓縮
腳本地址
CompressImages.py腳本使用需要滿足一些環(huán)境條件校套,具體參考參考批量壓縮圖片

python3 CompressImages.py -k jSrjT94QC4f4Sdqn0JFTrclj2tbXxWh3 -f /Users/a58/Desktop/Tools/TestFile/HUDSource.bundle -t /Users/a58/Desktop/Tools/FinalFile

image.png

bundle壓縮完畢之后价脾,將新文件中的內容拷貝出來替換原bundle中內容就行

3、主項目中的圖片
這些圖片就是些散戶了笛匙,常見的圖片比如引導頁侨把,為了使用[UIImage imageWithContentsOfFile:"imagePath"]加載圖片,可能放在主項目中等

3.1妹孙、查找主項目中的這些散戶
FindAllAPartFiles.py

python3 FindAllAPartFiles.py -f .png,.jpg,.jpeg -p /Users/a58/Desktop/projectPath -e .bundle,Assets.xcassets

參數(shù)說明
-f 查找文件類型秋柄,這里查找
-p 需要查找項目路徑
-e 排除搜索的文件夾名稱

image.png

感覺圖片路徑找到圖片,對于比較分散的圖片蠢正,直接用網(wǎng)頁在線壓縮就可以了https://tinypng.com/

壓縮后的結果查看

壓縮完畢之后一打包骇笔,可能顯示壓縮效果明顯,但是打出來的包其實是包含多個架構的包,不能真實反饋將來上線到AppStore后的大小
可以參考:
iOS查看將來各種機型在AppStore中下載的包大小
只需要把壓縮后的包扔到itunes上就可以查看

坑點:

1笨触、項目中的jpg圖片最好轉化成png圖片懦傍,因為在ipa包中發(fā)現(xiàn),蘋果自動把jpg轉化成了png旭旭,并且體積變大了
2、pod私有庫中的圖片資源最好加到Images.xcassets葱跋,因為只有把圖片資源加到Images.xcassets才會被蘋果優(yōu)化持寄。有的團隊是這么做的,將圖片放在bundle中娱俺,但是只放兩倍圖稍味。這樣估計還是會有差別,待驗證荠卷。
3模庐、圖片不要過度壓縮,蘋果有自己的圖片處理策略油宜,如果壓縮過度掂碱,打出的包可能感覺小了,但是放在應用商店下載可能會發(fā)現(xiàn)圖片反而比之前大慎冤,有種圖片壓縮回滾的表現(xiàn)疼燥,待驗證。
4蚁堤、對比最終壓縮效果醉者,不要只看ADHOC下打出來的ipa大小。要看將來在appStore的ipa大小iOS查看將來各種機型在AppStore中下載的包大小,這樣的參考才是有意義的

擴展:

iOS 腳本查看項目中重復文件
可以進一步檢測項目中資源披诗,對于重復的資源可以優(yōu)化一下

在項目中查看某一類文件腳本
可以查看項目某一類的文件撬即,并且大小排序排好,比如查詢所有png的文件呈队,可以將較大的文件進行處理剥槐,或者UI再切圖之類的

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市宪摧,隨后出現(xiàn)的幾起案子才沧,更是在濱河造成了極大的恐慌,老刑警劉巖绍刮,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件温圆,死亡現(xiàn)場離奇詭異,居然都是意外死亡孩革,警方通過查閱死者的電腦和手機岁歉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锅移,你說我怎么就攤上這事熔掺。” “怎么了非剃?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵置逻,是天一觀的道長。 經(jīng)常有香客問我备绽,道長券坞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任肺素,我火速辦了婚禮恨锚,結果婚禮上,老公的妹妹穿的比我還像新娘倍靡。我一直安慰自己猴伶,他們只是感情好,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布塌西。 她就那樣靜靜地躺著他挎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捡需。 梳的紋絲不亂的頭發(fā)上雇盖,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天,我揣著相機與錄音栖忠,去河邊找鬼崔挖。 笑死,一個胖子當著我的面吹牛庵寞,可吹牛的內容都是我干的狸相。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼捐川,長吁一口氣:“原來是場噩夢啊……” “哼脓鹃!你這毒婦竟也來了?” 一聲冷哼從身側響起古沥,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瘸右,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后岩齿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體太颤,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年盹沈,在試婚紗的時候發(fā)現(xiàn)自己被綠了龄章。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖做裙,靈堂內的尸體忽然破棺而出岗憋,到底是詐尸還是另有隱情,我是刑警寧澤锚贱,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布仔戈,位于F島的核電站,受9級特大地震影響拧廊,放射性物質發(fā)生泄漏监徘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一卦绣、第九天 我趴在偏房一處隱蔽的房頂上張望耐量。 院中可真熱鬧飞蚓,春花似錦滤港、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至著榴,卻和暖如春添履,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背脑又。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工暮胧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人问麸。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓往衷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親严卖。 傳聞我的和親對象是個殘疾皇子席舍,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內容