Xcode12 在使用模擬器(Simulator)時(shí)編譯錯(cuò)誤的解決方法

Xcode12 上使用模擬器編譯項(xiàng)目時(shí),出現(xiàn)錯(cuò)誤。同樣的代碼在Xcode11則不會(huì)有問(wèn)題。

一些錯(cuò)誤如下:

No such modules (import installed pods)

Cocoapods post-build step with the script they install issue -> Pods/Target Support Files/Pods-All-Apps-XXX/Pods-All-Apps-XXX-frameworks.sh: line 141: ARCHS[@]: unbound variable

‘ObjCheaderFile.h’ file not found. (ObjC Headers in bridging file)

找不到第三方庫(kù)
找不到第三方庫(kù)的頭文件
pod編譯錯(cuò)誤



為什么會(huì)出現(xiàn)這些錯(cuò)誤?

在查閱Xcode12的升級(jí)文檔,我們找到如下內(nèi)容:


Xcode升級(jí)文檔

1、Xcode11 項(xiàng)目中模擬器會(huì)編譯為x86_64,但Xcode12的模擬器基于蘋果Apple Silicon architecture執(zhí)行,需要編譯為arm64運(yùn)行在模擬器上。許多第三方庫(kù)(如Firebase,AFNetworking等)并未提供Xcode12版本的更新支持,導(dǎo)致報(bào)錯(cuò)。

2、Xcode12 開始移除編譯設(shè)置(Bulid Settings)中的 Valid Architectures的宏定義。當(dāng)項(xiàng)目使用Xcode12打開時(shí)候,會(huì)在User-Defines(項(xiàng)目的Bulid Settings里面)中自動(dòng)生成VALID_ARCHS宏定義。如果舊項(xiàng)目存在于此沖突的宏定義,會(huì)導(dǎo)致編譯失敗。



如何修復(fù)?

第一步:添加 arm64 到 simulator architecture 中。主項(xiàng)目和pod項(xiàng)目都需要。

在主項(xiàng)目和pod項(xiàng)目的PROJECT的Build Settings中,搜索Excluded Architecture ,添加 Any iOS Simulator SDK,value填入 arm64


添加arm64構(gòu)建
添加arm64構(gòu)建

注意:在pod項(xiàng)目的build setting是cocopod自動(dòng)生成的,本次修改在下次更新第三方庫(kù)時(shí)候會(huì)被覆蓋,可以添加腳本在Podfile中,防止每次安裝和更新都需要手動(dòng)修改。


post_install do |installer|

? installer.pods_project.build_configurations.each do |config|

? ? config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"

? end

end


第二步:在主項(xiàng)目和pod項(xiàng)目的PROJECT的Build Settings中,刪除VALID_ARCHS(整個(gè)刪除,不能只刪除value留下Key)


刪除VALID_ARCHS
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者。

友情鏈接更多精彩內(nèi)容