Xcode 15模拟器x86_64编译报错,后续操作引发新问题求助
Xcode 15 iOS模拟器运行报错解决方案
问题分析
报错building for 'iOS-simulator', but linking in object file ... built for 'iOS'的核心原因是:静态库libFMIceLinkOpus.a缺少iOS模拟器所需的x86_64架构,Xcode 15对架构兼容性的校验更严格,导致链接阶段失败。你之前添加x86_64到Excluded Architectures的操作方向有误,反而引发了脚本执行错误。
分步解决方案
1. 验证静态库架构支持
先确认该库是否包含模拟器架构,在终端执行命令:
lipo -info /{project path}/libs/IceLink/libFMIceLinkOpus.a
- 如果输出中无
x86_64,说明库本身不支持模拟器,需要联系IceLink官方获取同时包含真机(arm64)和模拟器(x86_64)的通用静态库,或自行编译支持模拟器的版本。
2. 修正项目与Pod配置
替换之前的Podfile脚本,针对模拟器和真机分别配置架构规则,避免全局排除架构:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| # 关闭仅构建活跃架构 config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO' # 针对不同SDK设置排除架构 if config.build_settings['SDKROOT'] == 'iphonesimulator' # 模拟器排除arm64架构 config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64' else # 真机排除x86_64架构 config.build_settings['EXCLUDED_ARCHS[sdk=iphoneos*]'] = 'x86_64' end end end end
执行pod install更新配置后,在项目的Build Settings中:
- 设置
Architectures为Standard Architectures (arm64, x86_64) - 确保
Excluded Architectures没有全局添加x86_64,而是通过上述Pod脚本分SDK配置。
3. 修复PhaseScriptExecution错误
若调整后仍出现脚本执行失败:
- 检查项目的
Build Phases中所有Run Script阶段,查看是否有硬编码指定架构(如固定写死arm64)的逻辑,替换为使用环境变量${ARCHS}动态获取当前构建架构。 - 清理项目缓存:执行
Command+Shift+K清理构建产物,再删除DerivedData目录:
rm -rf ~/Library/Developer/Xcode/DerivedData
之后重新构建项目。
内容的提问来源于stack exchange,提问作者Mike Walker
相关产品推荐
相关产品推荐

