前言
由於在上家創業公司被現在的公司收購,最終把兩個APP融合成一個APP,當時只是把代碼進行復制黏貼,後面一直在做開發,急着上線功能,所以我也沒有對APP進行優化。項目打包之後ipa包的大小是一百多兆,下載時間太長,年初比較閒,決定來優化安裝包,結合其他開發者的優化方法進行瘦身,最終變成80兆。
1、配置編譯選項
(Levels選項內)Generate Debug Symbols 設置爲NO,這個配置選項應該會讓你減去小半的體積。注意這個如果設置成NO斷點不生效。
2、捨棄架構armv7
armv7用於支持4s和4,現在的使用率極低,完全可以捨棄了。
3、去除無用的三方庫、代碼、圖片
4、圖片處理
項目中的圖標文件是被小夥伴們直接放在工程目錄下面的,裏面有1x、2x和3x的圖片,當然打包的時候這些文件也都被打包進去了。我這裏做的就比較簡單了我把圖片放在Xcode自帶的圖片管理工具裏面Images.scasssets,這樣的好處就是打包的資源包中的圖片會被放到Assets.car.圖片有被壓縮;此時若用[[NSBundle MainBundle] pathForResource: ofType: ]來訪問時訪問不到的。同時你也無法像平常一樣輕易的拿到被人的圖片資源了,不用再爲多像素的圖片命名。mages.xcassets會自動的排列不同像素的圖片。
5、編譯器優化級別
Build Settings->Optimization Level有幾個編譯優化選項,release版應該選擇Fastest, Smalllest[-Os],這個選項會開啓那些不增加代碼大小的全部優化,並讓可執行文件儘可能小。
6、可執行文件瘦身
LinkMap文件是Xcode產生可執行文件的同時生成的鏈接信息,用來描述可執行文件的構造成分,包括代碼段(__TEXT)和數據段(__DATA)的分佈情況。只要設置Project->Build Settings->Write Link Map File爲YES,build完後就可以在設置的路徑看到LinkMap文件了。
我們可以用腳本從linkmap中統計出每個.o目標文件佔用的體積和每個.a靜態庫佔用的體積 【腳本鏈接】
也可以使用clang plugin 或 mach-o 查找無用方法的方案。
https://github.com/netyouli/WHC_Scan 這個工具也可以使用,作爲輔助參考,但僅限於OC代碼。
思維導圖: