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

从Carthage迁移到SPM时出现dyld: Library not loaded: @rpath/Purchases报错

解决方案

1 清理Carthage残留配置

  • 打开项目的Build Settings,搜索FRAMEWORK_SEARCH_PATHS,删除所有包含Carthage/Build的路径项,需同时检查项目级别和对应Target级别的配置,避免遗漏
  • 搜索OTHER_LDFLAGS,删除所有关联旧Carthage版本Purchases框架的链接配置
  • 切换到Build Phases标签页,检查Link Binary With Libraries、Embed Frameworks两个阶段,确认已移除所有旧Carthage导入的Purchases.framework项
  • 右键项目根目录的.xcodeproj文件选择显示包内容,找到project.pbxproj文件,全局搜索Carthage、Purchases.framework相关的残留行,手动删除无效条目,操作前注意备份原文件

2 重置Xcode缓存配置

  • 完全退出Xcode后,在终端执行命令删除全局Xcode缓存:
    rm -rf ~/Library/Caches/com.apple.dt.Xcode
  • 执行命令删除DerivedData目录:
    rm -rf ~/Library/Developer/Xcode/DerivedData
  • 重启Xcode后按住Option键,点击顶部菜单栏Product > Clean Build Folder,彻底清理项目构建缓存

3 校验当前依赖配置有效性

  • 若当前Purchases依赖通过CocoaPods管理,在项目根目录执行pod deintegrate && pod install重新生成Pods配置,清除旧依赖冲突
  • 若当前Purchases依赖通过SPM管理,打开项目Package Dependencies配置页,右键Purchases依赖选择Reset Package Caches,重新拉取构建依赖
  • 打开Target的General配置页,检查Frameworks, Libraries, and Embedded Content栏,确认当前Purchases框架的嵌入状态为Embed & Sign(动态框架需开启该配置)

4 校验rpath加载配置

  • 在Build Settings中搜索RUNPATH_SEARCH_PATHS,确认配置中包含@executable_path/Frameworks,这是iOS项目默认的动态框架加载路径
  • 编译完成后在Products目录下找到生成的.app包,右键选择显示包内容,检查Frameworks目录下是否存在Purchases.framework文件,确认文件存在且签名状态正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 18:06:08