問題
Target 'Pods-TNGNotificationService' of project 'Pods' was rejected as an implicit dependency for 'Pods_TNGNotificationService.framework' because its architectures 'x86_64 i386' didn't contain all required architectures 'arm64'
大概的意思就是Pods_TNGNotificationService.framework
只包含了x86_64 i386
這兩種指令集蔓罚;但是要求的指令集是arm64
原因
-
TNGNotificationService
確實是Pod
管理的framework
隘冲,在Podfile
中的內容如下:
target 'TNGNotificationService' do
platform :ios, '10.0'
pod 'CleverTap-iOS-SDK', '3.7.2'
pod 'CTNotificationService'
end
- 查看工程配置
從工程配置可以看出失球,Pods
管理的工程巧涧,如果是模擬器陨享,那么就自動排除了arm64
指令集。原因也很好猜渊涝,以前arm
指令集都是手機的馏段,而PC
的指令集一般是x86
的。
但是M1
芯片的Mac
湃望,指令集就是arm64
的换衬,模擬器其實就是PC
的指令集痰驱,這樣就出現(xiàn)了編譯不過的問題。
方案1:真機運行
CocoaPods
的工程管理配置中只是在模擬器的情況下才會排除arm64
瞳浦,但是在真機的情況下是不會的担映。因為手機的指令集一直是arm64
的。
那么解決方案就很簡單叫潦,不用模擬器蝇完,直接用真機調試運行就可以了。
實際試了一下矗蕊,用真機果然能正常運行短蜕。
方案2:Rosetta方式打開
為了解決Intel x86
芯片的軟件在M1
芯片的arm64
指令下不能運行的問題,macOS Big Sur
中內置了Rosetta
傻咖。
Rosetta
本質上將為英特爾處理器編寫的指令“翻譯”為蘋果芯片可以理解的命令朋魔。開發(fā)人員無需對其舊應用程序進行任何更改,他們就能在macOS Big Sur
系統(tǒng)上最新的M1
芯片的Mac
上使用卿操。
其他的什么都不用改警检,工程就能在XCode
的模擬器上運行了。