公司有個做了很久的老項目奕枝,被蝸牛般的編譯速度折磨了很久哥谷。估計很多同學也會遇到類似的問題。今天在這里把平時自己如何加快
XCode
編譯速度的方法整理一下麻献。大家可以參考參考们妥!
1. 增加XCode執(zhí)行的線程數(shù)(??)
可以根據(jù)自己Mac
的性能,更改線程數(shù)設置5
:defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 5
另外也有一個設置可以開啟:defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES
XCode默認使用與CPU核數(shù)相同的線程來進行編譯勉吻,但由于編譯過程中的IO操作往往比CPU運算要多监婶,因此適當?shù)奶嵘€程數(shù)可以在一定程度上加快編譯速度。
2.將Debug Information Format改為DWARF(??????)
在工程對應Target
的Build Settings
中齿桃,找到Debug Information Format
這一項惑惶,將Debug時的DWARF with dSYM file
改為DWARF
。
如圖:
這一項設置的是是否將調(diào)試信息加入到可執(zhí)行文件中短纵,改為DWARF后带污,如果程序崩潰,將無法輸出崩潰位置對應的函數(shù)堆棧香到,但由于Debug模式下可以在XCode中查看調(diào)試信息鱼冀,所以改為DWARF影響并不大。這一項更改完之后悠就,可以大幅提升編譯速度千绪。
比如在目前本人負責的項目中,由于依賴了多個Target
梗脾,所以需要在每個Target
的Debug Information Format
設置為DWARF
荸型。順便提一下,如果通過Cocoapod
引入第三方則Debug Information Format
默認就是設置為DWARF
的炸茧。
-
SDWebImage
通過Cocoapod``Debug Information Format
的默認設置image
注意:將
Debug Information Format
改為DWARF
之后帆疟,會導致在Debug
窗口無法查看相關類類型的成員變量的值。當需要查看這些值時宇立,可以將Debug Information Format
改回DWARF with dSYM file
踪宠,clean(必須)
之后重新編譯即可。
3.將Build Active Architecture Only改為Yes(??)
在工程對應Target
的Build Settings
中妈嘹,找到Build Active Architecture Only
這一項柳琢,將Debug
時的NO
改為Yes
。
這一項設置的是是否僅編譯當前架構(gòu)的版本润脸,如果為NO
柬脸,會編譯所有架構(gòu)的版本。需要注意的是毙驯,此選項在Release
模式下必須為NO`倒堕,否則發(fā)布的ipa在部分設備上將不能運行。這一項更改完之后爆价,可以顯著提高編譯速度垦巴。
4.設計編譯優(yōu)化等級(??)
不要再項目中或者靜態(tài)庫中使用-O4
媳搪,因為這會讓Clang
鏈接Link Time Optimizations (LTO)
使得編譯更慢,通常使用-O3
骤宣。
注意:在設置編譯優(yōu)化之后秦爆,XCode斷點和調(diào)試信息會不正常,所以一般靜態(tài)庫或者其他Target
這樣設置憔披。