iOS專案執行時XCode記憶體暴漲、速度慢、卡的解決過程

語言: CN / TW / HK

XCode老罷工

從今年開始,專案中一個元件的主工程在開發過程中,執行編譯時間耗時長,XCode是不是都會轉菊花,平均每次編譯的時間大概在5min左右,非常影響開發效率,今日剛好提測完,抽空仔細看看為何如此卡頓。

  • 環境

| key |value | | --- | --- | | Mac OS |13.2.1 (22D68) | |記憶體 |16 GB | |晶片 |Apple M1 | |儲存 |512G | |XCode |14.0.1 | |元件程式碼 |19MB |

在卡頓的時候開啟活動監視器,發現XCode佔用記憶體非常高,平均在20GB左右,峰值達到60GB

77611677480135_.pic.jpg

在Command + k 刪除DerivedData 裡面的快取之後,還是沒有明顯的加速結果。

尋找原因

檢視編譯日誌

image.png

發現元件內的所有檔案在編譯的時候都會有幾個相似的警告。

這些警告來自同一個檔案,通過pch檔案引用。

有警告的檔案是該元件的網路請求檔案,是很早以前建立的,檔案裡面沒有自動生成NS_ASSUME_NONNULL_BEGIN檔案內大概有幾百個警告。在編譯檔案的時候,這些警告都會去做快取、分析。導致執行起來非常卡頓。

解決

消除警告,重新編譯,發現專案跑起來非常的舒暢!

如果是有其他第三方庫或者元件的警告,可以在podFile中增加 :inhibit_warnings => true 來避免編譯的時候檢查警告。這種方式也會加快編譯速度。

ruby pod 'XXNetEngineModule', :inhibit_warnings => true

可以看到解決完XCode的記憶體大小基本就在1GB左右。編譯速度也基本上能達到秒啟(10s內)。

image.png