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

iOS适配Mac(iPad设计)应用首次运行后崩溃:缺失_OBJC_CLASS_$_AVPlayerView符号

问题描述

我开发的一款此前正常运行的应用出现异常:

  • 将构建目标设置为“My Mac (designed for iPad)”时,必须删除DerivedData下所有构建文件才能让应用构建并运行一次,仅清理(Clean Build Folder)无效;
  • 后续启动均会崩溃,甚至无法完成应用类实例化,无代码执行;
  • 切换至iPhone目标可反复运行,切回Mac目标后又能运行一次,之后再次崩溃。

崩溃信息固定为:

dyld[3875]: Symbol not found: _OBJC_CLASS_$_AVPlayerView
  Referenced from: <D566512D-CAB4-3EA6-9B87-DBD15C6E71B3> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Debugger/libViewDebuggerSupport.dylib
  Expected in:     <4C34313C-03AD-32EB-8722-8A77C64AB959> /System/iOSSupport/System/Library/Frameworks/AVKit.framework/Versions/A/AVKit

未找到类似相关报告,请问有人遇到过这种首次运行后崩溃、切换目标可重置状态的情况吗?

排查与解决建议
  • 修正AVKit框架依赖与代码兼容
    AVPlayerView是MacOS专属的AVKit类,iOS版本的AVKit并不包含该类。MacCatalyst模式下出现框架混淆,可能是代码中直接/间接引用了这个类。
    可以把AVKit设置为可选依赖,同时给代码加上平台条件判断:

    #if targetEnvironment(macCatalyst)
    import AVKit
    #else
    import AVKit
    #endif
    

    同时检查项目代码,确保iPad/iOS逻辑里只使用跨平台兼容的AVKit组件(比如AVPlayerViewController)。

  • 彻底清理Xcode缓存
    崩溃日志指向Xcode调试器支持库libViewDebuggerSupport.dylib,大概率是缓存了错误的框架引用。除了删除DerivedData,还可以:

    • 关闭Xcode后,删除~/Library/Developer/Xcode/DerivedData整个目录;
    • 进入Xcode设置(Settings)→ Locations → DerivedData,直接点击“Move to Trash”清空;
    • 重启Mac,清除系统级的框架缓存。
  • 检查MacCatalyst构建配置

    • 确认项目Build Settings里的Base SDK是对应MacCatalyst的最新MacOS版本;
    • 检查Other Linker Flags是否有多余参数,导致框架链接异常;
    • 验证Framework Search Paths是否同时指向了iOS和MacOS的框架目录,造成路径冲突。
  • 用测试项目定位问题
    新建一个极简的iPad应用,设置目标为“My Mac (designed for iPad)”,重复你的操作流程。如果测试项目正常,说明原项目的配置或缓存有问题,可以逐步迁移代码和资源到新项目,定位具体问题点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:59:52