iOS xcode

更新Xcode12在既有的專案遇到的問題及解決

張哲嘉 2020/09/30 17:40:15
7106

前言:

 

Apple WWDC 2020 發佈了 iOS14iPadOS 14watchOS 7tvOSmacOS Big SurApple silicon,既然有新的系統發布,意味著Xcode也會更新,這次的更新也讓我遇到了一些問題,下面就來聊聊更新後遇到的狀況。

 

 

本文:

 

Xcode12發佈後,我也透過App Store更新了,但誰知道才是問題的開始?由於這次的專案需要將code打包成Framework,是要先將開發好的專案打包給另外一個專案使用,更新後立刻將專案打開來試試看。

 

測試結果:

1.原本的Framework + 測試專案  測試結果:正常運作。

2.重新打包的Framework + 測試專案 測試結果:發生問題。

 

找出問題:實機正常運作,模擬器無法正常運行。

 

Xcode錯誤訊息:Building for iOS Simulator, but the linked and embedded framework 'XXX.framework' was built for iOS. 

 

查詢了Apple官方文件,發現Xcode 12Build setting的參數做了一些修改:將原本在Architectures分類底下的 Valid Architectures移到了User - Defined,變成是用戶自訂義的參數之一,另外新增了Excluded Architectures參數在Architectures分類底下,只要在Excluded Architectures 參數加上Any iOS Simulator SDK : arm64就可以正常運作了。

 

 
 
 

什麼是arm64:arm64是ARM處理器的其中一種指令集,應用在實機處理器為64位元的裝置,主要支援在iPhone5s之後發表的裝置。

 

 
 
 
 
 
 
 
 
 

找出真正的問題:試著依照官方提供的方式:在專案中的在Excluded Architectures參數加上Any iOS Simulator SDK : arm64 Xcode還是有一樣錯誤訊息。

 

 

仔細研究了官方提供的方式,是在模擬器執行時排除arm64的指令集,除了專案以外,原本打包Framework的專案看來也需要一併加上此做法,才不會在模擬器執行時需要參考arm64指令集。

 

 

將打包Framework的專案和測試專案都加上設定之後,專案就能正常運作了。

 

Apple官方論壇中還提到,可能是為了要支援未來Apple自家的處理器silicon才會做出這樣的調整。

 

 

結論:

 

每次Xcode的更新,都會讓人膽戰心驚,尤其是在專案開發過程中,會遇到的事更是讓人難以預測,有效的掌握開發工具是相當重要的,這裡建議,團隊開發過程中,使用一樣Xcode的版本,在下載Xcode時,千萬不要透過App Store下載,可以到Apple的開發者網站中下載Xcode,如此一來能夠確保自己的Xcode不會有相容性的問題,也不會遇到App Store一直跳出要更新的通知,我遇到的問題只是在開發過程中的冰山一角,能夠解決問題是每位開發人員的基本功能,希望上面提到的狀況在大家遇到時能有所幫助。

 

參考:

 

https://13h.tw/2019/11/01/manage-xcode-versions.html

 

https://developer.apple.com/library/archive/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html

 

https://developer.apple.com/support/required-device-capabilities/

 

https://developer.apple.com/forums/thread/657913

張哲嘉