首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Xcode 26崩溃修改

Xcode 26崩溃修改

原创
作者头像
莫空9081
发布2025-08-11 16:07:35
发布2025-08-11 16:07:35
7010
举报
文章被收录于专栏:iOS 备忘录iOS 备忘录

背景

电脑升级MacOS 26.0,之后旧版Xcode不支持了,下载Xcode26 Beta5,运行项目后崩溃,提示:dyldxxx: Symbol not found: _NSUserActivityTypeBrowsingWeb

排查过程

  1. 在StackOverFlow上有看到说移除 CoreServices 后可以解决,但是排查后发现项目主工程并没有引用这个库
  2. 又有说把宏重定义NSUserActivityTypeBrowsingWeb改为字符串"NSUserActivityTypeBrowsingWeb"可以解决,但是搜索后,项目工程中没有使用这个字符串
  3. 怀疑是项目Pods中三方库使用了这个宏,通过grep搜索后发现太多了,促使三方库开发者更新不限时。
  4. 最后发现,有说把Foundation.framework在链接参数中位置提到CoreServices的前面可以解决,经过尝试确认方法有效。

解决办法

解决办法就是:把 Foundation 的在链接参数中的位置往前面提到 CoreServices 之前

方法 1:通过 Build Phases 调整框架链接顺序

Xcode 的 Link Binary With Libraries 列表的顺序可能影响链接器处理框架的优先级(部分场景下),可先尝试直接调整顺序:

打开 Xcode 项目,进入目标 Target 的配置页:

选中项目文件(左侧导航栏顶部)→ 选择你的 Target → 切换到 Build Phases 标签。

找到 Link Binary With Libraries 列表:

这里显示了所有需要链接的框架(.framework)和库(.a/.dylib)。

调整框架顺序:

找到 Foundation.frameworkCoreServices.framework

拖动 Foundation.frameworkCoreServices.framework 上方(确保 Foundation 在前)。

若列表中没有 CoreServices.framework,说明它可能被间接依赖(如通过其他框架自动引入),需手动添加后再调整顺序。

方法 2:通过 Other Linker Flags 强制指定链接顺序

如果方法 1 不生效(部分系统框架的链接顺序由 Xcode 自动管理),可通过 手动指定链接器参数 强制控制顺序:

进入 Target 的 Build Settings 标签:

选中 Target → Build Settings → 搜索 Other Linker Flags。

手动添加框架链接参数:

点击 Other Linker Flags 右侧的 + 号,按以下顺序添加(确保 Foundation 在 CoreServices 之前):

代码语言:ruby
复制
-framework 
Foundation
-framework
CoreServices

(若有其他框架,按需求排列在后面)

移除自动链接的冲突框架(可选):

若系统自动链接的 CoreServices 仍在 Foundation 之前,可先在 Link Binary With Libraries 中移除 CoreServices.framework,仅通过 Other Linker Flags 手动指定。

最终按照方法2的方法解决了问题。

参考

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 排查过程
  • 解决办法
    • 方法 1:通过 Build Phases 调整框架链接顺序
    • 方法 2:通过 Other Linker Flags 强制指定链接顺序
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档