Mac M2 Pro设备iOS应用编译失败:Undefined symbols问题求助
针对你遇到的问题,结合Silicon芯片与Intel芯片的架构差异,提供以下排查方向:
检查框架的架构兼容性
手动安装的框架可能仅支持Intel的x86_64架构,不兼容M系列的arm64。打开终端执行命令:lipo -info /path/to/your/framework.framework/[FrameworkName]
若输出仅包含x86_64,说明框架无arm64版本,需更换支持arm64的框架包;若需临时调试,可在项目Build Settings中找到Excluded Architectures,为Debug目标添加arm64(注意:上架发布时需移除该设置,否则无法通过审核)。调整Build Active Architecture Only设置
进入项目Build Settings,找到Build Active Architecture Only:- Debug模式下若设为
YES,Xcode会仅编译当前Mac的arm64架构,若框架不支持则会报错。尝试将Debug模式的该选项改为NO,重新编译验证是否解决问题。
- Debug模式下若设为
清理Xcode缓存
缓存残留可能导致链接逻辑异常:- 执行终端命令:
rm -rf ~/Library/Developer/Xcode/DerivedData - 在Xcode中按
Cmd+Shift+K清理Build Folder,之后重新编译项目。
- 执行终端命令:
确认Embed Frameworks配置
虽然已设置Embed & Sign,但手动添加的框架可能未加入Build Phases > Embed Frameworks列表。检查该列表,若目标框架不在其中,手动将其拖入并确保Embed模式为Embed & Sign。排查重复框架冲突
检查项目中是否重复添加了同一框架的不同版本,或其他依赖库中已包含该框架的符号,导致链接时符号查找混乱。移除重复的框架引用,确保仅保留一个正确版本。更新Xcode至最新稳定版
旧版Xcode对M系列芯片的框架链接支持可能存在bug,升级到最新稳定版Xcode后重新尝试编译。
内容的提问来源于stack exchange,提问作者R3J3CT3D

