iOS安裝包瘦身記錄

隨着項目時間愈來愈久,你們天然而然的必定會面對一個問題:APP安裝包愈來愈大。那就不由自問一下了,安裝包裏邊的東西都是須要的嗎?答案確定是:不是的!即便都是須要的那有沒有優化空間呢?固然確定也會有的。接下里介紹一下做者安裝包瘦身的一次經歷。git

瘦身結果

安裝包從68.9M減小到23.Mgithub

你們別急着想做者作了什麼竟然能減小這麼大呢?這裏其中有一個狗血的事情。雖然不是每一個人都會遇到,可是仍是當心爲妙!工具

分析和結論

瘦身以前,做者也看了很多有關這方面的文章。其實總結下來雖然優化點挺多的,可是總的來講對於大部分項目來講能夠入手作的而且效果比較大能夠概括爲一下2點:優化

  • 原生資源ui

    • 圖片
    • 視頻
    • 音頻
    • 其餘內置資源,如城市數據等
  • 代碼設計

開始瘦身

本人開發的APP以前半年之久,從0開始,因此歷史包袱沒有。可是發現開發的APP達到將近70M的時候,其實第一反應是難以想象。正好項目有點空閒時間內了,就開始着手瘦身這一事情了。code

原生資源處理

圖片資源其實在大部分項目中佔據了很多比例的。視頻

圖片資源處理

  • 刪除無用和重複圖片的 LSUnusedResources一個Mac工程,下載下來直接運行。能夠用來掃描工程中沒有用到的圖片。 fdupes能夠在指定的目錄及子目錄中查找重複的文件。fdupes經過對比文件的MD5簽名,以及逐字節比較文件來識別重複內容。

fdupes -r xxx/Images.xcassets圖片

工程中歷史包袱沒有,因此重複和沒有用的圖片沒有那麼大。瘦身了0.2M,效果不是很是明顯資源

  • 壓縮圖片 其實不少設計給到的切圖質量都很高,沒有通過壓縮。咱們手機端使用的圖片能夠適當的作壓縮處理。這個效果比較明顯減小了5.4M

狗血的事情 這裏壓縮過程當中,做者竟然在工程中發現了一張41.6M的圖片!!!。因此建議你們在使用設計給到的圖片必定要看看大小!

TinyPNG很不錯的一個圖片免費在線壓縮工具

我壓縮了工程中用到的比較大的圖片(幾十K以上的),小的就沒有去壓縮。另外一個你們必定要注意APP的歡迎頁,質量都比較高,尤爲大。要不一樣機型的歡迎頁都要壓縮一下。

  • 壓縮gif 因爲項目中歡迎頁使用幾個gif,因此這裏壓縮了一下,效果還湊合着吧,減小0.3M

視頻和音頻處理

項目中若是有視頻音頻的話佔的比較大的話,你們能夠作一下處理。好比音頻可使用ogg等比較小的文件。

代碼

這裏因爲沒有歷史包袱代碼層面咱們如今項目可優化的不是很大。這裏其實主要就是沒有用的文件和第三方的引用致使安裝包變大。因此沒用到的文件確定要刪除,針對比較大的第三方作個取捨。代碼重複掃描的話對安裝包瘦身效果不是很明顯,不過你們能夠用來重構項目也是有用的,作個參考

查看APP中各個文件的大小

  1. LinkMap文件是Xcode產生可執行文件的同時生成的連接信息,用來描述可執行文件的構形成分,包括代碼段(__TEXT)和數據段(__DATA)的分佈狀況。只要設置Project->Build Settings->Write Link Map File爲YES,build完後就能夠在設置的路徑看到LinkMap文件了。
  2. 從linkmap中統計出每一個.o目標文件佔用的體積和每一個.a靜態庫佔用的體積 腳本連接

個人博客

FlyOceanFish

相關文章
相關標籤/搜索