You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode 14导出SDK在Xcode 13真机编译报错求助

解决方案:Xcode14导出SDK在Xcode13真机编译报arm64符号错误

问题背景

Xcode13导出的SDK可在Xcode13/14全设备正常运行;但Xcode14导出的SDK仅能在Xcode13模拟器运行,真机编译时出现以下错误:

Undefined symbols for architecture arm64:_objc_msgSend$subfiles
clang: error: linker command failed with exit code 1 (use -v to see invocation)

已解决框架搜索路径错误,但上述符号缺失问题仍存在。

可行解决方法

1. 校验SDK架构兼容性

Xcode14与Xcode13的arm64编译逻辑存在差异,可能SDK导出时未包含Xcode13兼容的真机架构:

  • 执行命令 lipo -info [你的SDK完整路径] 查看SDK包含的架构,确认是否同时覆盖真机arm64和模拟器arm64(Xcode14默认的合并架构可能不被Xcode13兼容)。
  • 若架构缺失,重新用Xcode14导出SDK:在项目Build Settings中,将Build Active Architecture Only设为NO,确保Valid Architectures包含arm64,导出时选择包含全设备适用的架构。

2. 关闭Xcode14专属编译优化

Xcode14新增的ObjC消息发送优化可能导致符号无法被Xcode13识别:

  • 在导出SDK的Xcode14项目中,进入Build Settings,将Enable Objective-C Interoperability设为NO;或把Optimization Level改为None [-O0]后重新编译导出。
  • 检查Link-Time Optimization选项,若开启则关闭,再重新导出SDK。

3. 调整Xcode13项目的链接设置

在使用该SDK的Xcode13项目中,针对真机目标做如下调整:

  • 进入Build Settings,找到Other Linker Flags,添加-ObjC和-all_load参数,强制链接SDK中的所有符号。
  • 确认Architectures设置为Standard Architectures (arm64, armv7),且Build Active Architecture Only设为NO。

4. 统一SDK的部署目标版本

导出SDK时,将Deployment Target设置为Xcode13支持的最低版本(如iOS 14.0及以下,按需调整),避免Xcode14使用了Xcode13不支持的API或编译指令。


内容的提问来源于stack exchange,提问作者Batuhan Doğan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 15:50:38