Xcode运行项目报FIRAnalyticsConnector.framework的pod错误如何解决?

ld: in /Users/ishinfoservices/Documents/vadltaldhambooks/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector(FIRAnalyticsConnector_a8eeba373b74508311b8b22b8d3202a6.o), building for iOS Simulator, but linking in object file built for iOS, file '/Users/ishinfoservices/Documents/vadltaldhambooks/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector' for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
该报错属于Apple Silicon(M系列)芯片Mac设备上的Xcode模拟器架构兼容问题:你当前编译目标为iOS模拟器的arm64架构,但引入的FIRAnalyticsConnector.framework仅包含iOS真机的arm64架构二进制文件,链接阶段无法匹配对应架构文件导致报错。
方案1:配置排除模拟器arm64架构(适配含旧混编库的项目,优先推荐)
- 打开Xcode项目,选中左侧导航栏顶部的项目根节点,在TARGETS分类下选中你的App主目标
- 切换到
Build Settings标签页,搜索Excluded Architectures配置项 - 在Debug模式下,为
Any iOS Simulator SDK添加值arm64 - 同步配置Pods项目避免重复修改:在Podfile末尾添加如下自动配置代码,执行
pod install后会自动为所有Pod依赖配置排除规则:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64' end end end
- 清空Xcode缓存(快捷键
Command + Shift + K)后重新编译运行即可
方案2:使用Rosetta启动Xcode(临时快速验证方案)
- 完全退出Xcode,打开启动台找到Xcode图标,右键选择「显示简介」
- 勾选「使用Rosetta打开」选项,重启Xcode后直接编译即可正常运行
方案3:升级Firebase依赖(长期适配方案)
- 若你的项目其他依赖兼容性允许,将Firebase库升级到8.0.0及以上版本,新版Firebase已原生支持Apple Silicon模拟器arm64架构,无需额外配置
- 修改Podfile中Firebase的版本声明后,执行
pod update Firebase拉取新版依赖即可
内容的提问来源于stack exchange,提问作者user17484834

