? ? ? ? 最近幾個月打包上架的時候蘋果會提醒:WARNING ITMS-90725: "SDK Version Issue. This app was built with the iOS 11.2 SDK. Starting March 2019, all iOS apps submitted to the App Store must be built with the iOS 12.1 SDK or later, included in Xcode 10.1 or later."也就是從2019年3月開始,提交到App Store的所有iOS應(yīng)用程序必須使用iOS 12.1 SDK或更高版本構(gòu)建,包含在Xcode 10.1或更高版本中。迫不得己,今天將Xcode由9.3版本升級到10.1版本。
? ? ? ? 我升級版本后運行項目就報了一個Multiple commands produce'/Users/mc/Library/Developer/Xcode/DerivedData/......的錯誤。這個的原因是項目中使用第三方庫,里面有Info.plist之類的,而且是不止一個庫中有,重復(fù)的這些文件,導致的報錯?;蛘唔椖恐兄貜?fù)引用同一個文件圖片所導致的。這個錯誤的解決方法是:修改build system在Xcode菜單欄 -> File -> Workspace Setting,將build system修改為legacy build system。如下圖所示:


clean后編譯后就到了這篇文章的重點。報缺少libstdc++.6.0.9的錯誤。如下圖:

????????原因是蘋果在 XCode10 和 iOS12 中移除了?libstdc++?這個庫,由?libc++?這個庫取而代之,蘋果的解釋是?libstdc++?已經(jīng)標記為廢棄有5年了,建議大家使用經(jīng)過了 llvm 優(yōu)化過并且全面支持C++11的?libc++?庫。
????????我們只需要在Xcode10的真機和模擬器目錄里放置缺失的 .tbd 文件。剛一開始我只放置了libstdc++.6.0.9.tbd這一個文件,真機運行可以,但是Xcode10自帶的iOS12模擬器一運行就崩潰,就會報動態(tài)鏈接庫裝載出錯,看出錯提示說是 .dylib 與這個模擬器不符合。這個時候我們就需要放置兩種文件在模擬器目錄里的兩個地方。
????????將libstdc++_sim.zip解壓放置在:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/目錄下;
????????將libstdc++.dylib_sim.zip解壓放置在/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/目錄下。這樣的話項目就可以完美的運行在Xcode10上面了。
????????谷歌上大牛對待此報錯的解決辦法是:“如果你自己的業(yè)務(wù)模塊使用了?libstdc++?,那么就把模塊代碼重新調(diào)整為依賴?libc++?,然后重新檢查是否存在問題,重新編譯;如果你引用的三方庫使用了?libstdc++?,那么向三方庫尋求支持,進行升級?!?/p>
????????項目運行起來之后我嘗試打一個測試ipa包,導出的時候報了一個這樣的錯誤:ipatool failed with an exception: #NonZeroExcitException: Command exited with pid 32176......如下圖所示:

????????此時我們只需在Xcode打包時取消選擇:Rebuild from Bitcode(Export your app by compiling the bitcode in the same way the App Store does.)即可。據(jù)說是因為Xcode9默認已經(jīng)開啟了Bitcode功能,所以后續(xù)Bitcode需要關(guān)閉了才可以。因此要打包時要取消勾選:Rebuild from Bitcode。取消項如下圖所示:

還有另外一種方法,參見GitHub開源項目:https://github.com/devdawei/libstdc-
以上就是本人Xcode10初體驗。