問題描述: M1芯片電腦, 使用xcode模擬器simulate編譯項目, 報下面錯誤
error build: In /xx/Pods/xx.a(xx.o), building for iOS Simulator, but linking in object file built for iOS, file '/xx/Pods/xx. a' for architecture arm64
原因: M1芯片模擬器支持架構ARM64, Intel芯片模擬器支持x86_64架構.
解決方案一
模擬器運行使用arm指令, APP運行用x86_64指令
添加arm64到項目PEROJECT和TARGETS的** Excluded Architectures**中
路徑1: PEROJECT - Build Settings - Excluded Architectures
路徑2: TARGETS - Build Settings - Excluded Architectures
路徑1
路徑2
- 在Podfile中添加下面配置
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
end
end
- clearn項目, 終端執行pod install, 重新運行項目
解決方案二 Rosetta (推薦)
- 使用蘋果提供的工具Rosetta
- 參考文章:蘋果換芯,成了開發者們的噩夢?
- 缺點: 性能稍微有點影響
-
應用程序 -> Xcode -> 顯示簡介 -> 勾選Rosetta
使用Rosetta
解決M1機型無法編譯模擬器的關鍵是 針對模擬器的包要同時包含arm64和x86_64指令集。
項目中只要有一個框架沒有支持模擬器的arm64指令,在M1機器上,模擬器只能以Rosetta模式運行應用,或者別的方案支持.