問題描述
鏈接錯誤提示函如下:
ld: in UMComBaseEvent.o, building for iOS Simulator, but linking in object file built for iOS, file 'UMCommon' for architecture arm64.
個人分析
出現(xiàn)這種情況锋华,原因應該友盟編譯的庫提供了兩套指令集的二進制數(shù)據(jù),一套是給真機編譯的,一個是給模擬器編譯的,而給模擬器編譯的指令集是x86指令集(以前的Mac用的)箍铲。
而新的蘋果開發(fā)設備用的處理器是M1處理器驻右,所以在開發(fā)機上的模擬器自然也是基于ARM64架構。這就導致了友盟的庫在模擬器上編譯不兼容檀何,因為友盟基于模擬器的編譯數(shù)據(jù)包是x86指令集重虑。
由于在早期的xcode版本中践付,默認是添加x86指令集的支持的,但是因為新的設備都是用M1處理器了缺厉,就把這個移除了永高,所以才導致編譯錯誤隧土,而要解決這個問題,就要重新告訴編譯環(huán)境繼續(xù)支持x86 命爬。
解決方法
解決該問題的方法是告訴開發(fā)環(huán)境曹傀,在開發(fā)機上運行模擬器時,不要使用arm64架構進行編譯饲宛。
具體方法是在工程配置的Excluded Architectures
中皆愉,把debug
分支的Any iOS Simulator SDK
設置為arm64
。
還有不清楚的地方
這里有個地方我是還不清楚的艇抠,既然新的蘋果設備是基于M1處理器了幕庐,那么模擬器也是基于M1處理器,為什么它還能兼容x86练链?是因為模擬器同時兼容arm64
和x86
嗎翔脱?歡迎知道的朋友告知。
想要一起討論的朋友可以在我的公眾號風海銅鑼的加群菜單欄中申請加群完成加群申請媒鼓,一起共同進步。