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

iOS 15环境下App启动崩溃:_swift_getExtendedExistentialTypeMetadata符号缺失

iOS 15下App启动崩溃:dyld缺失_swift_getExtendedExistentialTypeMetadata符号

问题详情

生产环境App在iOS 15系统启动时,先显示1秒空白屏后被系统终止。真机Release构建时捕获到的崩溃日志:

dyld[6062]: Symbol not found: (_swift_getExtendedExistentialTypeMetadata)
Referenced from: '/private/var/containers/Bundle/Application/661DFEBF-EA64-489A-9DA3-3957077A0C3A/yummypets.app/yummypets'
Expected in: '/usr/lib/swift/libswiftCore.dylib'

环境配置

  • Xcode 14.3.1
  • Swift 5.8.1
  • Xcode中Swift语言版本:5
  • 最低部署版本:iOS 15
  • 无兼容性报错提示

已尝试的方案

  • 清理并重新构建项目
  • 配置Runpath Search Paths为$(inherited) @executable_path/Frameworks
  • 设置Embedded Content Contains Swift Code为"Yes"
  • 使用开发者签名身份
  • 回滚至之前版本
  • 删除重装Xcode
  • 检查依赖包

临时规避方案:在Build Settings的Other Linking Flags中添加-Wl,-weak-lswiftCore可绕过首次崩溃,但会引发其他问题,并非最优解。

解决思路与方案

1. 排查Swift版本与语法依赖

_swift_getExtendedExistentialTypeMetadata是Swift 5.9新增的符号,当前使用的Swift 5.8.1本不应引用该符号。需检查:

  • 代码中是否使用了Swift 5.9才支持的语法特性(如特定存在类型的扩展、新的协议关联类型用法)
  • 第三方依赖库是否有使用高于Swift 5.8.1的版本编译,导致间接引入该符号

2. 统一编译配置

  • 确认所有Target(主App及依赖库)的Deployment Target均设置为iOS 15,避免部分依赖库的部署版本过高引发符号不兼容
  • 检查Build Settings → Swift Compiler - Language → Swift Language Version是否强制设为5,而非自动选择导致的隐性版本升级

3. 重置依赖与编译缓存

  • 若使用CocoaPods,执行pod deintegrate后重新pod install,确保依赖库基于当前Xcode/Swift版本重新编译
  • 删除~/Library/Developer/Xcode/DerivedData下的项目缓存目录,彻底清除旧编译产物后重新构建

4. 检查链接配置

  • 确认Other Linking Flags中无其他可能干扰Swift Core库链接的参数
  • 对于动态依赖库,确保Embed & Sign配置正确,避免符号引用路径错误

内容的提问来源于stack exchange,提问作者yann-rzd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:32:43