升級Xcode10導致的編譯錯誤

啊豪發表於2018-11-01

前言,本不想那麼快升級,因專案在iPhoneXS Max中有些偶現閃退,舊Xcode打的dsym又沒辦法解析出來奔潰日誌,手中又沒有真機,無奈之下,升級Xcode,想在模擬器上測試……(結局想哭)

開始

  • 升級mac 系統:10.13.6(Xcode版本要求);

  • 升級Xcode10;

  • 升級完成開始編譯專案,如願報錯;

問題1:

升級Xcode10導致的編譯錯誤
Multiple plist檔案重複問題,直接網上一搜,方法也簡單:

解決:

File--> Workspace Settings --> Build System 修改為Legacy Build System (預設是New Build System)

升級Xcode10導致的編譯錯誤

第一個問題解決了。
接下來竟然報錯:

問題2:

升級Xcode10導致的編譯錯誤
升級Xcode10導致的編譯錯誤
libstdc++.6.0.9.dylib 這個庫找不到了,原因是Xcode10廢棄了這個庫了。
蘋果推薦(強迫)大家使用libc++.dylib。

區別在於

libc++.dylib 是基於C++11版本的標準庫實現的;
libstdc++.6.0.9.dylib 是基於C++98版本的標準庫實現。

早在Xcode9時代蘋果就已經宣佈將要廢棄libstdc++.6.0.9.dylib,不在支援老版本了,確實說到做到。

想詳細瞭解C++版本歷史的發展,點這裡

那怎麼辦,專案中使用到,又不能delete,想要更新成libc++.dylib也不現實。

解決:

在這個路徑下貼上這個libstdc++.6.0.9庫:(可以在Xcode9先備份一份) /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/

貼上,編譯,編譯success了!



那麼問題來了,真機編譯通過了,我在想用同樣的方式,貼上到模擬器的路徑,應該可以吧,結果編譯通過了,興奮了一下,run起來時閃退了。

報錯:
no suitable image found. Did find: /usr/lib/libstdc++.6.dylib: mach-o, but not built for iOS simulator

快要哭,我的升級目的是想要在模擬器上測試(因為暫沒有真機)!!

暫時找不到解決方法了,模擬器沒法跑起來。(求解決方法)

另外

如果專案是使用swift的,升級Xcode一定要謹慎!!!

swift的語法目前還沒穩定,蘋果還是在改改改。。。
如果是自己寫的程式碼,還能改改,但如果是依賴第三方的庫,那就坑爹了,得坐等更新。

慶幸我算是比較晚升級Xcode10,報錯的幾個庫,都更新支援了。

此篇到這。
很久沒寫筆記,這是我在掘金的第一篇筆記,好的開始,堅持寫。
以前寫的都棄在這邊了。



實踐是檢驗真理的唯一標準(用程式碼說話)...

相關文章