Unity构建XCode项目报arm64架构重复符号错误ID34411如何解决
报错核心原因
duplicate symbols for architecture arm64 本质是编译链接阶段,同一个函数、全局变量在多个编译产物中被重复定义。你提到的amd64文件夹是Xcode编译时自动生成的中间产物目录,删除后重建属于正常现象,问题根源与该文件夹无关,无需在该目录上做额外操作。
解决步骤
1. 优先排查Unity侧配置问题
- 检查最近新增的第三方iOS插件/SDK,尤其是包含
.a、.framework格式原生库的插件,大概率是两个插件引入了同名静态库,或是同一个插件被重复导入了两次 - 打开Unity的「Build Settings → iOS → Player Settings → Other Settings」,找到
Search Paths配置项,检查是否存在重复添加的库搜索路径 - 如果你使用CocoaPods管理iOS依赖,确认Podfile中没有重复声明同一个库,也不要出现「手动导入某库+Podfile声明同一库」的重复引入情况
- 若你多次使用
Append模式导出Xcode项目,换成Replace模式重新导出一次,多次Append会把旧版本的冗余库残留到Xcode项目中引发冲突
2. 调整Xcode编译配置(可临时解决绝大多数场景)
- 打开导出的Xcode项目,选中根Target,进入
Build Settings页 - 搜索
No Common Blocks,将配置值改为NO,该配置允许存在重复的全局变量定义,可直接解决大部分重复符号报错 - 继续搜索
Other Linker Flags,检查是否存在重复的-ObjC标记,若存在-all_load标记可先替换为-force_load仅定向加载需要的库,避免全局加载所有库引发符号冲突
3. 定位具体冲突源(根治问题)
不用完整查看12万行堆栈日志,直接在报错日志中搜索duplicate symbol关键词,后面跟随的就是重复的符号名称:
- 复制该符号名称回到Unity项目全局搜索,即可定位到是哪两个文件/插件定义了同一个符号,删除其中重复的版本即可
- 若重复符号来自两个不同的第三方商业插件,可联系插件作者更新兼容;若是开源插件,可直接修改其中一个的符号名避免冲突
内容的提问来源于stack exchange,提问作者xBarkeeper
相关产品推荐
相关产品推荐

