1. 程式人生 > >Xcode 10 和 iOS 12 的問題

Xcode 10 和 iOS 12 的問題

libstdc++.tbd 找不到

蘋果在XCode10和iOS12中移除了libstdc++這個庫,由libc++這個庫取而代之。

由於大量的第三方庫使用了這個庫,因此可以暫時用以下辦法讓編譯通過:

  • 方法 1
    從 Xcode 9 中拷貝這個庫到 Xcode 10 中。拷貝的地方有兩處,分別位於 /Applications/Xcode9.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib 和 /Applications/Xcode9.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib 目錄。然後你就可以在 Xcode 10 中匯入這個庫了。

    注意,這種方式無法在 iOS 12 的模擬器中執行,會報如下錯誤:/usr/lib/libstdc++.6.dylib: mach-o, but not built for iOS simulator
    這種情況下,只能用真機測試。

  • 方法 2

    從 Linked frameworks and libraries 中刪除 libstdc++,然後全域性搜尋 6.0.9,將 pod 的兩個 xcconfig 檔案中的 -l"stdc++.6.0.9" 刪掉。

    這種方法無論在 iOS 11 還是 12 的模擬器上都能執行。

編譯錯誤:Multiple commands produce ‘/Users/qq/Library/Developer/Xcode/DerivedData/Client-ftuhxtvemmeflwbaizseedvenvlb/Build/Products/Debug-iphonesimulator/Client.app/Info.plist’:

開啟 Xcode 選單 file\Workspace Settings,將 Build System設定為legacy Build System。
如果還不行,將 info.plist 從 Build phase > Copy Bundle Resource/Compile Sources 中移除。