iOS開發 Build operation failed without specifying any errors 問題fix

GabrielPanda發表於2018-01-24

Xcode報錯如圖:

xcode報錯圖.png

verify final result code for completed build operation
Build operation failed without specifying any errors. Individual build tasks may have failed for unknown reasons.
One possible cause is if there are too many (possibly zombie) processes; in this case, rebooting may fix the problem.
Some individual build task failures (up to 12) may be listed below.
複製程式碼

1.cocoapods版本導致

cocoapods官網 cocoapods github釋出頁面

2018-01-24 釋出.png

檢查發現本地mac系統上cocoapods版本是最新的1.4.0(2018年1月24日)

//刪除1.4.0包
sudo gem uninstall cocoapods -v 1.4.0

//然後安裝指定版本的Cocoapods
sudo gem install cocoapods -v 1.3.1

//檢查版本
pod --version
複製程式碼

然後重新拉程式碼,pod update 編譯執行OK!

2.Perform Single-Object Prelink設定導致

categories in static library

xcode編譯的時候不會把靜態庫裡面全部的類都載入進去,它會找主工程用到了哪些符號,然後把用到的載入進去。但是這個看起來很美的機制有個大坑,就是oc的分類是不生成符號的,也就是說,比如你在工程用了一個分類的方法[NSString categoryMethod], 編譯器只會認為需要用到NSString, 而不知道categoryMethod是靜態庫裡一個分類的方法,所以不會去載入靜態庫的分類。

目前的解決方法就是給編譯器一個標誌,告訴編譯器整個靜態庫都要載入:

1).-all-load. 把所有靜態庫裡的所有.o都載入 2).-force_load. 可以指定載入哪個靜態庫的所有.o 3).-ObjC. 把所有OC程式碼都載入。 4).Perform Single-Object Prelink. 前3個編譯選項都是設在主工程的,這個選項是設定在靜態庫的。表示把這個子工程預編譯成一個.o檔案,當整個靜態庫有一個符號被引用就把整個.o檔案打包進去。 可能是Perform Single-Object Prelink的實現有bug,檔案多了就掛了。

參考文章

相關文章