Xcode项目真机正常运行但无法构建iOS模拟器 报架构链接错误
问题修复方案
报错核心是链接阶段读取到的目标文件为x86_64架构,但当前iOS模拟器构建目标为arm64架构(Apple Silicon Mac的原生模拟器架构),架构不匹配导致链接失败,按以下步骤逐一排查修复:
- 第一步:彻底全量清理构建缓存
仅删除DerivedData无法清除所有层级的残留文件,按顺序操作:- 完全退出Xcode进程
- 终端执行命令清理全局缓存:
rm -rf ~/Library/Developer/Xcode/DerivedData/* rm -rf ~/Library/Developer/Xcode/Archives/* - 进入项目根目录,删除本地缓存:
rm -rf ./build ./xcuserdata ./*.xcworkspace/xcuserdata - 重启Xcode后,按下
Shift+Command+K执行Clean Build Folder操作
- 第二步:修正架构相关配置
VALID_ARCHS是Xcode已废弃的配置项,自定义赋值极易引发架构冲突:- 在Target和项目层级的Build Settings中搜索
VALID_ARCHS,选中所有自定义赋值项按Delete键,恢复为系统默认值 - 搜索
Architectures,设置值为Standard Architectures $(ARCHS_STANDARD),不要手动追加自定义架构 - 搜索
Excluded Architectures,检查任意SDK下的配置:Apple Silicon Mac不要给iOS Simulator添加arm64排除规则,Intel Mac不要给iOS Simulator添加x86_64排除规则,所有误加的排除规则全部删除 - 搜索
Build Active Architecture Only,Debug模式设为Yes,Release模式设为No
- 在Target和项目层级的Build Settings中搜索
- 第三步:修复Swift Package依赖适配问题
报错中提到的GoogleDataTransport.o为旧架构残留或依赖版本不兼容导致:- Xcode菜单栏选择File > Packages > Reset Package Caches,等待所有依赖重新拉取解析
- 重置完成后执行File > Packages > Resolve Package Versions,锁定依赖版本
- 检查GoogleDataTransport版本:9.2.0以下版本存在Apple Silicon模拟器架构适配缺陷,升级到9.2.0及以上稳定版本即可修复
- 如果使用二进制版SPM依赖,确认依赖包含simulator-arm64架构切片,不要使用仅支持x86_64模拟器的旧二进制包
- 第四步:校验链接配置
- Build Settings中搜索
Other Linker Flags,删除所有硬编码的x86_64架构参数、指向旧DerivedData路径的引用 - 进入Build Phases > Link Binary With Libraries,删除所有指向本地DerivedData路径下的.o/.a/.framework残留引用,重新关联SPM依赖的对应产物
- Build Settings中搜索
完成以上操作后选择iOS模拟器目标重新构建即可。
内容的提问来源于stack exchange,提问作者Stéphane de Luca
相关产品推荐
相关产品推荐

