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

升级Xcode 15后Flutter iOS应用报错:存在重复符号(无符号列表)

解决Xcode 15.0升级后Flutter iOS应用链接错误(重复符号/未定义符号)

问题场景

在Apple M1芯片的Mac mini上开发Flutter iOS应用,此前模拟器和真机均可正常运行,但升级至Xcode 15.0后,无法启动应用,出现以下错误:

Could not build the precompiled application for the device.
Error (Xcode): 2 duplicate symbols

Error (Xcode): Linker command failed with exit code 1 (use -v to see invocation)


Error launching application on XXXXXX’s iPhone.

同时偶发无符号列表的未定义符号链接错误。已尝试以下方案但均无效:

  • Flutter Doctor验证并修复环境
  • 升级Flutter至3.13.6
  • 更新CocoaPods至1.13.0(解决了DT_TOOLCHAIN_DIR相关错误)
  • 清理Xcode缓存、Flutter依赖文件并重装Pod,执行flutter clean
  • 卸载重装Xcode
  • 新建Mac用户并从头搭建环境测试
  • 尝试构建另一款iOS应用

可尝试的解决方案

1. 升级Flutter到适配Xcode15的版本

Flutter 3.13.6对Xcode15的适配存在局限性,官方在3.16.0及以上版本中修复了大量Xcode15相关的链接器问题,执行命令升级:

flutter upgrade

2. 定位并修复第三方插件的符号冲突

重复符号错误几乎都来自第三方插件的静态库冲突,尤其是未适配Xcode15的老旧插件:

  • 获取详细错误日志:打开ios/Runner.xcworkspace,执行Build操作后,在Xcode的报告面板中查看链接错误的完整输出,找到重复符号对应的插件名称。
  • 升级或替换冲突插件:查看插件的仓库是否有Xcode15适配的新版本,若没有则更换功能类似的替代插件。
  • 强制动态链接:在ios/Podfile的target 'Runner' do块内添加use_frameworks! :linkage => :dynamic,强制插件使用动态链接方式,避免静态符号冲突。

3. 修改Xcode链接器配置

针对Xcode15的新链接器bug,可通过以下设置绕过:

  • 打开Xcode项目的Runner目标,进入Build Settings
  • 搜索Other Linker Flags,添加-ld64参数(强制使用旧版链接器)
  • 搜索Dead Code Stripping,设置为YES,自动移除冗余符号

4. 彻底清理CocoaPods缓存

即使升级了CocoaPods,仍可能存在依赖缓存残留问题,执行以下命令彻底清理:

cd ios
pod deintegrate
rm -rf ~/Library/Caches/CocoaPods
rm -rf Pods
rm Podfile.lock
pod setup
pod install

同时确保Podfile中指定的iOS版本不低于Flutter要求的最低版本(如platform :ios, '14.0')。

5. 强制指定架构适配M1芯片

在M1设备上,架构不兼容也可能导致链接错误,执行以下命令运行:

flutter run --debug --ios-arch arm64

或在Xcode的Runner目标Build Settings中,将Architectures设置为arm64,Build Active Architecture Only设为YES。

内容的提问来源于stack exchange,提问作者user22660286

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:12:47